mirror of
https://git.asonix.dog/ceralor/mastodon.git
synced 2025-10-12 21:34:27 +00:00
Merge branch 'asonix/changes' into HEAD
This commit is contained in:
commit
42849e157a
61 changed files with 8353 additions and 21 deletions
1
.node-version
Normal file
1
.node-version
Normal file
|
@ -0,0 +1 @@
|
|||
14.17.1
|
|
@ -1 +1 @@
|
|||
2.7.2
|
||||
2.7.3
|
||||
|
|
|
@ -49,6 +49,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
|
|||
resource.registration_form_time = session[:registration_form_time]
|
||||
resource.sign_up_ip = request.remote_ip
|
||||
|
||||
resource.current_sign_in_ip = request.remote_ip if resource.current_sign_in_ip.nil?
|
||||
resource.build_account if resource.account.nil?
|
||||
end
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ class Settings::PreferencesController < Settings::BaseController
|
|||
:setting_use_blurhash,
|
||||
:setting_use_pending_items,
|
||||
:setting_trends,
|
||||
:setting_strip_formatting,
|
||||
:setting_crop_images,
|
||||
notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag),
|
||||
interactions: %i(must_be_follower must_be_following must_be_following_dm)
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
module SettingsHelper
|
||||
HUMAN_LOCALES = {
|
||||
af: 'Afrikaans',
|
||||
squeak: 'Squeak',
|
||||
dog: 'Dog',
|
||||
lion: 'Lion',
|
||||
ar: 'العربية',
|
||||
ast: 'Asturianu',
|
||||
bg: 'Български',
|
||||
|
|
|
@ -65,6 +65,25 @@ module StatusesHelper
|
|||
embedded_view? ? '_blank' : nil
|
||||
end
|
||||
|
||||
def acct(account)
|
||||
if account.local?
|
||||
"@#{account.acct}@#{Rails.configuration.x.local_domain}"
|
||||
else
|
||||
"@#{account.acct}"
|
||||
end
|
||||
end
|
||||
|
||||
def text_formatting_classes
|
||||
case current_user&.setting_strip_formatting
|
||||
when 'none', nil
|
||||
'rich-text rich-blocks'
|
||||
when 'blocks'
|
||||
'rich-text'
|
||||
when 'all'
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def style_classes(status, is_predecessor, is_successor, include_threads)
|
||||
classes = ['entry']
|
||||
classes << 'entry-predecessor' if is_predecessor
|
||||
|
|
|
@ -7,6 +7,7 @@ import classnames from 'classnames';
|
|||
import PollContainer from 'mastodon/containers/poll_container';
|
||||
import Icon from 'mastodon/components/icon';
|
||||
import { autoPlayGif } from 'mastodon/initial_state';
|
||||
import { stripFormatting } from 'mastodon/initial_state';
|
||||
|
||||
const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top)
|
||||
|
||||
|
@ -180,6 +181,8 @@ export default class StatusContent extends React.PureComponent {
|
|||
'status__content--with-action': this.props.onClick && this.context.router,
|
||||
'status__content--with-spoiler': status.get('spoiler_text').length > 0,
|
||||
'status__content--collapsed': renderReadMore,
|
||||
'rich-text': stripFormatting !== 'all',
|
||||
'rich-blocks': stripFormatting === 'none',
|
||||
});
|
||||
|
||||
const showThreadButton = (
|
||||
|
|
|
@ -103,6 +103,16 @@ class SearchResults extends ImmutablePureComponent {
|
|||
<div className='search-results__section'>
|
||||
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
|
||||
|
||||
<div className='search-results__info'>
|
||||
<FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
} else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) {
|
||||
statuses = (
|
||||
<div className='search-results__section'>
|
||||
<h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>
|
||||
|
||||
<div className='search-results__info'>
|
||||
<FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />
|
||||
</div>
|
||||
|
|
|
@ -24,6 +24,7 @@ export const useBlurhash = getMeta('use_blurhash');
|
|||
export const usePendingItems = getMeta('use_pending_items');
|
||||
export const showTrends = getMeta('trends');
|
||||
export const title = getMeta('title');
|
||||
export const stripFormatting = getMeta('strip_formatting');
|
||||
export const cropImages = getMeta('crop_images');
|
||||
export const disableSwiping = getMeta('disable_swiping');
|
||||
|
||||
|
|
475
app/javascript/mastodon/locales/dog.json
Normal file
475
app/javascript/mastodon/locales/dog.json
Normal file
|
@ -0,0 +1,475 @@
|
|||
{
|
||||
"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": "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.disable_notifications": "Stop notifying me when @{name} toots",
|
||||
"account.domain_blocked": "Domain blocked",
|
||||
"account.edit_profile": "Edit profile",
|
||||
"account.enable_notifications": "Notify me when @{name} toots",
|
||||
"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.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}",
|
||||
"account.joined": "Joined {date}",
|
||||
"account.last_status": "Last active",
|
||||
"account.link_verified_on": "Ownership of this link was checked on {date}",
|
||||
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can join their pack.",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Bark at @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.mute": "Mute @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.muted": "Muted",
|
||||
"account.never_active": "Never",
|
||||
"account.posts": "Toots",
|
||||
"account.posts_with_replies": "Toots with barks",
|
||||
"account.report": "Report @{name}",
|
||||
"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": "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.",
|
||||
"alert.unexpected.title": "Oops!",
|
||||
"announcement.announcement": "Announcement",
|
||||
"autosuggest_hashtag.per_week": "{count} per week",
|
||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||
"bundle_column_error.retry": "Try again",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"column.blocks": "Blocked dogs",
|
||||
"column.bookmarks": "Bookmarks",
|
||||
"column.community": "Local timeline",
|
||||
"column.direct": "Direct messages",
|
||||
"column.directory": "Browse dogs",
|
||||
"column.domain_blocks": "Hidden domains",
|
||||
"column.favourites": "Boops",
|
||||
"column.follow_requests": "Pack requests",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted dogs",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pinned toots",
|
||||
"column.public": "Federated timeline",
|
||||
"column_back_button.label": "Back",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_subheading.settings": "Settings",
|
||||
"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 sent to the mentioned dogs.",
|
||||
"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 pack to view your pack-only posts.",
|
||||
"compose_form.lock_disclaimer.lock": "locked",
|
||||
"compose_form.placeholder": "Bark???",
|
||||
"compose_form.poll.add_option": "Add a choice",
|
||||
"compose_form.poll.duration": "Poll duration",
|
||||
"compose_form.poll.option_placeholder": "Choice {number}",
|
||||
"compose_form.poll.remove_option": "Remove this choice",
|
||||
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
|
||||
"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": "{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": "Remove content warning",
|
||||
"compose_form.spoiler.unmarked": "Add content warning",
|
||||
"compose_form.spoiler_placeholder": "Write your warning here",
|
||||
"confirmation_modal.cancel": "Cancel",
|
||||
"confirmations.block.block_and_report": "Block & Report",
|
||||
"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 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.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?",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
"confirmations.mute.explanation": "This will hide toots from them and toots mentioning them, but it will still allow them to see your toots and join your pack.",
|
||||
"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 toot and re-draft it? Boops and awoos will be lost, and barks at the original post will be orphaned.",
|
||||
"confirmations.reply.confirm": "Bark",
|
||||
"confirmations.reply.message": "Barking now will overwrite the toot you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.unfollow.confirm": "Leave Pack",
|
||||
"confirmations.unfollow.message": "Are you sure you want to leave {name}'s pack?",
|
||||
"conversation.delete": "Delete conversation",
|
||||
"conversation.mark_as_read": "Mark as read",
|
||||
"conversation.open": "View conversation",
|
||||
"conversation.with": "With {names}",
|
||||
"directory.federated": "From known fediverse",
|
||||
"directory.local": "From {domain} only",
|
||||
"directory.new_arrivals": "New arrivals",
|
||||
"directory.recently_active": "Recently active",
|
||||
"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",
|
||||
"emoji_button.flags": "Flags",
|
||||
"emoji_button.food": "Food & Drink",
|
||||
"emoji_button.label": "Insert emoji",
|
||||
"emoji_button.nature": "Nature",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objects",
|
||||
"emoji_button.people": "Dogs",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.search": "Search...",
|
||||
"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.",
|
||||
"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.favourited_statuses": "You don't have any booped toots yet. When you boop one, it will show up here.",
|
||||
"empty_column.favourites": "No one has booped this toot yet. When someone does, they will show up here.",
|
||||
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
|
||||
"empty_column.follow_requests": "You don't have any pack 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 dogs.",
|
||||
"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.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 dogs 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 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_recommendations.done": "Done",
|
||||
"follow_recommendations.heading": "Join packs you'd like to see toots from! Here are some suggestions.",
|
||||
"follow_recommendations.lead": "Toots from packs you've joined will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
|
||||
"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",
|
||||
"getting_started.heading": "Getting started",
|
||||
"getting_started.invite": "Invite dogs",
|
||||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
|
||||
"getting_started.security": "Account settings",
|
||||
"getting_started.terms": "Terms of service",
|
||||
"hashtag.column_header.tag_mode.all": "and {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "or {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "without {additional}",
|
||||
"hashtag.column_settings.select.no_options_message": "No suggestions found",
|
||||
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
|
||||
"hashtag.column_settings.tag_mode.all": "All of these",
|
||||
"hashtag.column_settings.tag_mode.any": "Any of these",
|
||||
"hashtag.column_settings.tag_mode.none": "None of these",
|
||||
"hashtag.column_settings.tag_toggle": "Include additional tags for this column",
|
||||
"home.column_settings.basic": "Basic",
|
||||
"home.column_settings.show_reblogs": "Show awoos",
|
||||
"home.column_settings.show_replies": "Show barks",
|
||||
"home.hide_announcements": "Hide announcements",
|
||||
"home.show_announcements": "Show announcements",
|
||||
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
|
||||
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||
"keyboard_shortcuts.back": "Navigate back",
|
||||
"keyboard_shortcuts.blocked": "Open blocked dogs list",
|
||||
"keyboard_shortcuts.boost": "Boost post",
|
||||
"keyboard_shortcuts.column": "Focus column",
|
||||
"keyboard_shortcuts.compose": "Focus compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.direct": "Open direct messages column",
|
||||
"keyboard_shortcuts.down": "Move down in the list",
|
||||
"keyboard_shortcuts.enter": "Open toot",
|
||||
"keyboard_shortcuts.favourite": "Boop toot",
|
||||
"keyboard_shortcuts.favourites": "Open boops list",
|
||||
"keyboard_shortcuts.federated": "Open federated timeline",
|
||||
"keyboard_shortcuts.heading": "Keyboard shortcuts",
|
||||
"keyboard_shortcuts.home": "Open home timeline",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "Display this legend",
|
||||
"keyboard_shortcuts.local": "Open local timeline",
|
||||
"keyboard_shortcuts.mention": "Mention author",
|
||||
"keyboard_shortcuts.muted": "Open muted dogs list",
|
||||
"keyboard_shortcuts.my_profile": "Open your profile",
|
||||
"keyboard_shortcuts.notifications": "Open notifications column",
|
||||
"keyboard_shortcuts.open_media": "Open media",
|
||||
"keyboard_shortcuts.pinned": "Open pinned toots list",
|
||||
"keyboard_shortcuts.profile": "Open author's profile",
|
||||
"keyboard_shortcuts.reply": "Reply to post",
|
||||
"keyboard_shortcuts.requests": "Open follow requests list",
|
||||
"keyboard_shortcuts.search": "Focus search bar",
|
||||
"keyboard_shortcuts.spoilers": "Show/hide CW field",
|
||||
"keyboard_shortcuts.start": "Open “get started” column",
|
||||
"keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Show/hide media",
|
||||
"keyboard_shortcuts.toot": "Start a new toot",
|
||||
"keyboard_shortcuts.unfocus": "Unfocus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "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",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"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 dogs whose packs you've joined",
|
||||
"lists.subheading": "Your lists",
|
||||
"load_pending": "{count, plural, one {# new item} other {# new items}}",
|
||||
"loading_indicator.label": "Loading...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide 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 dog?",
|
||||
"mute_modal.indefinite": "Indefinite",
|
||||
"navigation_bar.apps": "Mobile apps",
|
||||
"navigation_bar.blocks": "Blocked dogs",
|
||||
"navigation_bar.bookmarks": "Bookmarks",
|
||||
"navigation_bar.community_timeline": "Local timeline",
|
||||
"navigation_bar.compose": "Compose new toot",
|
||||
"navigation_bar.direct": "Direct messages",
|
||||
"navigation_bar.discover": "Discover",
|
||||
"navigation_bar.domain_blocks": "Hidden domains",
|
||||
"navigation_bar.edit_profile": "Edit profile",
|
||||
"navigation_bar.favourites": "Boops",
|
||||
"navigation_bar.filters": "Muted words",
|
||||
"navigation_bar.follow_requests": "Pack requests",
|
||||
"navigation_bar.follows_and_followers": "Packs and Pack Members",
|
||||
"navigation_bar.info": "About this server",
|
||||
"navigation_bar.keyboard_shortcuts": "Hotkeys",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Muted dogs",
|
||||
"navigation_bar.personal": "Personal",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.preferences": "Preferences",
|
||||
"navigation_bar.public_timeline": "Federated timeline",
|
||||
"navigation_bar.security": "Security",
|
||||
"notification.favourite": "{name} booped your toot",
|
||||
"notification.follow": "{name} joined your pack",
|
||||
"notification.follow_request": "{name} has requested to join your pack",
|
||||
"notification.mention": "{name} barked at you",
|
||||
"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 tooted",
|
||||
"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.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 pack members:",
|
||||
"notifications.column_settings.follow_request": "New pack requests:",
|
||||
"notifications.column_settings.mention": "Barks:",
|
||||
"notifications.column_settings.poll": "Poll results:",
|
||||
"notifications.column_settings.push": "Push notifications",
|
||||
"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.column_settings.unread_markers.category": "Unread notification markers",
|
||||
"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 packs you've joined",
|
||||
"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}}",
|
||||
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
|
||||
"poll.vote": "Vote",
|
||||
"poll.voted": "You voted for this answer",
|
||||
"poll_button.add_poll": "Add a poll",
|
||||
"poll_button.remove_poll": "Remove poll",
|
||||
"privacy.change": "Change post privacy",
|
||||
"privacy.direct.long": "Visible for mentioned dogs only",
|
||||
"privacy.direct.short": "Direct",
|
||||
"privacy.private.long": "Visible for pack members only",
|
||||
"privacy.private.short": "Pack Members-only",
|
||||
"privacy.public.long": "Visible for all, shown in public timelines",
|
||||
"privacy.public.short": "Public",
|
||||
"privacy.unlisted.long": "Visible for all, but not in public timelines",
|
||||
"privacy.unlisted.short": "Unlisted",
|
||||
"refresh": "Refresh",
|
||||
"regeneration_indicator.label": "Loading…",
|
||||
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"relative_time.today": "today",
|
||||
"reply_indicator.cancel": "Cancel",
|
||||
"report.forward": "Forward to {target}",
|
||||
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
|
||||
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
|
||||
"report.placeholder": "Additional comments",
|
||||
"report.submit": "Submit",
|
||||
"report.target": "Reporting {target}",
|
||||
"search.placeholder": "Search",
|
||||
"search_popout.search_format": "Advanced search format",
|
||||
"search_popout.tips.full_text": "Simple text returns toots you have written, booped, awooed, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.tips.status": "toot",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "dog",
|
||||
"search_results.accounts": "Dogs",
|
||||
"search_results.hashtags": "Hashtags",
|
||||
"search_results.statuses": "Toots",
|
||||
"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 toot in the moderation interface",
|
||||
"status.block": "Block @{name}",
|
||||
"status.bookmark": "Bookmark",
|
||||
"status.cancel_reblog_private": "Unawoo",
|
||||
"status.cannot_reblog": "This toot cannot be awooed",
|
||||
"status.copy": "Copy link to toot",
|
||||
"status.delete": "Delete",
|
||||
"status.detailed_status": "Detailed conversation view",
|
||||
"status.direct": "Direct message @{name}",
|
||||
"status.embed": "Embed",
|
||||
"status.favourite": "Boop",
|
||||
"status.filtered": "Filtered",
|
||||
"status.load_more": "Load more",
|
||||
"status.media_hidden": "Media hidden",
|
||||
"status.mention": "Bark at @{name}",
|
||||
"status.more": "More",
|
||||
"status.mute": "Mute @{name}",
|
||||
"status.mute_conversation": "Mute conversation",
|
||||
"status.open": "Expand this toot",
|
||||
"status.pin": "Pin on profile",
|
||||
"status.pinned": "Pinned toot",
|
||||
"status.read_more": "Read more",
|
||||
"status.reblog": "Awoo",
|
||||
"status.reblog_private": "Awoo to original audience",
|
||||
"status.reblogged_by": "{name} awooed",
|
||||
"status.reblogs.empty": "No one has awooed this toot yet. When someone does, they will show up here.",
|
||||
"status.redraft": "Delete & re-draft",
|
||||
"status.remove_bookmark": "Remove bookmark",
|
||||
"status.reply": "Bark",
|
||||
"status.replyAll": "Bark in thread",
|
||||
"status.report": "Report @{name}",
|
||||
"status.sensitive_warning": "Sensitive content",
|
||||
"status.share": "Share",
|
||||
"status.show_less": "Show less",
|
||||
"status.show_less_all": "Show less for all",
|
||||
"status.show_more": "Show more",
|
||||
"status.show_more_all": "Show more for all",
|
||||
"status.show_thread": "Show thread",
|
||||
"status.uncached_media_warning": "Not available",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
"status.unpin": "Unpin from profile",
|
||||
"suggestions.dismiss": "Dismiss suggestion",
|
||||
"suggestions.header": "You might be interested in…",
|
||||
"tabs_bar.federated_timeline": "Federated",
|
||||
"tabs_bar.home": "Home",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.search": "Search",
|
||||
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
|
||||
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
|
||||
"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",
|
||||
"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 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",
|
||||
"video.download": "Download file",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
}
|
475
app/javascript/mastodon/locales/lion.json
Normal file
475
app/javascript/mastodon/locales/lion.json
Normal file
|
@ -0,0 +1,475 @@
|
|||
{
|
||||
"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": "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.disable_notifications": "Stop notifying me when @{name} toots",
|
||||
"account.domain_blocked": "Domain blocked",
|
||||
"account.edit_profile": "Edit profile",
|
||||
"account.enable_notifications": "Notify me when @{name} toots",
|
||||
"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.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}",
|
||||
"account.joined": "Joined {date}",
|
||||
"account.last_status": "Last active",
|
||||
"account.link_verified_on": "Ownership of this link was checked on {date}",
|
||||
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can join their pride.",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Meow at @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.mute": "Mute @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.muted": "Muted",
|
||||
"account.never_active": "Never",
|
||||
"account.posts": "Toots",
|
||||
"account.posts_with_replies": "Toots with meows",
|
||||
"account.report": "Report @{name}",
|
||||
"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.",
|
||||
"alert.unexpected.title": "Oops!",
|
||||
"announcement.announcement": "Announcement",
|
||||
"autosuggest_hashtag.per_week": "{count} per week",
|
||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||
"bundle_column_error.retry": "Try again",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"column.blocks": "Blocked lions",
|
||||
"column.bookmarks": "Bookmarks",
|
||||
"column.community": "Local timeline",
|
||||
"column.direct": "Direct messages",
|
||||
"column.directory": "Browse lions",
|
||||
"column.domain_blocks": "Hidden domains",
|
||||
"column.favourites": "Boops",
|
||||
"column.follow_requests": "Pride requests",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted lions",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pinned toots",
|
||||
"column.public": "Federated timeline",
|
||||
"column_back_button.label": "Back",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_subheading.settings": "Settings",
|
||||
"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_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.",
|
||||
"compose_form.lock_disclaimer.lock": "locked",
|
||||
"compose_form.placeholder": "Meow???",
|
||||
"compose_form.poll.add_option": "Add a choice",
|
||||
"compose_form.poll.duration": "Poll duration",
|
||||
"compose_form.poll.option_placeholder": "Choice {number}",
|
||||
"compose_form.poll.remove_option": "Remove this choice",
|
||||
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
|
||||
"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": "{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": "Remove content warning",
|
||||
"compose_form.spoiler.unmarked": "Add content warning",
|
||||
"compose_form.spoiler_placeholder": "Write your warning here",
|
||||
"confirmation_modal.cancel": "Cancel",
|
||||
"confirmations.block.block_and_report": "Block & Report",
|
||||
"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 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.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?",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
"confirmations.mute.explanation": "This will hide toots from them and toots mentioning them, but it will still allow them to see your toots and join your pride.",
|
||||
"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 toot and re-draft it? You will lose all meows, roars, and boops to it.",
|
||||
"confirmations.reply.confirm": "Meow",
|
||||
"confirmations.reply.message": "Meowing now will overwrite the toot you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.unfollow.confirm": "Leave Pride",
|
||||
"confirmations.unfollow.message": "Are you sure you want to leave {name}'s pride?",
|
||||
"conversation.delete": "Delete conversation",
|
||||
"conversation.mark_as_read": "Mark as read",
|
||||
"conversation.open": "View conversation",
|
||||
"conversation.with": "With {names}",
|
||||
"directory.federated": "From known fediverse",
|
||||
"directory.local": "From {domain} only",
|
||||
"directory.new_arrivals": "New arrivals",
|
||||
"directory.recently_active": "Recently active",
|
||||
"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",
|
||||
"emoji_button.flags": "Flags",
|
||||
"emoji_button.food": "Food & Drink",
|
||||
"emoji_button.label": "Insert emoji",
|
||||
"emoji_button.nature": "Nature",
|
||||
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Objects",
|
||||
"emoji_button.people": "Lions",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.search": "Search...",
|
||||
"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.",
|
||||
"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.favourited_statuses": "You don't have any booped toots yet. When you boop one, it will show up here.",
|
||||
"empty_column.favourites": "No one has booped this toot yet. When someone does, they will show up here.",
|
||||
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
|
||||
"empty_column.follow_requests": "You don't have any pride 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 lions.",
|
||||
"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.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 lions 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 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_recommendations.done": "Done",
|
||||
"follow_recommendations.heading": "Join prides you'd like to see toots from! Here are some suggestions.",
|
||||
"follow_recommendations.lead": "Toots from prides you've joined will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
|
||||
"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",
|
||||
"getting_started.heading": "Getting started",
|
||||
"getting_started.invite": "Invite lions",
|
||||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
|
||||
"getting_started.security": "Account settings",
|
||||
"getting_started.terms": "Terms of service",
|
||||
"hashtag.column_header.tag_mode.all": "and {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "or {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "without {additional}",
|
||||
"hashtag.column_settings.select.no_options_message": "No suggestions found",
|
||||
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
|
||||
"hashtag.column_settings.tag_mode.all": "All of these",
|
||||
"hashtag.column_settings.tag_mode.any": "Any of these",
|
||||
"hashtag.column_settings.tag_mode.none": "None of these",
|
||||
"hashtag.column_settings.tag_toggle": "Include additional tags for this column",
|
||||
"home.column_settings.basic": "Basic",
|
||||
"home.column_settings.show_reblogs": "Show roars",
|
||||
"home.column_settings.show_replies": "Show meows",
|
||||
"home.hide_announcements": "Hide announcements",
|
||||
"home.show_announcements": "Show announcements",
|
||||
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
|
||||
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||
"keyboard_shortcuts.back": "Navigate back",
|
||||
"keyboard_shortcuts.blocked": "Open blocked lions list",
|
||||
"keyboard_shortcuts.boost": "Boost post",
|
||||
"keyboard_shortcuts.column": "Focus column",
|
||||
"keyboard_shortcuts.compose": "Focus compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.direct": "Open direct messages column",
|
||||
"keyboard_shortcuts.down": "Move down in the list",
|
||||
"keyboard_shortcuts.enter": "Open status",
|
||||
"keyboard_shortcuts.favourite": "Boop toot",
|
||||
"keyboard_shortcuts.favourites": "Open boops list",
|
||||
"keyboard_shortcuts.federated": "Open federated timeline",
|
||||
"keyboard_shortcuts.heading": "Keyboard shortcuts",
|
||||
"keyboard_shortcuts.home": "Open home timeline",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "Display this legend",
|
||||
"keyboard_shortcuts.local": "Open local timeline",
|
||||
"keyboard_shortcuts.mention": "Mention author",
|
||||
"keyboard_shortcuts.muted": "Open muted lions list",
|
||||
"keyboard_shortcuts.my_profile": "Open your profile",
|
||||
"keyboard_shortcuts.notifications": "Open notifications column",
|
||||
"keyboard_shortcuts.open_media": "Open media",
|
||||
"keyboard_shortcuts.pinned": "Open pinned toots list",
|
||||
"keyboard_shortcuts.profile": "Open author's profile",
|
||||
"keyboard_shortcuts.reply": "Meow",
|
||||
"keyboard_shortcuts.requests": "Open pride requests list",
|
||||
"keyboard_shortcuts.search": "Focus search bar",
|
||||
"keyboard_shortcuts.spoilers": "Show/hide CW field",
|
||||
"keyboard_shortcuts.start": "Open “get started” column",
|
||||
"keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Show/hide media",
|
||||
"keyboard_shortcuts.toot": "Start a new toot",
|
||||
"keyboard_shortcuts.unfocus": "Unfocus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "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",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"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}}",
|
||||
"loading_indicator.label": "Loading...",
|
||||
"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",
|
||||
"navigation_bar.community_timeline": "Local timeline",
|
||||
"navigation_bar.compose": "Compose new toot",
|
||||
"navigation_bar.direct": "Direct messages",
|
||||
"navigation_bar.discover": "Discover",
|
||||
"navigation_bar.domain_blocks": "Hidden domains",
|
||||
"navigation_bar.edit_profile": "Edit profile",
|
||||
"navigation_bar.favourites": "Boops",
|
||||
"navigation_bar.filters": "Muted words",
|
||||
"navigation_bar.follow_requests": "Pride requests",
|
||||
"navigation_bar.follows_and_followers": "Prides and Pride Members",
|
||||
"navigation_bar.info": "About this server",
|
||||
"navigation_bar.keyboard_shortcuts": "Hotkeys",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Muted lions",
|
||||
"navigation_bar.personal": "Personal",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.preferences": "Preferences",
|
||||
"navigation_bar.public_timeline": "Federated timeline",
|
||||
"navigation_bar.security": "Security",
|
||||
"notification.favourite": "{name} booped your toot",
|
||||
"notification.follow": "{name} joined your pride",
|
||||
"notification.follow_request": "{name} has requested to join your pride",
|
||||
"notification.mention": "{name} meowed at you",
|
||||
"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 tooted",
|
||||
"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.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:",
|
||||
"notifications.column_settings.mention": "Meows:",
|
||||
"notifications.column_settings.poll": "Poll results:",
|
||||
"notifications.column_settings.push": "Push notifications",
|
||||
"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.column_settings.unread_markers.category": "Unread notification markers",
|
||||
"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 prides you've joined",
|
||||
"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}}",
|
||||
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
|
||||
"poll.vote": "Vote",
|
||||
"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 lions only",
|
||||
"privacy.direct.short": "Direct",
|
||||
"privacy.private.long": "Toot to pride members only",
|
||||
"privacy.private.short": "Pride Members-only",
|
||||
"privacy.public.long": "Toot to public timelines",
|
||||
"privacy.public.short": "Public",
|
||||
"privacy.unlisted.long": "Do not toot to public timelines",
|
||||
"privacy.unlisted.short": "Unlisted",
|
||||
"refresh": "Refresh",
|
||||
"regeneration_indicator.label": "Loading…",
|
||||
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"relative_time.today": "today",
|
||||
"reply_indicator.cancel": "Cancel",
|
||||
"report.forward": "Forward to {target}",
|
||||
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
|
||||
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
|
||||
"report.placeholder": "Additional comments",
|
||||
"report.submit": "Submit",
|
||||
"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.hashtag": "hashtag",
|
||||
"search_popout.tips.status": "status",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "lion",
|
||||
"search_results.accounts": "Lions",
|
||||
"search_results.hashtags": "Hashtags",
|
||||
"search_results.statuses": "Toots",
|
||||
"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.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.delete": "Delete",
|
||||
"status.detailed_status": "Detailed conversation view",
|
||||
"status.direct": "Direct message @{name}",
|
||||
"status.embed": "Embed",
|
||||
"status.favourite": "Boop",
|
||||
"status.filtered": "Filtered",
|
||||
"status.load_more": "Load more",
|
||||
"status.media_hidden": "Media hidden",
|
||||
"status.mention": "Meow at @{name}",
|
||||
"status.more": "More",
|
||||
"status.mute": "Mute @{name}",
|
||||
"status.mute_conversation": "Mute conversation",
|
||||
"status.open": "Expand this toot",
|
||||
"status.pin": "Pin on profile",
|
||||
"status.pinned": "Pinned toot",
|
||||
"status.read_more": "Read more",
|
||||
"status.reblog": "Roar",
|
||||
"status.reblog_private": "Roar to original audience",
|
||||
"status.reblogged_by": "{name} roared",
|
||||
"status.reblogs.empty": "No one has roared this toot yet. When someone does, they will show up here.",
|
||||
"status.redraft": "Delete & re-draft",
|
||||
"status.remove_bookmark": "Remove bookmark",
|
||||
"status.reply": "Meow",
|
||||
"status.replyAll": "Meow in thread",
|
||||
"status.report": "Report @{name}",
|
||||
"status.sensitive_warning": "Sensitive content",
|
||||
"status.share": "Share",
|
||||
"status.show_less": "Show less",
|
||||
"status.show_less_all": "Show less for all",
|
||||
"status.show_more": "Show more",
|
||||
"status.show_more_all": "Show more for all",
|
||||
"status.show_thread": "Show thread",
|
||||
"status.uncached_media_warning": "Not available",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
"status.unpin": "Unpin from profile",
|
||||
"suggestions.dismiss": "Dismiss suggestion",
|
||||
"suggestions.header": "You might be interested in…",
|
||||
"tabs_bar.federated_timeline": "Federated",
|
||||
"tabs_bar.home": "Home",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.search": "Search",
|
||||
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
|
||||
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
|
||||
"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",
|
||||
"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 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",
|
||||
"video.download": "Download file",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
}
|
115
app/javascript/mastodon/locales/locale-data/dog.js
Normal file
115
app/javascript/mastodon/locales/locale-data/dog.js
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*eslint eqeqeq: "off"*/
|
||||
/*eslint no-nested-ternary: "off"*/
|
||||
/*eslint quotes: "off"*/
|
||||
|
||||
export default [
|
||||
{
|
||||
locale: "dog",
|
||||
pluralRuleFunction: function(e, a) {
|
||||
var n = String(e).split("."),
|
||||
l = !n[1],
|
||||
o = Number(n[0]) == e,
|
||||
t = o && n[0].slice(-1),
|
||||
r = o && n[0].slice(-2);
|
||||
return a ? 1 == t && 11 != r ? "one" : 2 == t && 12 != r ? "two" : 3 == t && 13 != r ? "few" : "other" : 1 == e && l ? "one" : "other"
|
||||
},
|
||||
fields: {
|
||||
year: {
|
||||
displayName: "year",
|
||||
relative: {
|
||||
0: "this year",
|
||||
1: "next year",
|
||||
"-1": "last year"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} year",
|
||||
other: "in {0} years"
|
||||
},
|
||||
past: {
|
||||
one: "{0} year ago",
|
||||
other: "{0} years ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
month: {
|
||||
displayName: "month",
|
||||
relative: {
|
||||
0: "this month",
|
||||
1: "next month",
|
||||
"-1": "last month"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} month",
|
||||
other: "in {0} months"
|
||||
},
|
||||
past: {
|
||||
one: "{0} month ago",
|
||||
other: "{0} months ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
day: {
|
||||
displayName: "day",
|
||||
relative: {
|
||||
0: "today",
|
||||
1: "tomorrow",
|
||||
"-1": "yesterday"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} day",
|
||||
other: "in {0} days"
|
||||
},
|
||||
past: {
|
||||
one: "{0} day ago",
|
||||
other: "{0} days ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
hour: {
|
||||
displayName: "hour",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} hour",
|
||||
other: "in {0} hours"
|
||||
},
|
||||
past: {
|
||||
one: "{0} hour ago",
|
||||
other: "{0} hours ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
minute: {
|
||||
displayName: "minute",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} minute",
|
||||
other: "in {0} minutes"
|
||||
},
|
||||
past: {
|
||||
one: "{0} minute ago",
|
||||
other: "{0} minutes ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
second: {
|
||||
displayName: "second",
|
||||
relative: {
|
||||
0: "now"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} second",
|
||||
other: "in {0} seconds"
|
||||
},
|
||||
past: {
|
||||
one: "{0} second ago",
|
||||
other: "{0} seconds ago"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
115
app/javascript/mastodon/locales/locale-data/lion.js
Normal file
115
app/javascript/mastodon/locales/locale-data/lion.js
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*eslint eqeqeq: "off"*/
|
||||
/*eslint no-nested-ternary: "off"*/
|
||||
/*eslint quotes: "off"*/
|
||||
|
||||
export default [
|
||||
{
|
||||
locale: "lion",
|
||||
pluralRuleFunction: function(e, a) {
|
||||
var n = String(e).split("."),
|
||||
l = !n[1],
|
||||
o = Number(n[0]) == e,
|
||||
t = o && n[0].slice(-1),
|
||||
r = o && n[0].slice(-2);
|
||||
return a ? 1 == t && 11 != r ? "one" : 2 == t && 12 != r ? "two" : 3 == t && 13 != r ? "few" : "other" : 1 == e && l ? "one" : "other"
|
||||
},
|
||||
fields: {
|
||||
year: {
|
||||
displayName: "year",
|
||||
relative: {
|
||||
0: "this year",
|
||||
1: "next year",
|
||||
"-1": "last year"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} year",
|
||||
other: "in {0} years"
|
||||
},
|
||||
past: {
|
||||
one: "{0} year ago",
|
||||
other: "{0} years ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
month: {
|
||||
displayName: "month",
|
||||
relative: {
|
||||
0: "this month",
|
||||
1: "next month",
|
||||
"-1": "last month"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} month",
|
||||
other: "in {0} months"
|
||||
},
|
||||
past: {
|
||||
one: "{0} month ago",
|
||||
other: "{0} months ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
day: {
|
||||
displayName: "day",
|
||||
relative: {
|
||||
0: "today",
|
||||
1: "tomorrow",
|
||||
"-1": "yesterday"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} day",
|
||||
other: "in {0} days"
|
||||
},
|
||||
past: {
|
||||
one: "{0} day ago",
|
||||
other: "{0} days ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
hour: {
|
||||
displayName: "hour",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} hour",
|
||||
other: "in {0} hours"
|
||||
},
|
||||
past: {
|
||||
one: "{0} hour ago",
|
||||
other: "{0} hours ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
minute: {
|
||||
displayName: "minute",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} minute",
|
||||
other: "in {0} minutes"
|
||||
},
|
||||
past: {
|
||||
one: "{0} minute ago",
|
||||
other: "{0} minutes ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
second: {
|
||||
displayName: "second",
|
||||
relative: {
|
||||
0: "now"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} second",
|
||||
other: "in {0} seconds"
|
||||
},
|
||||
past: {
|
||||
one: "{0} second ago",
|
||||
other: "{0} seconds ago"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
115
app/javascript/mastodon/locales/locale-data/squeak.js
Normal file
115
app/javascript/mastodon/locales/locale-data/squeak.js
Normal file
|
@ -0,0 +1,115 @@
|
|||
/*eslint eqeqeq: "off"*/
|
||||
/*eslint no-nested-ternary: "off"*/
|
||||
/*eslint quotes: "off"*/
|
||||
|
||||
export default [
|
||||
{
|
||||
locale: "squeak",
|
||||
pluralRuleFunction: function(e, a) {
|
||||
var n = String(e).split("."),
|
||||
l = !n[1],
|
||||
o = Number(n[0]) == e,
|
||||
t = o && n[0].slice(-1),
|
||||
r = o && n[0].slice(-2);
|
||||
return a ? 1 == t && 11 != r ? "one" : 2 == t && 12 != r ? "two" : 3 == t && 13 != r ? "few" : "other" : 1 == e && l ? "one" : "other"
|
||||
},
|
||||
fields: {
|
||||
year: {
|
||||
displayName: "year",
|
||||
relative: {
|
||||
0: "this year",
|
||||
1: "next year",
|
||||
"-1": "last year"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} year",
|
||||
other: "in {0} years"
|
||||
},
|
||||
past: {
|
||||
one: "{0} year ago",
|
||||
other: "{0} years ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
month: {
|
||||
displayName: "month",
|
||||
relative: {
|
||||
0: "this month",
|
||||
1: "next month",
|
||||
"-1": "last month"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} month",
|
||||
other: "in {0} months"
|
||||
},
|
||||
past: {
|
||||
one: "{0} month ago",
|
||||
other: "{0} months ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
day: {
|
||||
displayName: "day",
|
||||
relative: {
|
||||
0: "today",
|
||||
1: "tomorrow",
|
||||
"-1": "yesterday"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} day",
|
||||
other: "in {0} days"
|
||||
},
|
||||
past: {
|
||||
one: "{0} day ago",
|
||||
other: "{0} days ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
hour: {
|
||||
displayName: "hour",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} hour",
|
||||
other: "in {0} hours"
|
||||
},
|
||||
past: {
|
||||
one: "{0} hour ago",
|
||||
other: "{0} hours ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
minute: {
|
||||
displayName: "minute",
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} minute",
|
||||
other: "in {0} minutes"
|
||||
},
|
||||
past: {
|
||||
one: "{0} minute ago",
|
||||
other: "{0} minutes ago"
|
||||
}
|
||||
}
|
||||
},
|
||||
second: {
|
||||
displayName: "second",
|
||||
relative: {
|
||||
0: "now"
|
||||
},
|
||||
relativeTime: {
|
||||
future: {
|
||||
one: "in {0} second",
|
||||
other: "in {0} seconds"
|
||||
},
|
||||
past: {
|
||||
one: "{0} second ago",
|
||||
other: "{0} seconds ago"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
475
app/javascript/mastodon/locales/squeak.json
Normal file
475
app/javascript/mastodon/locales/squeak.json
Normal file
|
@ -0,0 +1,475 @@
|
|||
{
|
||||
"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": "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.disable_notifications": "Stop notifying me when @{name} toots",
|
||||
"account.domain_blocked": "Domain blocked",
|
||||
"account.edit_profile": "Edit profile",
|
||||
"account.enable_notifications": "Notify me when @{name} toots",
|
||||
"account.endorse": "Feature on profile",
|
||||
"account.follow": "Follow",
|
||||
"account.followers": "Followers",
|
||||
"account.followers.empty": "No one follows this user yet.",
|
||||
"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}",
|
||||
"account.joined": "Joined {date}",
|
||||
"account.last_status": "Last active",
|
||||
"account.link_verified_on": "Ownership of this link was checked on {date}",
|
||||
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
|
||||
"account.media": "Media",
|
||||
"account.mention": "Mention @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.mute": "Mute @{name}",
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.muted": "Muted",
|
||||
"account.never_active": "Never",
|
||||
"account.posts": "Toots",
|
||||
"account.posts_with_replies": "Toots and replies",
|
||||
"account.report": "Report @{name}",
|
||||
"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": "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.",
|
||||
"alert.unexpected.title": "Oops!",
|
||||
"announcement.announcement": "Announcement",
|
||||
"autosuggest_hashtag.per_week": "{count} per week",
|
||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||
"bundle_column_error.retry": "Try again",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
"bundle_modal_error.retry": "Try again",
|
||||
"column.blocks": "Blocked users",
|
||||
"column.bookmarks": "Bookmarks",
|
||||
"column.community": "Local timeline",
|
||||
"column.direct": "Direct messages",
|
||||
"column.directory": "Browse profiles",
|
||||
"column.domain_blocks": "Blocked domains",
|
||||
"column.favourites": "Squeaks",
|
||||
"column.follow_requests": "Follow requests",
|
||||
"column.home": "Home",
|
||||
"column.lists": "Lists",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Notifications",
|
||||
"column.pins": "Pinned toots",
|
||||
"column.public": "Federated timeline",
|
||||
"column_back_button.label": "Back",
|
||||
"column_header.hide_settings": "Hide settings",
|
||||
"column_header.moveLeft_settings": "Move column to the left",
|
||||
"column_header.moveRight_settings": "Move column to the right",
|
||||
"column_header.pin": "Pin",
|
||||
"column_header.show_settings": "Show settings",
|
||||
"column_header.unpin": "Unpin",
|
||||
"column_subheading.settings": "Settings",
|
||||
"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 sent to the mentioned users.",
|
||||
"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 follow you to view your follower-only toots.",
|
||||
"compose_form.lock_disclaimer.lock": "locked",
|
||||
"compose_form.placeholder": "What's on your mind?",
|
||||
"compose_form.poll.add_option": "Add a choice",
|
||||
"compose_form.poll.duration": "Poll duration",
|
||||
"compose_form.poll.option_placeholder": "Choice {number}",
|
||||
"compose_form.poll.remove_option": "Remove this choice",
|
||||
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
|
||||
"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": "{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": "Remove content warning",
|
||||
"compose_form.spoiler.unmarked": "Add content warning",
|
||||
"compose_form.spoiler_placeholder": "Write your warning here",
|
||||
"confirmation_modal.cancel": "Cancel",
|
||||
"confirmations.block.block_and_report": "Block & Report",
|
||||
"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 toot?",
|
||||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"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?",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
"confirmations.mute.explanation": "This will hide toots from them and toots mentioning them, but it will still allow them to see your toots 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 toot and re-draft it? Favourites and boosts will be lost, and replies to the original toot 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",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"conversation.delete": "Delete conversation",
|
||||
"conversation.mark_as_read": "Mark as read",
|
||||
"conversation.open": "View conversation",
|
||||
"conversation.with": "With {names}",
|
||||
"directory.federated": "From known fediverse",
|
||||
"directory.local": "From {domain} only",
|
||||
"directory.new_arrivals": "New arrivals",
|
||||
"directory.recently_active": "Recently active",
|
||||
"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",
|
||||
"emoji_button.flags": "Flags",
|
||||
"emoji_button.food": "Food & Drink",
|
||||
"emoji_button.label": "Insert emoji",
|
||||
"emoji_button.nature": "Nature",
|
||||
"emoji_button.not_found": "No matching emojis found",
|
||||
"emoji_button.objects": "Objects",
|
||||
"emoji_button.people": "People",
|
||||
"emoji_button.recent": "Frequently used",
|
||||
"emoji_button.search": "Search...",
|
||||
"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 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_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
|
||||
"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! Follow more people to fill it up. {suggestions}",
|
||||
"empty_column.home.suggestions": "See some suggestions",
|
||||
"empty_column.list": "There is nothing in this list yet. When members of this list publish 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. When other people interact with you, you will see it here.",
|
||||
"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_recommendations.done": "Done",
|
||||
"follow_recommendations.heading": "Follow people you'd like to see toots from! Here are some suggestions.",
|
||||
"follow_recommendations.lead": "Toots from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
|
||||
"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",
|
||||
"getting_started.heading": "Getting started",
|
||||
"getting_started.invite": "Invite people",
|
||||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
|
||||
"getting_started.security": "Account settings",
|
||||
"getting_started.terms": "Terms of service",
|
||||
"hashtag.column_header.tag_mode.all": "and {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "or {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "without {additional}",
|
||||
"hashtag.column_settings.select.no_options_message": "No suggestions found",
|
||||
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
|
||||
"hashtag.column_settings.tag_mode.all": "All of these",
|
||||
"hashtag.column_settings.tag_mode.any": "Any of these",
|
||||
"hashtag.column_settings.tag_mode.none": "None of these",
|
||||
"hashtag.column_settings.tag_toggle": "Include additional tags for this column",
|
||||
"home.column_settings.basic": "Basic",
|
||||
"home.column_settings.show_reblogs": "Show pumps",
|
||||
"home.column_settings.show_replies": "Show replies",
|
||||
"home.hide_announcements": "Hide announcements",
|
||||
"home.show_announcements": "Show announcements",
|
||||
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
|
||||
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||
"keyboard_shortcuts.back": "Navigate back",
|
||||
"keyboard_shortcuts.blocked": "Open blocked users list",
|
||||
"keyboard_shortcuts.boost": "Boost toot",
|
||||
"keyboard_shortcuts.column": "Focus column",
|
||||
"keyboard_shortcuts.compose": "Focus compose textarea",
|
||||
"keyboard_shortcuts.description": "Description",
|
||||
"keyboard_shortcuts.direct": "Open direct messages column",
|
||||
"keyboard_shortcuts.down": "Move down in the list",
|
||||
"keyboard_shortcuts.enter": "Open toot",
|
||||
"keyboard_shortcuts.favourite": "Squeak toot",
|
||||
"keyboard_shortcuts.favourites": "Open squeaks list",
|
||||
"keyboard_shortcuts.federated": "Open federated timeline",
|
||||
"keyboard_shortcuts.heading": "Keyboard shortcuts",
|
||||
"keyboard_shortcuts.home": "Open home timeline",
|
||||
"keyboard_shortcuts.hotkey": "Hotkey",
|
||||
"keyboard_shortcuts.legend": "Display this legend",
|
||||
"keyboard_shortcuts.local": "Open local timeline",
|
||||
"keyboard_shortcuts.mention": "Mention author",
|
||||
"keyboard_shortcuts.muted": "Open muted users list",
|
||||
"keyboard_shortcuts.my_profile": "Open your profile",
|
||||
"keyboard_shortcuts.notifications": "Open notifications column",
|
||||
"keyboard_shortcuts.open_media": "Open media",
|
||||
"keyboard_shortcuts.pinned": "Open pinned toots list",
|
||||
"keyboard_shortcuts.profile": "Open author's profile",
|
||||
"keyboard_shortcuts.reply": "Reply to toot",
|
||||
"keyboard_shortcuts.requests": "Open follow requests list",
|
||||
"keyboard_shortcuts.search": "Focus search bar",
|
||||
"keyboard_shortcuts.spoilers": "Show/hide CW field",
|
||||
"keyboard_shortcuts.start": "Open “get started” column",
|
||||
"keyboard_shortcuts.toggle_hidden": "Show/hide text behind CW",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Show/hide media",
|
||||
"keyboard_shortcuts.toot": "Start a new toot",
|
||||
"keyboard_shortcuts.unfocus": "Unfocus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "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",
|
||||
"lists.account.add": "Add to list",
|
||||
"lists.account.remove": "Remove from list",
|
||||
"lists.delete": "Delete list",
|
||||
"lists.edit": "Edit list",
|
||||
"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": "{number, plural, one {Hide image} other {Hide 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",
|
||||
"navigation_bar.community_timeline": "Local timeline",
|
||||
"navigation_bar.compose": "Compose new toot",
|
||||
"navigation_bar.direct": "Direct messages",
|
||||
"navigation_bar.discover": "Discover",
|
||||
"navigation_bar.domain_blocks": "Hidden domains",
|
||||
"navigation_bar.edit_profile": "Edit profile",
|
||||
"navigation_bar.favourites": "Squeaks",
|
||||
"navigation_bar.filters": "Muted words",
|
||||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.follows_and_followers": "Follows and followers",
|
||||
"navigation_bar.info": "About this server",
|
||||
"navigation_bar.keyboard_shortcuts": "Hotkeys",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.personal": "Personal",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.preferences": "Preferences",
|
||||
"navigation_bar.public_timeline": "Federated timeline",
|
||||
"navigation_bar.security": "Security",
|
||||
"notification.favourite": "{name} squeaked your status",
|
||||
"notification.follow": "{name} followed you",
|
||||
"notification.follow_request": "{name} has requested to follow you",
|
||||
"notification.mention": "{name} mentioned you",
|
||||
"notification.own_poll": "Your poll has ended",
|
||||
"notification.poll": "A poll you have voted in has ended",
|
||||
"notification.reblog": "{name} pumped your toot",
|
||||
"notification.status": "{name} just tooted",
|
||||
"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": "Squeaks:",
|
||||
"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 followers:",
|
||||
"notifications.column_settings.follow_request": "New follow requests:",
|
||||
"notifications.column_settings.mention": "Mentions:",
|
||||
"notifications.column_settings.poll": "Poll results:",
|
||||
"notifications.column_settings.push": "Push notifications",
|
||||
"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.column_settings.unread_markers.category": "Unread notification markers",
|
||||
"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}}",
|
||||
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
|
||||
"poll.vote": "Vote",
|
||||
"poll.voted": "You voted for this answer",
|
||||
"poll_button.add_poll": "Add a poll",
|
||||
"poll_button.remove_poll": "Remove poll",
|
||||
"privacy.change": "Change toot privacy",
|
||||
"privacy.direct.long": "Visible for mentioned users only",
|
||||
"privacy.direct.short": "Direct",
|
||||
"privacy.private.long": "Visible for followers only",
|
||||
"privacy.private.short": "Followers-only",
|
||||
"privacy.public.long": "Visible for all, shown in public timelines",
|
||||
"privacy.public.short": "Public",
|
||||
"privacy.unlisted.long": "Visible for all, but not in public timelines",
|
||||
"privacy.unlisted.short": "Unlisted",
|
||||
"refresh": "Refresh",
|
||||
"regeneration_indicator.label": "Loading…",
|
||||
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
|
||||
"relative_time.days": "{number}d",
|
||||
"relative_time.hours": "{number}h",
|
||||
"relative_time.just_now": "now",
|
||||
"relative_time.minutes": "{number}m",
|
||||
"relative_time.seconds": "{number}s",
|
||||
"relative_time.today": "today",
|
||||
"reply_indicator.cancel": "Cancel",
|
||||
"report.forward": "Forward to {target}",
|
||||
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
|
||||
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
|
||||
"report.placeholder": "Additional comments",
|
||||
"report.submit": "Submit",
|
||||
"report.target": "Reporting {target}",
|
||||
"search.placeholder": "Search",
|
||||
"search_popout.search_format": "Advanced search format",
|
||||
"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": "toot",
|
||||
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
|
||||
"search_popout.tips.user": "user",
|
||||
"search_results.accounts": "People",
|
||||
"search_results.hashtags": "Hashtags",
|
||||
"search_results.statuses": "Toots",
|
||||
"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.block": "Block @{name}",
|
||||
"status.bookmark": "Bookmark",
|
||||
"status.cancel_reblog_private": "Unpump",
|
||||
"status.cannot_reblog": "This toot cannot be pumped",
|
||||
"status.copy": "Copy link to toot",
|
||||
"status.delete": "Delete",
|
||||
"status.detailed_status": "Detailed conversation view",
|
||||
"status.direct": "Direct message @{name}",
|
||||
"status.embed": "Embed",
|
||||
"status.favourite": "Squeak",
|
||||
"status.filtered": "Filtered",
|
||||
"status.load_more": "Load more",
|
||||
"status.media_hidden": "Media hidden",
|
||||
"status.mention": "Mention @{name}",
|
||||
"status.more": "More",
|
||||
"status.mute": "Mute @{name}",
|
||||
"status.mute_conversation": "Mute conversation",
|
||||
"status.open": "Expand this toot",
|
||||
"status.pin": "Pin on profile",
|
||||
"status.pinned": "Pinned toot",
|
||||
"status.read_more": "Read more",
|
||||
"status.reblog": "Pump",
|
||||
"status.reblog_private": "Pump with original visibility",
|
||||
"status.reblogged_by": "{name} pumped",
|
||||
"status.reblogs.empty": "No one has pumped this toot yet. When someone does, they will show up here.",
|
||||
"status.redraft": "Delete & re-draft",
|
||||
"status.remove_bookmark": "Remove bookmark",
|
||||
"status.reply": "Reply",
|
||||
"status.replyAll": "Reply to thread",
|
||||
"status.report": "Report @{name}",
|
||||
"status.sensitive_warning": "Sensitive content",
|
||||
"status.share": "Share",
|
||||
"status.show_less": "Show less",
|
||||
"status.show_less_all": "Show less for all",
|
||||
"status.show_more": "Show more",
|
||||
"status.show_more_all": "Show more for all",
|
||||
"status.show_thread": "Show thread",
|
||||
"status.uncached_media_warning": "Not available",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
"status.unpin": "Unpin from profile",
|
||||
"suggestions.dismiss": "Dismiss suggestion",
|
||||
"suggestions.header": "You might be interested in…",
|
||||
"tabs_bar.federated_timeline": "Federated",
|
||||
"tabs_bar.home": "Home",
|
||||
"tabs_bar.local_timeline": "Local",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.search": "Search",
|
||||
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
|
||||
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
|
||||
"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",
|
||||
"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 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",
|
||||
"video.download": "Download file",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.expand": "Expand video",
|
||||
"video.fullscreen": "Full screen",
|
||||
"video.hide": "Hide video",
|
||||
"video.mute": "Mute sound",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.unmute": "Unmute sound"
|
||||
}
|
2
app/javascript/mastodon/locales/whitelist_dog.json
Normal file
2
app/javascript/mastodon/locales/whitelist_dog.json
Normal file
|
@ -0,0 +1,2 @@
|
|||
[
|
||||
]
|
2
app/javascript/mastodon/locales/whitelist_lion.json
Normal file
2
app/javascript/mastodon/locales/whitelist_lion.json
Normal file
|
@ -0,0 +1,2 @@
|
|||
[
|
||||
]
|
2
app/javascript/mastodon/locales/whitelist_squeak.json
Normal file
2
app/javascript/mastodon/locales/whitelist_squeak.json
Normal file
|
@ -0,0 +1,2 @@
|
|||
[
|
||||
]
|
2
app/javascript/styles/contrast-wider.scss
Normal file
2
app/javascript/styles/contrast-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'contrast';
|
2
app/javascript/styles/mastodon-light-wider.scss
Normal file
2
app/javascript/styles/mastodon-light-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'mastodon-light';
|
2
app/javascript/styles/mastodon-wider.scss
Normal file
2
app/javascript/styles/mastodon-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'application';
|
|
@ -821,10 +821,6 @@
|
|||
|
||||
&.status__content--with-spoiler {
|
||||
white-space: normal;
|
||||
|
||||
.status__content__text {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
|
||||
.emojione {
|
||||
|
@ -833,7 +829,9 @@
|
|||
margin: -3px 0 0;
|
||||
}
|
||||
|
||||
p {
|
||||
p,
|
||||
pre,
|
||||
blockquote {
|
||||
margin-bottom: 20px;
|
||||
white-space: pre-wrap;
|
||||
unicode-bidi: plaintext;
|
||||
|
@ -843,6 +841,175 @@
|
|||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
white-space: normal;
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.rich-text) {
|
||||
del {
|
||||
text-decoration: none;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: '~~';
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
u {
|
||||
text-decoration: none;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: '__';
|
||||
}
|
||||
}
|
||||
|
||||
h1::before {
|
||||
content: '# ';
|
||||
}
|
||||
|
||||
h2::before {
|
||||
content: '## ';
|
||||
}
|
||||
|
||||
h3::before {
|
||||
content: '### ';
|
||||
}
|
||||
|
||||
h4::before {
|
||||
content: '#### ';
|
||||
}
|
||||
|
||||
h5::before {
|
||||
content: '##### ';
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
&::before,
|
||||
&::after {
|
||||
content: '**';
|
||||
}
|
||||
}
|
||||
|
||||
em,
|
||||
i {
|
||||
&::before,
|
||||
&::after {
|
||||
content: '*';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.rich-blocks) {
|
||||
blockquote {
|
||||
position: relative;
|
||||
padding-left: 1em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
blockquote::before {
|
||||
position: absolute;
|
||||
content: '>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a>\a';
|
||||
white-space: pre-wrap;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
li::before {
|
||||
position: absolute;
|
||||
content: '*';
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
padding-left: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
&.rich-text {
|
||||
h1,
|
||||
h2 {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
em,
|
||||
i {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
sub {
|
||||
font-size: smaller;
|
||||
text-align: sub;
|
||||
}
|
||||
}
|
||||
|
||||
&.rich-blocks {
|
||||
h1,
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding-left: 10px;
|
||||
border-left: 3px solid $darker-text-color;
|
||||
color: $darker-text-color;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $secondary-text-color;
|
||||
text-decoration: none;
|
||||
|
|
2
app/javascript/styles/pop-light-wider.scss
Normal file
2
app/javascript/styles/pop-light-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'pop-light';
|
55
app/javascript/styles/pop-light.scss
Normal file
55
app/javascript/styles/pop-light.scss
Normal file
|
@ -0,0 +1,55 @@
|
|||
// Commonly used web colors
|
||||
$black: #3b3633; // Black
|
||||
$white: #fafafa; // White
|
||||
|
||||
$classic-base-color: #49423e; // Midnight Express
|
||||
$classic-primary-color: #c9c7c5; // Echo Blue
|
||||
$classic-secondary-color: #ebe9e8; // Pattens Blue
|
||||
$classic-highlight-color: #48b9c7; // Summer Sky
|
||||
|
||||
// Differences
|
||||
$success-green: #3e935b; // Padua
|
||||
|
||||
$base-overlay-background: $white !default;
|
||||
$valid-value-color: $success-green !default;
|
||||
|
||||
$ui-base-color: $classic-secondary-color !default; // Midnight Express
|
||||
$ui-base-lighter-color: #ababab;
|
||||
$ui-primary-color: #9a938e; // Echo Blue
|
||||
$ui-secondary-color: $classic-base-color !default; // Pattens Blue
|
||||
$ui-highlight-color: #48b9c7; // Summer Sky
|
||||
|
||||
$primary-text-color: $black !default;
|
||||
$darker-text-color: $classic-base-color !default;
|
||||
$dark-text-color: #0c0c0c;
|
||||
$action-button-color: #635d58;
|
||||
|
||||
$error-red: #a3360a; // Cerise
|
||||
$warning-red: #f9dfb6; // Sunset Orange
|
||||
$gold-star: #faa41a; // Dark Goldenrod
|
||||
|
||||
$inverted-text-color: $black !default;
|
||||
$lighter-text-color: $classic-base-color !default;
|
||||
$light-text-color: #444b5d;
|
||||
|
||||
$base-shadow-color: #3b3633;
|
||||
$base-overlay-background: #3b3633;
|
||||
$base-border-color: #fafafa;
|
||||
$simple-background-color: #fafafa;
|
||||
$valid-value-color: #3e935b;
|
||||
$error-value-color: #a3360a;
|
||||
|
||||
//Newly added colors
|
||||
$account-background-color: $white !default;
|
||||
|
||||
//Invert darkened and lightened colors
|
||||
@function darken($color, $amount) {
|
||||
@return hsl(hue($color), saturation($color), lightness($color) + $amount);
|
||||
}
|
||||
|
||||
@function lighten($color, $amount) {
|
||||
@return hsl(hue($color), saturation($color), lightness($color) - $amount);
|
||||
}
|
||||
|
||||
@import 'application';
|
||||
@import 'mastodon-light/diff';
|
2
app/javascript/styles/pop-wider.scss
Normal file
2
app/javascript/styles/pop-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'pop';
|
28
app/javascript/styles/pop.scss
Normal file
28
app/javascript/styles/pop.scss
Normal file
|
@ -0,0 +1,28 @@
|
|||
// Commonly used web colors
|
||||
$black: #3b3633; // Black
|
||||
$white: #fafafa; // White
|
||||
$success-green: #3e935b; // Padua
|
||||
$error-red: #a3360a; // Cerise
|
||||
$warning-red: #f9dfb6; // Sunset Orange
|
||||
$gold-star: #faa41a; // Dark Goldenrod
|
||||
|
||||
$base-shadow-color: #3b3633;
|
||||
$base-overlay-background: #3b3633;
|
||||
$base-border-color: #fafafa;
|
||||
$simple-background-color: #fafafa;
|
||||
$primary-text-color: #fafafa;
|
||||
$valid-value-color: #3e935b;
|
||||
$error-value-color: #a3360a;
|
||||
|
||||
// Values from the classic Mastodon UI
|
||||
$classic-base-color: #49423e; // Midnight Express
|
||||
$classic-primary-color: #c9c7c5; // Echo Blue
|
||||
$classic-secondary-color: #ebe9e8; // Pattens Blue
|
||||
$classic-highlight-color: #48b9c7; // Summer Sky
|
||||
|
||||
$ui-base-color: #49423e; // Midnight Express
|
||||
$ui-primary-color: #c9c7c5; // Echo Blue
|
||||
$ui-secondary-color: #ebe9e8; // Pattens Blue
|
||||
$ui-highlight-color: #48b9c7; // Summer Sky
|
||||
|
||||
@import 'application';
|
2
app/javascript/styles/werefox-wider.scss
Normal file
2
app/javascript/styles/werefox-wider.scss
Normal file
|
@ -0,0 +1,2 @@
|
|||
@import 'wide';
|
||||
@import 'werefox';
|
28
app/javascript/styles/werefox.scss
Normal file
28
app/javascript/styles/werefox.scss
Normal file
|
@ -0,0 +1,28 @@
|
|||
// Commonly used web colors
|
||||
$black: #3b3633; // Black
|
||||
$white: #fafafa; // White
|
||||
$success-green: #3e935b; // Padua
|
||||
$error-red: #a3360a; // Cerise
|
||||
$warning-red: #f9dfb6; // Sunset Orange
|
||||
$gold-star: #faa41a; // Dark Goldenrod
|
||||
|
||||
$base-shadow-color: #999;
|
||||
$base-overlay-background: #3b3633;
|
||||
$base-border-color: #fafafa;
|
||||
$simple-background-color: #fafafa;
|
||||
$primary-text-color: #fafafa;
|
||||
$valid-value-color: #3e935b;
|
||||
$error-value-color: #a3360a;
|
||||
|
||||
// Values from the classic Mastodon UI
|
||||
$classic-base-color: #2a2a2a; // WS Black
|
||||
$classic-primary-color: #aaaaaa; // WS Light Gray
|
||||
$classic-secondary-color: #9e9e9e; // WS Gray
|
||||
$classic-highlight-color: #1c70ce; // WS Blue
|
||||
|
||||
$ui-base-color: #2a2a2a; // WS Black
|
||||
$ui-primary-color: #aaaaaa; // WS Light Gray
|
||||
$ui-secondary-color: #9e9e9e; // WS Gray
|
||||
$ui-highlight-color: #1c70ce; // WS Blue
|
||||
|
||||
@import 'application';
|
4
app/javascript/styles/wide.scss
Normal file
4
app/javascript/styles/wide.scss
Normal file
|
@ -0,0 +1,4 @@
|
|||
.column {
|
||||
flex-grow: 1 !important;
|
||||
max-width: 580px;
|
||||
}
|
|
@ -237,8 +237,54 @@ class Formatter
|
|||
|
||||
def link_to_mention(entity, linkable_accounts, options = {})
|
||||
acct = entity[:screen_name]
|
||||
username, domain = acct.split('@')
|
||||
|
||||
return link_to_account(acct, options) unless linkable_accounts
|
||||
case domain
|
||||
when 'twitter.com'
|
||||
return link_to_twitter(username)
|
||||
when 'tumblr.com'
|
||||
return link_to_tumblr(username)
|
||||
when 'weasyl.com'
|
||||
return link_to_weasyl(username)
|
||||
when 'furaffinity.net'
|
||||
return link_to_furaffinity(username)
|
||||
when 'furrynetwork.com', 'beta.furrynetwork.com'
|
||||
return link_to_furrynetwork(username)
|
||||
when 'sofurry.com'
|
||||
return link_to_sofurry(username)
|
||||
when 'inkbunny.net'
|
||||
return link_to_inkbunny(username)
|
||||
when 'e621.net'
|
||||
return link_to_e621(username)
|
||||
when 'e926.net'
|
||||
return link_to_e926(username)
|
||||
when 'f-list.net'
|
||||
return link_to_flist(username)
|
||||
when 'deviantart.com'
|
||||
return link_to_deviantart(username)
|
||||
when 'artstation.com'
|
||||
return link_to_artstation(username)
|
||||
when 'github.com'
|
||||
return link_to_github(username)
|
||||
when 'gitlab.com'
|
||||
return link_to_gitlab(username)
|
||||
when 'bitbucket.org'
|
||||
return link_to_bitbucket(username)
|
||||
when 'telegram.org'
|
||||
return link_to_telegram(username)
|
||||
when 'picarto.tv'
|
||||
return link_to_picarto(username)
|
||||
when 'twitch.tv'
|
||||
return link_to_twitch(username)
|
||||
when 'reddit.com'
|
||||
return link_to_reddit(username)
|
||||
when 'poizen.me'
|
||||
return link_to_poizen(username)
|
||||
when 'patreon.com'
|
||||
return link_to_patreon(username)
|
||||
else
|
||||
return link_to_account(acct, options) unless linkable_accounts
|
||||
end
|
||||
|
||||
same_username_hits = 0
|
||||
account = nil
|
||||
|
@ -259,6 +305,94 @@ class Formatter
|
|||
account ? mention_html(account, with_domain: same_username_hits.positive? || options[:with_domain]) : "@#{encode(acct)}"
|
||||
end
|
||||
|
||||
def link_to_twitter(username)
|
||||
link_to(username, "https://twitter.com/#{username}", "twitter.com")
|
||||
end
|
||||
|
||||
def link_to_tumblr(username)
|
||||
link_to(username, "https://#{username}.tumblr.com", "tumblr.com")
|
||||
end
|
||||
|
||||
def link_to_weasyl(username)
|
||||
link_to username "https://weasyl.com/~#{username}" "weasyl.com"
|
||||
end
|
||||
|
||||
def link_to_furaffinity(username)
|
||||
link_to(username, "https://furaffinity.net/user/#{username}", "furaffinity.net")
|
||||
end
|
||||
|
||||
def link_to_furrynetwork(username)
|
||||
link_to(username, "https://furrynetwork.com/#{username}", "furrynetwork.com")
|
||||
end
|
||||
|
||||
def link_to_inkbunny(username)
|
||||
link_to(username, "https://inkbunny.net/#{username}", "inkbunny.net")
|
||||
end
|
||||
|
||||
def link_to_sofurry(username)
|
||||
link_to(username, "https://#{username}.sofurry.com", "sofurry.com")
|
||||
end
|
||||
|
||||
def link_to_e621(username)
|
||||
link_to username "https://e621.net/user/show/#{username}" "e621.net"
|
||||
end
|
||||
|
||||
def link_to_e926(username)
|
||||
link_to username "https://e926.net/user/show/#{username}" "e926.net"
|
||||
end
|
||||
|
||||
def link_to_flist(username)
|
||||
link_to username "https://f-list.net/c/#{username}" "f-list.net"
|
||||
end
|
||||
|
||||
def link_to_deviantart(username)
|
||||
link_to(username, "https://#{username}.deviantart.com", "deviantart.com")
|
||||
end
|
||||
|
||||
def link_to_artstation(username)
|
||||
link_to(username, "https://www.artstation.com/#{username}", "artstation.com")
|
||||
end
|
||||
|
||||
def link_to_github(username)
|
||||
link_to(username, "https://github.com/#{username}", "github.com")
|
||||
end
|
||||
|
||||
def link_to_gitlab(username)
|
||||
link_to(username, "https://gitlab.com/#{username}", "gitlab.com")
|
||||
end
|
||||
|
||||
def link_to_bitbucket(username)
|
||||
link_to(username, "https://bitbucket.org/#{username}", "bitbucket.org")
|
||||
end
|
||||
|
||||
def link_to_telegram(username)
|
||||
link_to(username, "https://t.me/#{username}", "telegram.org")
|
||||
end
|
||||
|
||||
def link_to_picarto(username)
|
||||
link_to(username, "https://picarto.tv/#{username}", "picarto.tv")
|
||||
end
|
||||
|
||||
def link_to_twitch(username)
|
||||
link_to(username, "https://twitch.tv/#{username}", "twitch.tv")
|
||||
end
|
||||
|
||||
def link_to_reddit(username)
|
||||
link_to(username, "https://reddit.com/u/#{username}", "reddit.com")
|
||||
end
|
||||
|
||||
def link_to_poizen(username)
|
||||
link_to(username, "https://poizen.me/#{username}", "poizen.me")
|
||||
end
|
||||
|
||||
def link_to_patreon(username)
|
||||
link_to(username, "https://www.patreon.com/#{username}", "patreon.com")
|
||||
end
|
||||
|
||||
def link_to(username, url, domain)
|
||||
"<span class=\"h-card\"><a href=\"#{url}\" target=\"blank\" rel=\"noopener noreferrer\" class=\"u-url mention\">@<span>#{username}@#{domain}</span></a></span>"
|
||||
end
|
||||
|
||||
def link_to_account(acct, options = {})
|
||||
username, domain = acct.split('@')
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ class UserSettingsDecorator
|
|||
user.settings['use_blurhash'] = use_blurhash_preference if change?('setting_use_blurhash')
|
||||
user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items')
|
||||
user.settings['trends'] = trends_preference if change?('setting_trends')
|
||||
user.settings['strip_formatting'] = strip_formatting_preference if change?('setting_strip_formatting')
|
||||
user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images')
|
||||
end
|
||||
|
||||
|
@ -133,6 +134,10 @@ class UserSettingsDecorator
|
|||
boolean_cast_setting 'setting_trends'
|
||||
end
|
||||
|
||||
def strip_formatting_preference
|
||||
settings['setting_strip_formatting']
|
||||
end
|
||||
|
||||
def crop_images_preference
|
||||
boolean_cast_setting 'setting_crop_images'
|
||||
end
|
||||
|
|
|
@ -29,7 +29,7 @@ class CustomEmoji < ApplicationRecord
|
|||
:(#{SHORTCODE_RE_FRAGMENT}):
|
||||
(?=[^[:alnum:]:]|$)/x
|
||||
|
||||
IMAGE_MIME_TYPES = %w(image/png image/gif).freeze
|
||||
IMAGE_MIME_TYPES = %w(image/png image/gif image/webp).freeze
|
||||
|
||||
belongs_to :category, class_name: 'CustomEmojiCategory', optional: true
|
||||
has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode
|
||||
|
|
|
@ -123,7 +123,7 @@ class User < ApplicationRecord
|
|||
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
||||
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
|
||||
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
|
||||
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
|
||||
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :strip_formatting, :crop_images,
|
||||
:disable_swiping,
|
||||
to: :settings, prefix: :setting, allow_nil: false
|
||||
|
||||
|
|
|
@ -39,12 +39,14 @@ class InitialStateSerializer < ActiveModel::Serializer
|
|||
store[:use_pending_items] = object.current_account.user.setting_use_pending_items
|
||||
store[:is_staff] = object.current_account.user.staff?
|
||||
store[:trends] = Setting.trends && object.current_account.user.setting_trends
|
||||
store[:strip_formatting] = object.current_account.user.setting_strip_formatting
|
||||
store[:crop_images] = object.current_account.user.setting_crop_images
|
||||
else
|
||||
store[:auto_play_gif] = Setting.auto_play_gif
|
||||
store[:display_media] = Setting.display_media
|
||||
store[:reduce_motion] = Setting.reduce_motion
|
||||
store[:use_blurhash] = Setting.use_blurhash
|
||||
store[:strip_formatting] = Setting.strip_formatting
|
||||
store[:crop_images] = Setting.crop_images
|
||||
end
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
|||
|
||||
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
||||
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
||||
attribute :reading_strip_formatting, key: 'reading:formatting:strip'
|
||||
|
||||
def posting_default_privacy
|
||||
object.user.setting_default_privacy
|
||||
|
@ -27,4 +28,8 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
|||
def reading_default_sensitive_text
|
||||
object.user.setting_expand_spoilers
|
||||
end
|
||||
|
||||
def reading_strip_formatting
|
||||
object.user.setting_strip_formatting
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,6 +16,8 @@ class ActivityPub::ProcessAccountService < BaseService
|
|||
@domain = domain
|
||||
@collections = {}
|
||||
|
||||
return if auto_suspend?
|
||||
|
||||
RedisLock.acquire(lock_options) do |lock|
|
||||
if lock.acquired?
|
||||
@account = Account.remote.find_by(uri: @uri) if @options[:only_key]
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
= f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_disable_swiping, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
|
||||
= f.input :setting_strip_formatting, collection: ['none', 'blocks', 'all'], wrapper: :with_floating_label, include_blank: false, label_method: lambda { |value| safe_join([I18n.t("statuses.strip_formatting.#{value}"), content_tag(:span, I18n.t("statuses.strip_formatting.#{value}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', hint: false
|
||||
|
||||
%h4= t 'appearance.toot_layout'
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
= account_action_button(status.account)
|
||||
|
||||
.status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
|
||||
.status__content.emojify{ class: text_formatting_classes, :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
|
||||
- if status.spoiler_text?
|
||||
%p<
|
||||
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
%span.display-name__account
|
||||
= acct(status.account)
|
||||
= fa_icon('lock') if status.account.locked?
|
||||
.status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
|
||||
.status__content.emojify{ class: text_formatting_classes, :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
|
||||
- if status.spoiler_text?
|
||||
%p<
|
||||
%span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}
|
||||
|
|
|
@ -72,6 +72,10 @@ module Mastodon
|
|||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
config.i18n.available_locales = [
|
||||
:af,
|
||||
:dog,
|
||||
:lion,
|
||||
:squeak,
|
||||
:en,
|
||||
:ar,
|
||||
:ast,
|
||||
:bg,
|
||||
|
|
9
config/initializers/source.rb
Normal file
9
config/initializers/source.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
module Mastodon
|
||||
module Version
|
||||
module_function
|
||||
def source_base_url
|
||||
'https://git.asonix.dog/asonix/mastodon'
|
||||
end
|
||||
end
|
||||
end
|
32
config/locales/activerecord.dog.yml
Normal file
32
config/locales/activerecord.dog.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
dog:
|
||||
activerecord:
|
||||
attributes:
|
||||
poll:
|
||||
expires_at: Deadline
|
||||
options: Choices
|
||||
user:
|
||||
agreement: Service agreement
|
||||
email: E-mail address
|
||||
locale: Locale
|
||||
password: Password
|
||||
user/account:
|
||||
username: Username
|
||||
user/invite_request:
|
||||
text: Reason
|
||||
errors:
|
||||
models:
|
||||
account:
|
||||
attributes:
|
||||
username:
|
||||
invalid: must contain only letters, numbers and underscores
|
||||
reserved: is reserved
|
||||
status:
|
||||
attributes:
|
||||
reblog:
|
||||
taken: of toot already exists
|
||||
user:
|
||||
attributes:
|
||||
email:
|
||||
blocked: uses a disallowed e-mail provider
|
||||
unreachable: does not seem to exist
|
32
config/locales/activerecord.lion.yml
Normal file
32
config/locales/activerecord.lion.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
lion:
|
||||
activerecord:
|
||||
attributes:
|
||||
poll:
|
||||
expires_at: Deadline
|
||||
options: Choices
|
||||
user:
|
||||
agreement: Service agreement
|
||||
email: E-mail address
|
||||
locale: Locale
|
||||
password: Password
|
||||
user/account:
|
||||
username: Username
|
||||
user/invite_request:
|
||||
text: Reason
|
||||
errors:
|
||||
models:
|
||||
account:
|
||||
attributes:
|
||||
username:
|
||||
invalid: must contain only letters, numbers and underscores
|
||||
reserved: is reserved
|
||||
status:
|
||||
attributes:
|
||||
reblog:
|
||||
taken: of toot already exists
|
||||
user:
|
||||
attributes:
|
||||
email:
|
||||
blocked: uses a disallowed e-mail provider
|
||||
unreachable: does not seem to exist
|
32
config/locales/activerecord.squeak.yml
Normal file
32
config/locales/activerecord.squeak.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
squeak:
|
||||
activerecord:
|
||||
attributes:
|
||||
poll:
|
||||
expires_at: Deadline
|
||||
options: Choices
|
||||
user:
|
||||
agreement: Service agreement
|
||||
email: E-mail address
|
||||
locale: Locale
|
||||
password: Password
|
||||
user/account:
|
||||
username: Username
|
||||
user/invite_request:
|
||||
text: Reason
|
||||
errors:
|
||||
models:
|
||||
account:
|
||||
attributes:
|
||||
username:
|
||||
invalid: must contain only letters, numbers and underscores
|
||||
reserved: is reserved
|
||||
status:
|
||||
attributes:
|
||||
reblog:
|
||||
taken: of toot already exists
|
||||
user:
|
||||
attributes:
|
||||
email:
|
||||
blocked: uses a disallowed e-mail provider
|
||||
unreachable: does not seem to exist
|
115
config/locales/devise.dog.yml
Normal file
115
config/locales/devise.dog.yml
Normal file
|
@ -0,0 +1,115 @@
|
|||
---
|
||||
dog:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: Your email address has been successfully confirmed.
|
||||
send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
failure:
|
||||
already_authenticated: You are already signed in.
|
||||
inactive: Your account is not activated yet.
|
||||
invalid: Invalid %{authentication_keys} or password.
|
||||
last_attempt: You have one more attempt before your account is locked.
|
||||
locked: Your account is locked.
|
||||
not_found_in_database: Invalid %{authentication_keys} or password.
|
||||
pending: Your account is still under review.
|
||||
timeout: Your session expired. Please sign in again to continue.
|
||||
unauthenticated: You need to sign in or sign up before continuing.
|
||||
unconfirmed: You have to confirm your email address before continuing.
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: Verify email address
|
||||
action_with_app: Confirm and return to %{app}
|
||||
explanation: You have created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email.
|
||||
explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can't login until then. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email.
|
||||
extra_html: Please also check out <a href="%{terms_path}">the rules of the server</a> and <a href="%{policy_path}">our terms of service</a>.
|
||||
subject: 'Mastodon: Confirmation instructions for %{instance}'
|
||||
title: Verify email address
|
||||
email_changed:
|
||||
explanation: 'The email address for your account is being changed to:'
|
||||
extra: If you did not change your email, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Email changed'
|
||||
title: New email address
|
||||
password_change:
|
||||
explanation: The password for your account has been changed.
|
||||
extra: If you did not change your password, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Password changed'
|
||||
title: Password changed
|
||||
reconfirmation_instructions:
|
||||
explanation: Confirm the new address to change your email.
|
||||
extra: If this change wasn't initiated by you, please ignore this email. The email address for the Mastodon account won't change until you access the link above.
|
||||
subject: 'Mastodon: Confirm email for %{instance}'
|
||||
title: Verify email address
|
||||
reset_password_instructions:
|
||||
action: Change password
|
||||
explanation: You requested a new password for your account.
|
||||
extra: If you didn't request this, please ignore this email. Your password won't change until you access the link above and create a new one.
|
||||
subject: 'Mastodon: Reset password instructions'
|
||||
title: Password reset
|
||||
two_factor_disabled:
|
||||
explanation: Two-factor authentication for your account has been disabled. Login is now possible using only e-mail address and password.
|
||||
subject: 'Mastodon: Two-factor authentication disabled'
|
||||
title: 2FA disabled
|
||||
two_factor_enabled:
|
||||
explanation: Two-factor authentication has been enabled for your account. A token generated by the paired TOTP app will be required for login.
|
||||
subject: 'Mastodon: Two-factor authentication enabled'
|
||||
title: 2FA enabled
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: The previous recovery codes have been invalidated and new ones generated.
|
||||
subject: 'Mastodon: Two-factor recovery codes re-generated'
|
||||
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 your 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.
|
||||
passwords:
|
||||
no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
|
||||
send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your password has been changed successfully. You are now signed in.
|
||||
updated_not_active: Your password has been changed successfully.
|
||||
registrations:
|
||||
destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon.
|
||||
signed_up: Welcome! You have signed up successfully.
|
||||
signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated.
|
||||
signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked.
|
||||
signed_up_but_pending: A message with a confirmation link has been sent to your email address. After you click the link, we will review your application. You will be notified if it is approved.
|
||||
signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account. Please check your spam folder if you didn't receive this email.
|
||||
update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your account has been updated successfully.
|
||||
sessions:
|
||||
already_signed_out: Signed out successfully.
|
||||
signed_in: Signed in successfully.
|
||||
signed_out: Signed out successfully.
|
||||
unlocks:
|
||||
send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
unlocked: Your account has been unlocked successfully. Please sign in to continue.
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: was already confirmed, please try signing in
|
||||
confirmation_period_expired: needs to be confirmed within %{period}, please request a new one
|
||||
expired: has expired, please request a new one
|
||||
not_found: not found
|
||||
not_locked: was not locked
|
||||
not_saved:
|
||||
one: '1 error prohibited this %{resource} from being saved:'
|
||||
other: "%{count} errors prohibited this %{resource} from being saved:"
|
115
config/locales/devise.lion.yml
Normal file
115
config/locales/devise.lion.yml
Normal file
|
@ -0,0 +1,115 @@
|
|||
---
|
||||
lion:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: Your email address has been successfully confirmed.
|
||||
send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
failure:
|
||||
already_authenticated: You are already signed in.
|
||||
inactive: Your account is not activated yet.
|
||||
invalid: Invalid %{authentication_keys} or password.
|
||||
last_attempt: You have one more attempt before your account is locked.
|
||||
locked: Your account is locked.
|
||||
not_found_in_database: Invalid %{authentication_keys} or password.
|
||||
pending: Your account is still under review.
|
||||
timeout: Your session expired. Please sign in again to continue.
|
||||
unauthenticated: You need to sign in or sign up before continuing.
|
||||
unconfirmed: You have to confirm your email address before continuing.
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: Verify email address
|
||||
action_with_app: Confirm and return to %{app}
|
||||
explanation: You have created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email.
|
||||
explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can't login until then. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email.
|
||||
extra_html: Please also check out <a href="%{terms_path}">the rules of the server</a> and <a href="%{policy_path}">our terms of service</a>.
|
||||
subject: 'Mastodon: Confirmation instructions for %{instance}'
|
||||
title: Verify email address
|
||||
email_changed:
|
||||
explanation: 'The email address for your account is being changed to:'
|
||||
extra: If you did not change your email, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Email changed'
|
||||
title: New email address
|
||||
password_change:
|
||||
explanation: The password for your account has been changed.
|
||||
extra: If you did not change your password, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Password changed'
|
||||
title: Password changed
|
||||
reconfirmation_instructions:
|
||||
explanation: Confirm the new address to change your email.
|
||||
extra: If this change wasn't initiated by you, please ignore this email. The email address for the Mastodon account won't change until you access the link above.
|
||||
subject: 'Mastodon: Confirm email for %{instance}'
|
||||
title: Verify email address
|
||||
reset_password_instructions:
|
||||
action: Change password
|
||||
explanation: You requested a new password for your account.
|
||||
extra: If you didn't request this, please ignore this email. Your password won't change until you access the link above and create a new one.
|
||||
subject: 'Mastodon: Reset password instructions'
|
||||
title: Password reset
|
||||
two_factor_disabled:
|
||||
explanation: Two-factor authentication for your account has been disabled. Login is now possible using only e-mail address and password.
|
||||
subject: 'Mastodon: Two-factor authentication disabled'
|
||||
title: 2FA disabled
|
||||
two_factor_enabled:
|
||||
explanation: Two-factor authentication has been enabled for your account. A token generated by the paired TOTP app will be required for login.
|
||||
subject: 'Mastodon: Two-factor authentication enabled'
|
||||
title: 2FA enabled
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: The previous recovery codes have been invalidated and new ones generated.
|
||||
subject: 'Mastodon: Two-factor recovery codes re-generated'
|
||||
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 your 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.
|
||||
passwords:
|
||||
no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
|
||||
send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your password has been changed successfully. You are now signed in.
|
||||
updated_not_active: Your password has been changed successfully.
|
||||
registrations:
|
||||
destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon.
|
||||
signed_up: Welcome! You have signed up successfully.
|
||||
signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated.
|
||||
signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked.
|
||||
signed_up_but_pending: A message with a confirmation link has been sent to your email address. After you click the link, we will review your application. You will be notified if it is approved.
|
||||
signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account. Please check your spam folder if you didn't receive this email.
|
||||
update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your account has been updated successfully.
|
||||
sessions:
|
||||
already_signed_out: Signed out successfully.
|
||||
signed_in: Signed in successfully.
|
||||
signed_out: Signed out successfully.
|
||||
unlocks:
|
||||
send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
unlocked: Your account has been unlocked successfully. Please sign in to continue.
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: was already confirmed, please try signing in
|
||||
confirmation_period_expired: needs to be confirmed within %{period}, please request a new one
|
||||
expired: has expired, please request a new one
|
||||
not_found: not found
|
||||
not_locked: was not locked
|
||||
not_saved:
|
||||
one: '1 error prohibited this %{resource} from being saved:'
|
||||
other: "%{count} errors prohibited this %{resource} from being saved:"
|
115
config/locales/devise.squeak.yml
Normal file
115
config/locales/devise.squeak.yml
Normal file
|
@ -0,0 +1,115 @@
|
|||
---
|
||||
squeak:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: Your email address has been successfully confirmed.
|
||||
send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
failure:
|
||||
already_authenticated: You are already signed in.
|
||||
inactive: Your account is not activated yet.
|
||||
invalid: Invalid %{authentication_keys} or password.
|
||||
last_attempt: You have one more attempt before your account is locked.
|
||||
locked: Your account is locked.
|
||||
not_found_in_database: Invalid %{authentication_keys} or password.
|
||||
pending: Your account is still under review.
|
||||
timeout: Your session expired. Please sign in again to continue.
|
||||
unauthenticated: You need to sign in or sign up before continuing.
|
||||
unconfirmed: You have to confirm your email address before continuing.
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: Verify email address
|
||||
action_with_app: Confirm and return to %{app}
|
||||
explanation: You have created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email.
|
||||
explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can't login until then. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email.
|
||||
extra_html: Please also check out <a href="%{terms_path}">the rules of the server</a> and <a href="%{policy_path}">our terms of service</a>.
|
||||
subject: 'Mastodon: Confirmation instructions for %{instance}'
|
||||
title: Verify email address
|
||||
email_changed:
|
||||
explanation: 'The email address for your account is being changed to:'
|
||||
extra: If you did not change your email, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Email changed'
|
||||
title: New email address
|
||||
password_change:
|
||||
explanation: The password for your account has been changed.
|
||||
extra: If you did not change your password, it is likely that someone has gained access to your account. Please change your password immediately or contact the server admin if you're locked out of your account.
|
||||
subject: 'Mastodon: Password changed'
|
||||
title: Password changed
|
||||
reconfirmation_instructions:
|
||||
explanation: Confirm the new address to change your email.
|
||||
extra: If this change wasn't initiated by you, please ignore this email. The email address for the Mastodon account won't change until you access the link above.
|
||||
subject: 'Mastodon: Confirm email for %{instance}'
|
||||
title: Verify email address
|
||||
reset_password_instructions:
|
||||
action: Change password
|
||||
explanation: You requested a new password for your account.
|
||||
extra: If you didn't request this, please ignore this email. Your password won't change until you access the link above and create a new one.
|
||||
subject: 'Mastodon: Reset password instructions'
|
||||
title: Password reset
|
||||
two_factor_disabled:
|
||||
explanation: Two-factor authentication for your account has been disabled. Login is now possible using only e-mail address and password.
|
||||
subject: 'Mastodon: Two-factor authentication disabled'
|
||||
title: 2FA disabled
|
||||
two_factor_enabled:
|
||||
explanation: Two-factor authentication has been enabled for your account. A token generated by the paired TOTP app will be required for login.
|
||||
subject: 'Mastodon: Two-factor authentication enabled'
|
||||
title: 2FA enabled
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: The previous recovery codes have been invalidated and new ones generated.
|
||||
subject: 'Mastodon: Two-factor recovery codes re-generated'
|
||||
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 your 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.
|
||||
passwords:
|
||||
no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
|
||||
send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your password has been changed successfully. You are now signed in.
|
||||
updated_not_active: Your password has been changed successfully.
|
||||
registrations:
|
||||
destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon.
|
||||
signed_up: Welcome! You have signed up successfully.
|
||||
signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated.
|
||||
signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked.
|
||||
signed_up_but_pending: A message with a confirmation link has been sent to your email address. After you click the link, we will review your application. You will be notified if it is approved.
|
||||
signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account. Please check your spam folder if you didn't receive this email.
|
||||
update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address. Please check your spam folder if you didn't receive this email.
|
||||
updated: Your account has been updated successfully.
|
||||
sessions:
|
||||
already_signed_out: Signed out successfully.
|
||||
signed_in: Signed in successfully.
|
||||
signed_out: Signed out successfully.
|
||||
unlocks:
|
||||
send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes. Please check your spam folder if you didn't receive this email.
|
||||
unlocked: Your account has been unlocked successfully. Please sign in to continue.
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: was already confirmed, please try signing in
|
||||
confirmation_period_expired: needs to be confirmed within %{period}, please request a new one
|
||||
expired: has expired, please request a new one
|
||||
not_found: not found
|
||||
not_locked: was not locked
|
||||
not_saved:
|
||||
one: '1 error prohibited this %{resource} from being saved:'
|
||||
other: "%{count} errors prohibited this %{resource} from being saved:"
|
1490
config/locales/dog.yml
Normal file
1490
config/locales/dog.yml
Normal file
File diff suppressed because it is too large
Load diff
154
config/locales/doorkeeper.dog.yml
Normal file
154
config/locales/doorkeeper.dog.yml
Normal file
|
@ -0,0 +1,154 @@
|
|||
---
|
||||
dog:
|
||||
activerecord:
|
||||
attributes:
|
||||
doorkeeper/application:
|
||||
name: Application name
|
||||
redirect_uri: Redirect URI
|
||||
scopes: Scopes
|
||||
website: Application website
|
||||
errors:
|
||||
models:
|
||||
doorkeeper/application:
|
||||
attributes:
|
||||
redirect_uri:
|
||||
fragment_present: cannot contain a fragment.
|
||||
invalid_uri: must be a valid URI.
|
||||
relative_uri: must be an absolute URI.
|
||||
secured_uri: must be an HTTPS/SSL URI.
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
cancel: Cancel
|
||||
destroy: Destroy
|
||||
edit: Edit
|
||||
submit: Submit
|
||||
confirmations:
|
||||
destroy: Are you sure?
|
||||
edit:
|
||||
title: Edit application
|
||||
form:
|
||||
error: Whoops! Check your form for possible errors
|
||||
help:
|
||||
native_redirect_uri: Use %{native_redirect_uri} for local tests
|
||||
redirect_uri: Use one line per URI
|
||||
scopes: Separate scopes with spaces. Leave blank to use the default scopes.
|
||||
index:
|
||||
application: Application
|
||||
callback_url: Callback URL
|
||||
delete: Delete
|
||||
empty: You have no applications.
|
||||
name: Name
|
||||
new: New application
|
||||
scopes: Scopes
|
||||
show: Show
|
||||
title: Your applications
|
||||
new:
|
||||
title: New application
|
||||
show:
|
||||
actions: Actions
|
||||
application_id: Client key
|
||||
callback_urls: Callback URLs
|
||||
scopes: Scopes
|
||||
secret: Client secret
|
||||
title: 'Application: %{name}'
|
||||
authorizations:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
deny: Deny
|
||||
error:
|
||||
title: An error has occurred
|
||||
new:
|
||||
able_to: It will be able to
|
||||
prompt: Application %{client_name} requests access to your account
|
||||
title: Authorization required
|
||||
show:
|
||||
title: Copy this authorization code and paste it to the application.
|
||||
authorized_applications:
|
||||
buttons:
|
||||
revoke: Revoke
|
||||
confirmations:
|
||||
revoke: Are you sure?
|
||||
index:
|
||||
application: Application
|
||||
created_at: Authorized
|
||||
date_format: "%Y-%m-%d %H:%M:%S"
|
||||
scopes: Scopes
|
||||
title: Your authorized applications
|
||||
errors:
|
||||
messages:
|
||||
access_denied: The resource owner or authorization server denied the request.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
|
||||
invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
|
||||
invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
|
||||
invalid_redirect_uri: The redirect uri included is not valid.
|
||||
invalid_request:
|
||||
missing_param: 'Missing required parameter: %{value}.'
|
||||
request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
|
||||
unknown: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
|
||||
invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
|
||||
invalid_scope: The requested scope is invalid, unknown, or malformed.
|
||||
invalid_token:
|
||||
expired: The access token expired
|
||||
revoked: The access token was revoked
|
||||
unknown: The access token is invalid
|
||||
resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
|
||||
server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request.
|
||||
temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
|
||||
unauthorized_client: The client is not authorized to perform this request using this method.
|
||||
unsupported_grant_type: The authorization grant type is not supported by the authorization server.
|
||||
unsupported_response_type: The authorization server does not support this response type.
|
||||
flash:
|
||||
applications:
|
||||
create:
|
||||
notice: Application created.
|
||||
destroy:
|
||||
notice: Application deleted.
|
||||
update:
|
||||
notice: Application updated.
|
||||
authorized_applications:
|
||||
destroy:
|
||||
notice: Application revoked.
|
||||
layouts:
|
||||
admin:
|
||||
nav:
|
||||
applications: Applications
|
||||
oauth2_provider: OAuth2 Provider
|
||||
application:
|
||||
title: OAuth authorization required
|
||||
scopes:
|
||||
admin:read: read all data on the server
|
||||
admin:read:accounts: read sensitive information of all accounts
|
||||
admin:read:reports: read sensitive information of all reports and reported accounts
|
||||
admin:write: modify all data on the server
|
||||
admin:write:accounts: perform moderation actions on accounts
|
||||
admin:write:reports: perform moderation actions on reports
|
||||
follow: modify account relationships
|
||||
push: receive your push notifications
|
||||
read: read all your account's data
|
||||
read:accounts: see accounts information
|
||||
read:blocks: see your blocks
|
||||
read:bookmarks: see your bookmarks
|
||||
read:favourites: see your favourites
|
||||
read:filters: see your filters
|
||||
read:follows: see your joined packs
|
||||
read:lists: see your lists
|
||||
read:mutes: see your mutes
|
||||
read:notifications: see your notifications
|
||||
read:reports: see your reports
|
||||
read:search: search on your behalf
|
||||
read:statuses: see all toots
|
||||
write: modify all your account's data
|
||||
write:accounts: modify your profile
|
||||
write:blocks: block accounts and domains
|
||||
write:bookmarks: bookmark toots
|
||||
write:favourites: favourite toots
|
||||
write:filters: create filters
|
||||
write:follows: join packs
|
||||
write:lists: create lists
|
||||
write:media: upload media files
|
||||
write:mutes: mute dogs and conversations
|
||||
write:notifications: clear your notifications
|
||||
write:reports: report other dogs
|
||||
write:statuses: publish toots
|
154
config/locales/doorkeeper.lion.yml
Normal file
154
config/locales/doorkeeper.lion.yml
Normal file
|
@ -0,0 +1,154 @@
|
|||
---
|
||||
lion:
|
||||
activerecord:
|
||||
attributes:
|
||||
doorkeeper/application:
|
||||
name: Application name
|
||||
redirect_uri: Redirect URI
|
||||
scopes: Scopes
|
||||
website: Application website
|
||||
errors:
|
||||
models:
|
||||
doorkeeper/application:
|
||||
attributes:
|
||||
redirect_uri:
|
||||
fragment_present: cannot contain a fragment.
|
||||
invalid_uri: must be a valid URI.
|
||||
relative_uri: must be an absolute URI.
|
||||
secured_uri: must be an HTTPS/SSL URI.
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
cancel: Cancel
|
||||
destroy: Destroy
|
||||
edit: Edit
|
||||
submit: Submit
|
||||
confirmations:
|
||||
destroy: Are you sure?
|
||||
edit:
|
||||
title: Edit application
|
||||
form:
|
||||
error: Whoops! Check your form for possible errors
|
||||
help:
|
||||
native_redirect_uri: Use %{native_redirect_uri} for local tests
|
||||
redirect_uri: Use one line per URI
|
||||
scopes: Separate scopes with spaces. Leave blank to use the default scopes.
|
||||
index:
|
||||
application: Application
|
||||
callback_url: Callback URL
|
||||
delete: Delete
|
||||
empty: You have no applications.
|
||||
name: Name
|
||||
new: New application
|
||||
scopes: Scopes
|
||||
show: Show
|
||||
title: Your applications
|
||||
new:
|
||||
title: New application
|
||||
show:
|
||||
actions: Actions
|
||||
application_id: Client key
|
||||
callback_urls: Callback URLs
|
||||
scopes: Scopes
|
||||
secret: Client secret
|
||||
title: 'Application: %{name}'
|
||||
authorizations:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
deny: Deny
|
||||
error:
|
||||
title: An error has occurred
|
||||
new:
|
||||
able_to: It will be able to
|
||||
prompt: Application %{client_name} requests access to your account
|
||||
title: Authorization required
|
||||
show:
|
||||
title: Copy this authorization code and paste it to the application.
|
||||
authorized_applications:
|
||||
buttons:
|
||||
revoke: Revoke
|
||||
confirmations:
|
||||
revoke: Are you sure?
|
||||
index:
|
||||
application: Application
|
||||
created_at: Authorized
|
||||
date_format: "%Y-%m-%d %H:%M:%S"
|
||||
scopes: Scopes
|
||||
title: Your authorized applications
|
||||
errors:
|
||||
messages:
|
||||
access_denied: The resource owner or authorization server denied the request.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
|
||||
invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
|
||||
invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
|
||||
invalid_redirect_uri: The redirect uri included is not valid.
|
||||
invalid_request:
|
||||
missing_param: 'Missing required parameter: %{value}.'
|
||||
request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
|
||||
unknown: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
|
||||
invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
|
||||
invalid_scope: The requested scope is invalid, unknown, or malformed.
|
||||
invalid_token:
|
||||
expired: The access token expired
|
||||
revoked: The access token was revoked
|
||||
unknown: The access token is invalid
|
||||
resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
|
||||
server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request.
|
||||
temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
|
||||
unauthorized_client: The client is not authorized to perform this request using this method.
|
||||
unsupported_grant_type: The authorization grant type is not supported by the authorization server.
|
||||
unsupported_response_type: The authorization server does not support this response type.
|
||||
flash:
|
||||
applications:
|
||||
create:
|
||||
notice: Application created.
|
||||
destroy:
|
||||
notice: Application deleted.
|
||||
update:
|
||||
notice: Application updated.
|
||||
authorized_applications:
|
||||
destroy:
|
||||
notice: Application revoked.
|
||||
layouts:
|
||||
admin:
|
||||
nav:
|
||||
applications: Applications
|
||||
oauth2_provider: OAuth2 Provider
|
||||
application:
|
||||
title: OAuth authorization required
|
||||
scopes:
|
||||
admin:read: read all data on the server
|
||||
admin:read:accounts: read sensitive information of all accounts
|
||||
admin:read:reports: read sensitive information of all reports and reported accounts
|
||||
admin:write: modify all data on the server
|
||||
admin:write:accounts: perform moderation actions on accounts
|
||||
admin:write:reports: perform moderation actions on reports
|
||||
follow: modify account relationships
|
||||
push: receive your push notifications
|
||||
read: read all your account's data
|
||||
read:accounts: see accounts information
|
||||
read:blocks: see your blocks
|
||||
read:bookmarks: see your bookmarks
|
||||
read:favourites: see your favourites
|
||||
read:filters: see your filters
|
||||
read:follows: see your joined prides
|
||||
read:lists: see your lists
|
||||
read:mutes: see your mutes
|
||||
read:notifications: see your notifications
|
||||
read:reports: see your reports
|
||||
read:search: search on your behalf
|
||||
read:statuses: see all toots
|
||||
write: modify all your account's data
|
||||
write:accounts: modify your profile
|
||||
write:blocks: block accounts and domains
|
||||
write:bookmarks: bookmark toots
|
||||
write:favourites: favourite toots
|
||||
write:filters: create filters
|
||||
write:follows: join prides
|
||||
write:lists: create lists
|
||||
write:media: upload media files
|
||||
write:mutes: mute lions and conversations
|
||||
write:notifications: clear your notifications
|
||||
write:reports: report other lions
|
||||
write:statuses: publish toots
|
154
config/locales/doorkeeper.squeak.yml
Normal file
154
config/locales/doorkeeper.squeak.yml
Normal file
|
@ -0,0 +1,154 @@
|
|||
---
|
||||
squeak:
|
||||
activerecord:
|
||||
attributes:
|
||||
doorkeeper/application:
|
||||
name: Application name
|
||||
redirect_uri: Redirect URI
|
||||
scopes: Scopes
|
||||
website: Application website
|
||||
errors:
|
||||
models:
|
||||
doorkeeper/application:
|
||||
attributes:
|
||||
redirect_uri:
|
||||
fragment_present: cannot contain a fragment.
|
||||
invalid_uri: must be a valid URI.
|
||||
relative_uri: must be an absolute URI.
|
||||
secured_uri: must be an HTTPS/SSL URI.
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
cancel: Cancel
|
||||
destroy: Destroy
|
||||
edit: Edit
|
||||
submit: Submit
|
||||
confirmations:
|
||||
destroy: Are you sure?
|
||||
edit:
|
||||
title: Edit application
|
||||
form:
|
||||
error: Whoops! Check your form for possible errors
|
||||
help:
|
||||
native_redirect_uri: Use %{native_redirect_uri} for local tests
|
||||
redirect_uri: Use one line per URI
|
||||
scopes: Separate scopes with spaces. Leave blank to use the default scopes.
|
||||
index:
|
||||
application: Application
|
||||
callback_url: Callback URL
|
||||
delete: Delete
|
||||
empty: You have no applications.
|
||||
name: Name
|
||||
new: New application
|
||||
scopes: Scopes
|
||||
show: Show
|
||||
title: Your applications
|
||||
new:
|
||||
title: New application
|
||||
show:
|
||||
actions: Actions
|
||||
application_id: Client key
|
||||
callback_urls: Callback URLs
|
||||
scopes: Scopes
|
||||
secret: Client secret
|
||||
title: 'Application: %{name}'
|
||||
authorizations:
|
||||
buttons:
|
||||
authorize: Authorize
|
||||
deny: Deny
|
||||
error:
|
||||
title: An error has occurred
|
||||
new:
|
||||
able_to: It will be able to
|
||||
prompt: Application %{client_name} requests access to your account
|
||||
title: Authorization required
|
||||
show:
|
||||
title: Copy this authorization code and paste it to the application.
|
||||
authorized_applications:
|
||||
buttons:
|
||||
revoke: Revoke
|
||||
confirmations:
|
||||
revoke: Are you sure?
|
||||
index:
|
||||
application: Application
|
||||
created_at: Authorized
|
||||
date_format: "%Y-%m-%d %H:%M:%S"
|
||||
scopes: Scopes
|
||||
title: Your authorized applications
|
||||
errors:
|
||||
messages:
|
||||
access_denied: The resource owner or authorization server denied the request.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
|
||||
invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
|
||||
invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
|
||||
invalid_redirect_uri: The redirect uri included is not valid.
|
||||
invalid_request:
|
||||
missing_param: 'Missing required parameter: %{value}.'
|
||||
request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
|
||||
unknown: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
|
||||
invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
|
||||
invalid_scope: The requested scope is invalid, unknown, or malformed.
|
||||
invalid_token:
|
||||
expired: The access token expired
|
||||
revoked: The access token was revoked
|
||||
unknown: The access token is invalid
|
||||
resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
|
||||
server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request.
|
||||
temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
|
||||
unauthorized_client: The client is not authorized to perform this request using this method.
|
||||
unsupported_grant_type: The authorization grant type is not supported by the authorization server.
|
||||
unsupported_response_type: The authorization server does not support this response type.
|
||||
flash:
|
||||
applications:
|
||||
create:
|
||||
notice: Application created.
|
||||
destroy:
|
||||
notice: Application deleted.
|
||||
update:
|
||||
notice: Application updated.
|
||||
authorized_applications:
|
||||
destroy:
|
||||
notice: Application revoked.
|
||||
layouts:
|
||||
admin:
|
||||
nav:
|
||||
applications: Applications
|
||||
oauth2_provider: OAuth2 Provider
|
||||
application:
|
||||
title: OAuth authorization required
|
||||
scopes:
|
||||
admin:read: read all data on the server
|
||||
admin:read:accounts: read sensitive information of all accounts
|
||||
admin:read:reports: read sensitive information of all reports and reported accounts
|
||||
admin:write: modify all data on the server
|
||||
admin:write:accounts: perform moderation actions on accounts
|
||||
admin:write:reports: perform moderation actions on reports
|
||||
follow: modify account relationships
|
||||
push: receive your push notifications
|
||||
read: read all your account's data
|
||||
read:accounts: see accounts information
|
||||
read:blocks: see your blocks
|
||||
read:bookmarks: see your bookmarks
|
||||
read:favourites: see your squeaks
|
||||
read:filters: see your filters
|
||||
read:follows: see your followed blimps
|
||||
read:lists: see your lists
|
||||
read:mutes: see your mutes
|
||||
read:notifications: see your notifications
|
||||
read:reports: see your reports
|
||||
read:search: search on your behalf
|
||||
read:statuses: see all toots
|
||||
write: modify all your account's data
|
||||
write:accounts: modify your profile
|
||||
write:blocks: block accounts and domains
|
||||
write:bookmarks: bookmark statuses
|
||||
write:favourites: squeaked toots
|
||||
write:filters: create filters
|
||||
write:follows: follow blimps
|
||||
write:lists: create lists
|
||||
write:media: upload media files
|
||||
write:mutes: mute blimps and conversations
|
||||
write:notifications: clear your notifications
|
||||
write:reports: report other blimps
|
||||
write:statuses: publish toots
|
1490
config/locales/lion.yml
Normal file
1490
config/locales/lion.yml
Normal file
File diff suppressed because it is too large
Load diff
224
config/locales/simple_form.dog.yml
Normal file
224
config/locales/simple_form.dog.yml
Normal file
|
@ -0,0 +1,224 @@
|
|||
---
|
||||
dog:
|
||||
simple_form:
|
||||
hints:
|
||||
account_alias:
|
||||
acct: Specify the username@domain of the account you want to move from
|
||||
account_migration:
|
||||
acct: Specify the username@domain of the account you want to move to
|
||||
account_warning_preset:
|
||||
text: You can use toot syntax, such as URLs, hashtags and mentions
|
||||
title: Optional. Not visible to the recipient
|
||||
admin_account_action:
|
||||
include_statuses: The dog will see which toots have caused the moderation action or warning
|
||||
send_email_notification: The user will receive an explanation of what happened with their account
|
||||
text_html: Optional. You can use toot syntax. You can <a href="%{path}">add warning presets</a> to save time
|
||||
type_html: Choose what to do with <strong>%{acct}</strong>
|
||||
types:
|
||||
disable: Prevent the user from using their account, but do not delete or hide their contents.
|
||||
none: Use this to send a warning to the user, without triggering any other action.
|
||||
sensitive: Force all this user's media attachments to be flagged as sensitive.
|
||||
silence: Prevent the user from being able to post with public visibility, hide their posts and notifications from people not following them.
|
||||
suspend: Prevent any interaction from or to this account and delete its contents. Revertible within 30 days.
|
||||
warning_preset_id: Optional. You can still add custom text to end of the preset
|
||||
announcement:
|
||||
all_day: When checked, only the dates of the time range will be displayed
|
||||
ends_at: Optional. Announcement will be automatically unpublished at this time
|
||||
scheduled_at: Leave blank to publish the announcement immediately
|
||||
starts_at: Optional. In case your announcement is bound to a specific time range
|
||||
text: You can use toot syntax. Please be mindful of the space the announcement will take up on the user's screen
|
||||
defaults:
|
||||
autofollow: People who sign up through the invite will automatically follow you
|
||||
avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
bot: Signal to others that the account mainly performs automated actions and might not be monitored
|
||||
context: One or multiple contexts where the filter should apply
|
||||
current_password: For security purposes please enter the password of the current account
|
||||
current_username: To confirm, please enter the username of the current account
|
||||
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
|
||||
discoverable: Allow your account to be discovered by strangers through recommendations and other features
|
||||
email: You will be sent a confirmation e-mail
|
||||
fields: You can have up to 4 items displayed as a table on your profile
|
||||
header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
inbox_url: Copy the URL from the frontpage of the relay you want to use
|
||||
irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
|
||||
locale: The language of the user interface, e-mails and push notifications
|
||||
locked: Manually control who can follow you by approving follow requests
|
||||
password: Use at least 8 characters
|
||||
phrase: Will be matched regardless of casing in text or content warning of a toot
|
||||
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
|
||||
setting_aggregate_reblogs: Do not show new awoos for toots that have been recently awooed (only affects newly-received awoos)
|
||||
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_hide_network: Who you follow and who follows you will not be shown on your profile
|
||||
setting_noindex: Affects your public profile and toot pages
|
||||
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
|
||||
setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
|
||||
setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
|
||||
username: Your username will be unique on %{domain}
|
||||
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
|
||||
domain_allow:
|
||||
domain: This domain will be able to fetch data from this server and incoming data from it will be processed and stored
|
||||
email_domain_block:
|
||||
domain: This can be the domain name that shows up in the e-mail address, the MX record that domain resolves to, or IP of the server that MX record resolves to. Those will be checked upon user sign-up and the sign-up will be rejected.
|
||||
with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blacklisted
|
||||
featured_tag:
|
||||
name: 'You might want to use one of these:'
|
||||
form_challenge:
|
||||
current_password: You are entering a secure area
|
||||
imports:
|
||||
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
|
||||
rule:
|
||||
text: Describe a rule or requirement for users on this server. Try to keep it short and simple
|
||||
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:
|
||||
chosen_languages: When checked, only toots in selected languages will be displayed in public timelines
|
||||
labels:
|
||||
account:
|
||||
fields:
|
||||
name: Label
|
||||
value: Content
|
||||
account_alias:
|
||||
acct: Handle of the old account
|
||||
account_migration:
|
||||
acct: Handle of the new account
|
||||
account_warning_preset:
|
||||
text: Preset text
|
||||
title: Title
|
||||
admin_account_action:
|
||||
include_statuses: Include reported toots in the e-mail
|
||||
send_email_notification: Notify the user per e-mail
|
||||
text: Custom warning
|
||||
type: Action
|
||||
types:
|
||||
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
|
||||
ends_at: End of event
|
||||
scheduled_at: Schedule publication
|
||||
starts_at: Start of event
|
||||
text: Announcement
|
||||
defaults:
|
||||
autofollow: Invite to follow your account
|
||||
avatar: Avatar
|
||||
bot: This is a bot account
|
||||
chosen_languages: Filter languages
|
||||
confirm_new_password: Confirm new password
|
||||
confirm_password: Confirm password
|
||||
context: Filter contexts
|
||||
current_password: Current password
|
||||
data: Data
|
||||
discoverable: Suggest account to others
|
||||
display_name: Display name
|
||||
email: E-mail address
|
||||
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
|
||||
locked: Require follow requests
|
||||
max_uses: Max number of uses
|
||||
new_password: New password
|
||||
note: Bio
|
||||
otp_attempt: Two-factor code
|
||||
password: Password
|
||||
phrase: Keyword or phrase
|
||||
setting_advanced_layout: Enable advanced web interface
|
||||
setting_aggregate_reblogs: Group awoos in timelines
|
||||
setting_auto_play_gif: Auto-play animated GIFs
|
||||
setting_boost_modal: Show confirmation dialog before awooing
|
||||
setting_crop_images: Crop images in non-expanded toots to 16x9
|
||||
setting_default_language: Posting language
|
||||
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
|
||||
setting_display_media_show_all: Show all
|
||||
setting_expand_spoilers: Always expand toots marked with content warnings
|
||||
setting_hide_network: Hide your network
|
||||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
setting_show_application: Disclose application used to send toots
|
||||
setting_strip_formatting: Strip formatting
|
||||
setting_system_font_ui: Use system's default font
|
||||
setting_theme: Site theme
|
||||
setting_trends: Show today's trends
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
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
|
||||
whole_word: Whole word
|
||||
email_domain_block:
|
||||
with_dns_records: Include MX records and IPs of the domain
|
||||
featured_tag:
|
||||
name: Hashtag
|
||||
interactions:
|
||||
must_be_follower: Block notifications from non-followers
|
||||
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
|
||||
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
|
||||
follow: Someone joined your pack
|
||||
follow_request: Someone requested to join your pack
|
||||
mention: Someone barked at you
|
||||
pending_account: New account needs review
|
||||
reblog: Someone boosted your status
|
||||
report: New report is submitted
|
||||
trending_tag: An unreviewed hashtag is trending
|
||||
rule:
|
||||
text: Rule
|
||||
tag:
|
||||
listable: Allow this hashtag to appear in searches and suggestions
|
||||
name: Hashtag
|
||||
trendable: Allow this hashtag to appear under trends
|
||||
usable: Allow toots to use this hashtag
|
||||
'no': 'No'
|
||||
recommended: Recommended
|
||||
required:
|
||||
mark: "*"
|
||||
text: required
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Use one of your security keys to sign in
|
||||
'yes': 'Yes'
|
|
@ -163,7 +163,8 @@ en:
|
|||
setting_hide_network: Hide your social graph
|
||||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
setting_show_application: Disclose application used to send posts
|
||||
setting_show_application: Disclose application used to send toots
|
||||
setting_strip_formatting: Strip formatting
|
||||
setting_system_font_ui: Use system's default font
|
||||
setting_theme: Site theme
|
||||
setting_trends: Show today's trends
|
||||
|
|
224
config/locales/simple_form.lion.yml
Normal file
224
config/locales/simple_form.lion.yml
Normal file
|
@ -0,0 +1,224 @@
|
|||
---
|
||||
lion:
|
||||
simple_form:
|
||||
hints:
|
||||
account_alias:
|
||||
acct: Specify the username@domain of the account you want to move from
|
||||
account_migration:
|
||||
acct: Specify the username@domain of the account you want to move to
|
||||
account_warning_preset:
|
||||
text: You can use toot syntax, such as URLs, hashtags and mentions
|
||||
title: Optional. Not visible to the recipient
|
||||
admin_account_action:
|
||||
include_statuses: The lion will see which toots have caused the moderation action or warning
|
||||
send_email_notification: The user will receive an explanation of what happened with their account
|
||||
text_html: Optional. You can use toot syntax. You can <a href="%{path}">add warning presets</a> to save time
|
||||
type_html: Choose what to do with <strong>%{acct}</strong>
|
||||
types:
|
||||
disable: Prevent the user from using their account, but do not delete or hide their contents.
|
||||
none: Use this to send a warning to the user, without triggering any other action.
|
||||
sensitive: Force all this user's media attachments to be flagged as sensitive.
|
||||
silence: Prevent the user from being able to post with public visibility, hide their posts and notifications from people not following them.
|
||||
suspend: Prevent any interaction from or to this account and delete its contents. Revertible within 30 days.
|
||||
warning_preset_id: Optional. You can still add custom text to end of the preset
|
||||
announcement:
|
||||
all_day: When checked, only the dates of the time range will be displayed
|
||||
ends_at: Optional. Announcement will be automatically unpublished at this time
|
||||
scheduled_at: Leave blank to publish the announcement immediately
|
||||
starts_at: Optional. In case your announcement is bound to a specific time range
|
||||
text: You can use toot syntax. Please be mindful of the space the announcement will take up on the user's screen
|
||||
defaults:
|
||||
autofollow: People who sign up through the invite will automatically follow you
|
||||
avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
bot: Signal to others that the account mainly performs automated actions and might not be monitored
|
||||
context: One or multiple contexts where the filter should apply
|
||||
current_password: For security purposes please enter the password of the current account
|
||||
current_username: To confirm, please enter the username of the current account
|
||||
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
|
||||
discoverable: Allow your account to be discovered by strangers through recommendations and other features
|
||||
email: You will be sent a confirmation e-mail
|
||||
fields: You can have up to 4 items displayed as a table on your profile
|
||||
header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
inbox_url: Copy the URL from the frontpage of the relay you want to use
|
||||
irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
|
||||
locale: The language of the user interface, e-mails and push notifications
|
||||
locked: Manually control who can follow you by approving follow requests
|
||||
password: Use at least 8 characters
|
||||
phrase: Will be matched regardless of casing in text or content warning of a toot
|
||||
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
|
||||
setting_aggregate_reblogs: Do not show new roars for toots that have been recently roared (only affects newly-received roars)
|
||||
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 media
|
||||
setting_display_media_show_all: Always show media
|
||||
setting_hide_network: Who you follow and who follows you will be hidden on your profile
|
||||
setting_noindex: Affects your public profile and toot pages
|
||||
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
|
||||
setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
|
||||
setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
|
||||
username: Your username will be unique on %{domain}
|
||||
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
|
||||
domain_allow:
|
||||
domain: This domain will be able to fetch data from this server and incoming data from it will be processed and stored
|
||||
email_domain_block:
|
||||
domain: This can be the domain name that shows up in the e-mail address, the MX record that domain resolves to, or IP of the server that MX record resolves to. Those will be checked upon user sign-up and the sign-up will be rejected.
|
||||
with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blacklisted
|
||||
featured_tag:
|
||||
name: 'You might want to use one of these:'
|
||||
form_challenge:
|
||||
current_password: You are entering a secure area
|
||||
imports:
|
||||
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
|
||||
rule:
|
||||
text: Describe a rule or requirement for users on this server. Try to keep it short and simple
|
||||
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:
|
||||
chosen_languages: When checked, only toots in selected languages will be displayed in public timelines
|
||||
labels:
|
||||
account:
|
||||
fields:
|
||||
name: Label
|
||||
value: Content
|
||||
account_alias:
|
||||
acct: Handle of the old account
|
||||
account_migration:
|
||||
acct: Handle of the new account
|
||||
account_warning_preset:
|
||||
text: Preset text
|
||||
title: Title
|
||||
admin_account_action:
|
||||
include_statuses: Include reported toots in the e-mail
|
||||
send_email_notification: Notify the user per e-mail
|
||||
text: Custom warning
|
||||
type: Action
|
||||
types:
|
||||
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
|
||||
ends_at: End of event
|
||||
scheduled_at: Schedule publication
|
||||
starts_at: Start of event
|
||||
text: Announcement
|
||||
defaults:
|
||||
autofollow: Invite to follow your account
|
||||
avatar: Avatar
|
||||
bot: This is a bot account
|
||||
chosen_languages: Filter languages
|
||||
confirm_new_password: Confirm new password
|
||||
confirm_password: Confirm password
|
||||
context: Filter contexts
|
||||
current_password: Current password
|
||||
data: Data
|
||||
discoverable: Suggest account to others
|
||||
display_name: Display name
|
||||
email: E-mail address
|
||||
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
|
||||
locked: Require follow requests
|
||||
max_uses: Max number of uses
|
||||
new_password: New password
|
||||
note: Bio
|
||||
otp_attempt: Two-factor code
|
||||
password: Password
|
||||
phrase: Keyword or phrase
|
||||
setting_advanced_layout: Enable advanced web interface
|
||||
setting_aggregate_reblogs: Group roars in timelines
|
||||
setting_auto_play_gif: Auto-play animated GIFs
|
||||
setting_boost_modal: Show confirmation dialog before roaring
|
||||
setting_crop_images: Crop images in non-expanded toots to 16x9
|
||||
setting_default_language: Posting language
|
||||
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
|
||||
setting_display_media_show_all: Show all
|
||||
setting_expand_spoilers: Always expand toots marked with content warnings
|
||||
setting_hide_network: Hide your social graph
|
||||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
setting_show_application: Disclose application used to send toots
|
||||
setting_strip_formatting: Strip formatting
|
||||
setting_system_font_ui: Use system's default font
|
||||
setting_theme: Site theme
|
||||
setting_trends: Show today's trends
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
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
|
||||
whole_word: Whole word
|
||||
email_domain_block:
|
||||
with_dns_records: Include MX records and IPs of the domain
|
||||
featured_tag:
|
||||
name: Hashtag
|
||||
interactions:
|
||||
must_be_follower: Block notifications from non-followers
|
||||
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
|
||||
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
|
||||
follow: Someone joined your pride
|
||||
follow_request: Someone requested to join your pride
|
||||
mention: Someone meowed at you
|
||||
pending_account: New account needs review
|
||||
reblog: Someone boosted your toot
|
||||
report: New report is submitted
|
||||
trending_tag: An unreviewed hashtag is trending
|
||||
rule:
|
||||
text: Rule
|
||||
tag:
|
||||
listable: Allow this hashtag to appear in searches and suggestions
|
||||
name: Hashtag
|
||||
trendable: Allow this hashtag to appear under trends
|
||||
usable: Allow toots to use this hashtag
|
||||
'no': 'No'
|
||||
recommended: Recommended
|
||||
required:
|
||||
mark: "*"
|
||||
text: required
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Use one of your security keys to sign in
|
||||
'yes': 'Yes'
|
224
config/locales/simple_form.squeak.yml
Normal file
224
config/locales/simple_form.squeak.yml
Normal file
|
@ -0,0 +1,224 @@
|
|||
---
|
||||
squeak:
|
||||
simple_form:
|
||||
hints:
|
||||
account_alias:
|
||||
acct: Specify the username@domain of the account you want to move from
|
||||
account_migration:
|
||||
acct: Specify the username@domain of the account you want to move to
|
||||
account_warning_preset:
|
||||
text: You can use toot syntax, such as URLs, hashtags and mentions
|
||||
title: Optional. Not visible to the recipient
|
||||
admin_account_action:
|
||||
include_statuses: The user will see which toots have caused the moderation action or warning
|
||||
send_email_notification: The user will receive an explanation of what happened with their account
|
||||
text_html: Optional. You can use toot syntax. You can <a href="%{path}">add warning presets</a> to save time
|
||||
type_html: Choose what to do with <strong>%{acct}</strong>
|
||||
types:
|
||||
disable: Prevent the user from using their account, but do not delete or hide their contents.
|
||||
none: Use this to send a warning to the user, without triggering any other action.
|
||||
sensitive: Force all this user's media attachments to be flagged as sensitive.
|
||||
silence: Prevent the user from being able to post with public visibility, hide their posts and notifications from people not following them.
|
||||
suspend: Prevent any interaction from or to this account and delete its contents. Revertible within 30 days.
|
||||
warning_preset_id: Optional. You can still add custom text to end of the preset
|
||||
announcement:
|
||||
all_day: When checked, only the dates of the time range will be displayed
|
||||
ends_at: Optional. Announcement will be automatically unpublished at this time
|
||||
scheduled_at: Leave blank to publish the announcement immediately
|
||||
starts_at: Optional. In case your announcement is bound to a specific time range
|
||||
text: You can use toot syntax. Please be mindful of the space the announcement will take up on the user's screen
|
||||
defaults:
|
||||
autofollow: People who sign up through the invite will automatically follow you
|
||||
avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
bot: This account mainly performs automated actions and might not be monitored
|
||||
context: One or multiple contexts where the filter should apply
|
||||
current_password: For security purposes please enter the password of the current account
|
||||
current_username: To confirm, please enter the username of the current account
|
||||
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
|
||||
discoverable: Allow your account to be discovered by strangers through recommendations and other features
|
||||
email: You will be sent a confirmation e-mail
|
||||
fields: You can have up to 4 items displayed as a table on your profile
|
||||
header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
|
||||
inbox_url: Copy the URL from the frontpage of the relay you want to use
|
||||
irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
|
||||
locale: The language of the user interface, e-mails and push notifications
|
||||
locked: Manually control who can follow you by approving follow requests
|
||||
password: Use at least 8 characters
|
||||
phrase: Will be matched regardless of casing in text or content warning of a toot
|
||||
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
|
||||
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 media
|
||||
setting_display_media_show_all: Always show media
|
||||
setting_hide_network: Who you follow and who follows you will be hidden on your profile
|
||||
setting_noindex: Affects your public profile and toot pages
|
||||
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
|
||||
setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
|
||||
setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
|
||||
username: Your username will be unique on %{domain}
|
||||
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
|
||||
domain_allow:
|
||||
domain: This domain will be able to fetch data from this server and incoming data from it will be processed and stored
|
||||
email_domain_block:
|
||||
domain: This can be the domain name that shows up in the e-mail address, the MX record that domain resolves to, or IP of the server that MX record resolves to. Those will be checked upon user sign-up and the sign-up will be rejected.
|
||||
with_dns_records: An attempt to resolve the given domain's DNS records will be made and the results will also be blacklisted
|
||||
featured_tag:
|
||||
name: 'You might want to use one of these:'
|
||||
form_challenge:
|
||||
current_password: You are entering a secure area
|
||||
imports:
|
||||
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
|
||||
rule:
|
||||
text: Describe a rule or requirement for users on this server. Try to keep it short and simple
|
||||
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:
|
||||
chosen_languages: When checked, only toots in selected languages will be displayed in public timelines
|
||||
labels:
|
||||
account:
|
||||
fields:
|
||||
name: Label
|
||||
value: Content
|
||||
account_alias:
|
||||
acct: Handle of the old account
|
||||
account_migration:
|
||||
acct: Handle of the new account
|
||||
account_warning_preset:
|
||||
text: Preset text
|
||||
title: Title
|
||||
admin_account_action:
|
||||
include_statuses: Include reported toots in the e-mail
|
||||
send_email_notification: Notify the user per e-mail
|
||||
text: Custom warning
|
||||
type: Action
|
||||
types:
|
||||
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
|
||||
ends_at: End of event
|
||||
scheduled_at: Schedule publication
|
||||
starts_at: Start of event
|
||||
text: Announcement
|
||||
defaults:
|
||||
autofollow: Invite to follow your account
|
||||
avatar: Avatar
|
||||
bot: This is a bot account
|
||||
chosen_languages: Filter languages
|
||||
confirm_new_password: Confirm new password
|
||||
confirm_password: Confirm password
|
||||
context: Filter contexts
|
||||
current_password: Current password
|
||||
data: Data
|
||||
discoverable: List this account on the directory
|
||||
display_name: Display name
|
||||
email: E-mail address
|
||||
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
|
||||
locked: Lock account
|
||||
max_uses: Max number of uses
|
||||
new_password: New password
|
||||
note: Bio
|
||||
otp_attempt: Two-factor code
|
||||
password: Password
|
||||
phrase: Keyword or phrase
|
||||
setting_advanced_layout: Enable advanced web interface
|
||||
setting_aggregate_reblogs: Group pumps in timelines
|
||||
setting_auto_play_gif: Auto-play animated GIFs
|
||||
setting_boost_modal: Show confirmation dialog before pumping
|
||||
setting_crop_images: Crop images in non-expanded toots to 16x9
|
||||
setting_default_language: Posting language
|
||||
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
|
||||
setting_display_media_show_all: Show all
|
||||
setting_expand_spoilers: Always expand toots marked with content warnings
|
||||
setting_hide_network: Hide your social graph
|
||||
setting_noindex: Opt-out of search engine indexing
|
||||
setting_reduce_motion: Reduce motion in animations
|
||||
setting_show_application: Disclose application used to send toots
|
||||
setting_strip_formatting: Strip formatting
|
||||
setting_system_font_ui: Use system's default font
|
||||
setting_theme: Site theme
|
||||
setting_trends: Show today's trends
|
||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||
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
|
||||
whole_word: Whole word
|
||||
email_domain_block:
|
||||
with_dns_records: Include MX records and IPs of the domain
|
||||
featured_tag:
|
||||
name: Hashtag
|
||||
interactions:
|
||||
must_be_follower: Block notifications from non-followers
|
||||
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: 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 toot
|
||||
follow: Someone followed you
|
||||
follow_request: Someone requested to follow you
|
||||
mention: Someone mentioned you
|
||||
pending_account: New account needs review
|
||||
reblog: Someone pumped your toot
|
||||
report: New report is submitted
|
||||
trending_tag: An unreviewed hashtag is trending
|
||||
rule:
|
||||
text: Rule
|
||||
tag:
|
||||
listable: Allow this hashtag to appear in searches and suggestions
|
||||
name: Hashtag
|
||||
trendable: Allow this hashtag to appear under trends
|
||||
usable: Allow toots to use this hashtag
|
||||
'no': 'No'
|
||||
recommended: Recommended
|
||||
required:
|
||||
mark: "*"
|
||||
text: required
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Use one of your security keys to sign in
|
||||
'yes': 'Yes'
|
1490
config/locales/squeak.yml
Normal file
1490
config/locales/squeak.yml
Normal file
File diff suppressed because it is too large
Load diff
|
@ -30,13 +30,14 @@ defaults: &defaults
|
|||
show_application: true
|
||||
system_font_ui: false
|
||||
noindex: false
|
||||
theme: 'default'
|
||||
theme: 'mastodon'
|
||||
aggregate_reblogs: true
|
||||
advanced_layout: false
|
||||
use_blurhash: true
|
||||
use_pending_items: false
|
||||
trends: true
|
||||
trendable_by_default: false
|
||||
strip_formatting: 'none'
|
||||
crop_images: true
|
||||
notification_emails:
|
||||
follow: false
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
default: styles/application.scss
|
||||
contrast: styles/contrast.scss
|
||||
contrast-wider: styles/contrast-wider.scss
|
||||
pop: styles/pop.scss
|
||||
pop-wider: styles/pop-wider.scss
|
||||
pop-light: styles/pop-light.scss
|
||||
pop-light-wider: styles/pop-light-wider.scss
|
||||
mastodon: styles/application.scss
|
||||
mastodon-wider: styles/mastodon-wider.scss
|
||||
mastodon-light: styles/mastodon-light.scss
|
||||
mastodon-light-wider: styles/mastodon-light-wider.scss
|
||||
werefox: styles/werefox.scss
|
||||
werefox-wider: styles/werefox-wider.scss
|
||||
|
|
|
@ -21,7 +21,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
def suffix
|
||||
''
|
||||
'-asonix-changes'
|
||||
end
|
||||
|
||||
def to_a
|
||||
|
@ -33,11 +33,11 @@ module Mastodon
|
|||
end
|
||||
|
||||
def repository
|
||||
ENV.fetch('GITHUB_REPOSITORY', 'mastodon/mastodon')
|
||||
ENV.fetch('GITHUB_REPOSITORY', 'asonix/mastodon')
|
||||
end
|
||||
|
||||
def source_base_url
|
||||
ENV.fetch('SOURCE_BASE_URL', "https://github.com/#{repository}")
|
||||
ENV.fetch('SOURCE_BASE_URL', "https://git.asonix.dog/#{repository}")
|
||||
end
|
||||
|
||||
# specify git tag or commit hash here
|
||||
|
|
|
@ -71,11 +71,13 @@ class Sanitize
|
|||
end
|
||||
|
||||
MASTODON_STRICT ||= freeze_config(
|
||||
elements: %w(p br span a),
|
||||
elements: %w(p br span a abbr del pre blockquote code b strong u sub i em h1 h2 h3 h4 h5 ul ol li),
|
||||
|
||||
attributes: {
|
||||
'a' => %w(href rel class),
|
||||
'span' => %w(class),
|
||||
'a' => %w(href rel class title),
|
||||
'span' => %w(class),
|
||||
'abbr' => %w(title),
|
||||
'blockquote' => %w(cite),
|
||||
},
|
||||
|
||||
add_attributes: {
|
||||
|
@ -85,7 +87,10 @@ class Sanitize
|
|||
},
|
||||
},
|
||||
|
||||
protocols: {},
|
||||
protocols: {
|
||||
'a' => { 'href' => HTTP_PROTOCOLS },
|
||||
'blockquote' => { 'cite' => HTTP_PROTOCOLS },
|
||||
},
|
||||
|
||||
transformers: [
|
||||
CLASS_WHITELIST_TRANSFORMER,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue