Conflicts: .travis.yml Gemfile.lock README.md app/controllers/settings/follower_domains_controller.rb app/controllers/statuses_controller.rb app/javascript/mastodon/locales/ja.json app/lib/feed_manager.rb app/models/media_attachment.rb app/models/mute.rb app/models/status.rb app/services/mute_service.rb app/views/home/index.html.haml app/views/stream_entries/_simple_status.html.haml config/locales/ca.yml config/locales/en.yml config/locales/es.yml config/locales/fr.yml config/locales/nl.yml config/locales/pl.yml config/locales/pt-BR.yml config/themes.ymlclosed-social-glitch-2
@ -0,0 +1,191 @@ | |||
version: 2 | |||
aliases: | |||
- &defaults | |||
docker: | |||
- image: circleci/ruby:2.5.1-stretch-node | |||
environment: &ruby_environment | |||
BUNDLE_APP_CONFIG: ./.bundle/ | |||
DB_HOST: localhost | |||
DB_USER: root | |||
RAILS_ENV: test | |||
PARALLEL_TEST_PROCESSORS: 4 | |||
ALLOW_NOPAM: true | |||
working_directory: ~/projects/mastodon/ | |||
- &attach_workspace | |||
attach_workspace: | |||
at: ~/projects/ | |||
- &persist_to_workspace | |||
persist_to_workspace: | |||
root: ~/projects/ | |||
paths: | |||
- ./mastodon/ | |||
- &restore_ruby_dependencies | |||
restore_cache: | |||
keys: | |||
- v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
- v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}- | |||
- v2-ruby-dependencies- | |||
- &install_steps | |||
steps: | |||
- checkout | |||
- *attach_workspace | |||
- restore_cache: | |||
keys: | |||
- v1-node-dependencies-{{ checksum "yarn.lock" }} | |||
- v1-node-dependencies- | |||
- run: yarn install --frozen-lockfile | |||
- save_cache: | |||
key: v1-node-dependencies-{{ checksum "yarn.lock" }} | |||
paths: | |||
- ./node_modules/ | |||
- *persist_to_workspace | |||
- &install_system_dependencies | |||
run: | |||
name: Install system dependencies | |||
command: | | |||
sudo apt-get update | |||
sudo apt-get install -y libicu-dev libidn11-dev libprotobuf-dev protobuf-compiler | |||
- &install_ruby_dependencies | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- *restore_ruby_dependencies | |||
- run: bundle install --clean --jobs 16 --path ./vendor/bundle/ --retry 3 --with pam_authentication --without development production | |||
- save_cache: | |||
key: v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
paths: | |||
- ./.bundle/ | |||
- ./vendor/bundle/ | |||
- &test_steps | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: sudo apt-get install -y ffmpeg | |||
- run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- *restore_ruby_dependencies | |||
- restore_cache: | |||
keys: | |||
- precompiled-assets-{{ .Branch }}-{{ .Revision }} | |||
- precompiled-assets-{{ .Branch }}- | |||
- precompiled-assets- | |||
- run: | |||
name: Prepare Tests | |||
command: ./bin/rails parallel:create parallel:load_schema parallel:prepare | |||
- run: | |||
name: Run Tests | |||
command: bundle exec parallel_test ./spec/ --group-by filesize --type rspec | |||
jobs: | |||
install: | |||
<<: *defaults | |||
<<: *install_steps | |||
install-ruby2.5: | |||
<<: *defaults | |||
<<: *install_ruby_dependencies | |||
install-ruby2.4: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.4.4-stretch-node | |||
environment: *ruby_environment | |||
<<: *install_ruby_dependencies | |||
build: | |||
<<: *defaults | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- *restore_ruby_dependencies | |||
- run: ./bin/rails assets:precompile | |||
- save_cache: | |||
key: precompiled-assets-{{ .Branch }}-{{ .Revision }} | |||
paths: | |||
- ./public/assets | |||
- ./public/packs-test/ | |||
test-ruby2.5: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.5.1-stretch-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.3-alpine | |||
environment: | |||
POSTGRES_USER: root | |||
- image: circleci/redis:4.0.9-alpine | |||
<<: *test_steps | |||
test-ruby2.4: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.4.4-stretch-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.3-alpine | |||
environment: | |||
POSTGRES_USER: root | |||
- image: circleci/redis:4.0.9-alpine | |||
<<: *test_steps | |||
test-webui: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/node:8.11.1-stretch | |||
steps: | |||
- *attach_workspace | |||
- run: yarn test:jest | |||
check-i18n: | |||
<<: *defaults | |||
steps: | |||
- *attach_workspace | |||
- run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- *restore_ruby_dependencies | |||
- run: bundle exec i18n-tasks check-normalized | |||
- run: bundle exec i18n-tasks unused | |||
workflows: | |||
version: 2 | |||
build-and-test: | |||
jobs: | |||
- install | |||
- install-ruby2.5: | |||
requires: | |||
- install | |||
- install-ruby2.4: | |||
requires: | |||
- install | |||
- build: | |||
requires: | |||
- install-ruby2.5 | |||
- test-ruby2.5: | |||
requires: | |||
- install-ruby2.5 | |||
- build | |||
- test-ruby2.4: | |||
requires: | |||
- install-ruby2.4 | |||
- build | |||
- test-webui: | |||
requires: | |||
- install | |||
- check-i18n: | |||
requires: | |||
- install-ruby2.5 |
@ -1,4 +1,20 @@ | |||
# frozen_string_literal: true | |||
module Admin::AccountModerationNotesHelper | |||
def admin_account_link_to(account) | |||
link_to admin_account_path(account.id), class: name_tag_classes(account) do | |||
safe_join([ | |||
image_tag(account.avatar.url, width: 15, height: 15, alt: display_name(account), class: 'avatar'), | |||
content_tag(:span, account.acct, class: 'username'), | |||
], ' ') | |||
end | |||
end | |||
private | |||
def name_tag_classes(account) | |||
classes = ['name-tag'] | |||
classes << 'suspended' if account.suspended? | |||
classes.join(' ') | |||
end | |||
end |
@ -0,0 +1,296 @@ | |||
{ | |||
"account.block": "Απόκλεισε τον/την @{name}", | |||
"account.block_domain": "Απόκρυψε τα πάντα από τον/την", | |||
"account.blocked": "Αποκλεισμένος/η", | |||
"account.direct": "Απευθείας μήνυμα προς @{name}", | |||
"account.disclaimer_full": "Οι παρακάτω πληροφορίες μπορει να μην αντανακλούν το προφίλ του χρήστη επαρκως.", | |||
"account.domain_blocked": "Domain hidden", | |||
"account.edit_profile": "Επεξεργάσου το προφίλ", | |||
"account.follow": "Ακολούθησε", | |||
"account.followers": "Ακόλουθοι", | |||
"account.follows": "Ακολουθεί", | |||
"account.follows_you": "Σε ακολουθεί", | |||
"account.hide_reblogs": "Απόκρυψη προωθήσεων από τον/την @{name}", | |||
"account.media": "Πολυμέσα", | |||
"account.mention": "Ανέφερε τον/την @{name}", | |||
"account.moved_to": "{name} μετακόμισε στο:", | |||
"account.mute": "Σώπασε τον/την @{name}", | |||
"account.mute_notifications": "Σώπασε τις ειδοποιήσεις από τον/την @{name}", | |||
"account.muted": "Αποσιωπημένος/η", | |||
"account.posts": "Τουτ", | |||
"account.posts_with_replies": "Τουτ και απαντήσεις", | |||
"account.report": "Ανέφερε τον/την @{name}", | |||
"account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα ακολούθησης", | |||
"account.share": "Μοιράσου το προφίλ του/της @{name}", | |||
"account.show_reblogs": "Δείξε τις προωθήσεις του/της @{name}", | |||
"account.unblock": "Unblock @{name}", | |||
"account.unblock_domain": "Αποκάλυψε το {domain}", | |||
"account.unfollow": "Unfollow", | |||
"account.unmute": "Unmute @{name}", | |||
"account.unmute_notifications": "Unmute notifications from @{name}", | |||
"account.view_full_profile": "Δες το πλήρες προφίλ", | |||
"alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.", | |||
"alert.unexpected.title": "Εεπ!", | |||
"boost_modal.combo": "You can press {combo} to skip this next time", | |||
"bundle_column_error.body": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", | |||
"bundle_column_error.retry": "Δοκίμασε ξανά", | |||
"bundle_column_error.title": "Σφάλμα δικτύου", | |||
"bundle_modal_error.close": "Κλείσε", | |||
"bundle_modal_error.message": "Κάτι πήγε στραβά ενώ φορτωνόταν αυτό το στοιχείο.", | |||
"bundle_modal_error.retry": "Δοκίμασε ξανά", | |||
"column.blocks": "Αποκλεισμένοι χρήστες", | |||
"column.community": "Τοπική ροή", | |||
"column.direct": "Απευθείας μηνύματα", | |||
"column.domain_blocks": "Hidden domains", | |||
"column.favourites": "Αγαπημένα", | |||
"column.follow_requests": "Αιτήματα παρακολούθησης", | |||
"column.home": "Αρχική", | |||
"column.lists": "Λίστες", | |||
"column.mutes": "Αποσιωπημένοι χρήστες", | |||
"column.notifications": "Ειδοποιήσεις", | |||
"column.pins": "Καρφιτσωμένα τουτ", | |||
"column.public": "Ομοσπονδιακή ροή", | |||
"column_back_button.label": "Πίσω", | |||
"column_header.hide_settings": "Απόκρυψη ρυθμίσεων", | |||
"column_header.moveLeft_settings": "Μεταφορά κολώνας αριστερά", | |||
"column_header.moveRight_settings": "Μεταφορά κολώνας δεξιά", | |||
"column_header.pin": "Καρφίτσωμα", | |||
"column_header.show_settings": "Εμφάνιση ρυθμίσεων", | |||
"column_header.unpin": "Ξεκαρφίτσωμα", | |||
"column_subheading.navigation": "Πλοήγηση", | |||
"column_subheading.settings": "Ρυθμίσεις", | |||
"compose_form.direct_message_warning": "Αυτό το τουτ θα εμφανίζεται μόνο σε όλους τους αναφερόμενους χρήστες.", | |||
"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": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.", | |||
"compose_form.lock_disclaimer.lock": "κλειδωμένος", | |||
"compose_form.placeholder": "Τι σκέφτεσαι;", | |||
"compose_form.publish": "Τουτ", | |||
"compose_form.publish_loud": "{publish}!", | |||
"compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο", | |||
"compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο", | |||
"compose_form.spoiler.marked": "Κείμενο κρυμμένο πίσω από προειδοποίηση", | |||
"compose_form.spoiler.unmarked": "Κείμενο μη κρυμμένο", | |||
"compose_form.spoiler_placeholder": "Γράψε την προειδοποίησή σου εδώ", | |||
"confirmation_modal.cancel": "Άκυρο", | |||
"confirmations.block.confirm": "Απόκλεισε", | |||
"confirmations.block.message": "Σίγουρα θες να αποκλείσεις τον/την {name};", | |||
"confirmations.delete.confirm": "Διέγραψε", | |||
"confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή την κατάσταση;", | |||
"confirmations.delete_list.confirm": "Διέγραψε", | |||
"confirmations.delete_list.message": "Σίγουρα θες να διαγράψεις οριστικά αυτή τη λίστα;", | |||
"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.mute.confirm": "Mute", | |||
"confirmations.mute.message": "Are you sure you want to mute {name}?", | |||
"confirmations.unfollow.confirm": "Unfollow", | |||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", | |||
"embed.instructions": "Embed this status 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": "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.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.hashtag": "There is nothing in this hashtag yet.", | |||
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", | |||
"empty_column.home.public_timeline": "the public timeline", | |||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", | |||
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", | |||
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", | |||
"follow_request.authorize": "Authorize", | |||
"follow_request.reject": "Reject", | |||
"getting_started.appsshort": "Apps", | |||
"getting_started.faq": "FAQ", | |||
"getting_started.heading": "Getting started", | |||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", | |||
"getting_started.userguide": "User Guide", | |||
"home.column_settings.advanced": "Advanced", | |||
"home.column_settings.basic": "Basic", | |||
"home.column_settings.filter_regex": "Filter out by regular expressions", | |||
"home.column_settings.show_reblogs": "Show boosts", | |||
"home.column_settings.show_replies": "Show replies", | |||
"home.settings": "Column settings", | |||
"keyboard_shortcuts.back": "to navigate back", | |||
"keyboard_shortcuts.boost": "to boost", | |||
"keyboard_shortcuts.column": "to focus a status in one of the columns", | |||
"keyboard_shortcuts.compose": "to focus the compose textarea", | |||
"keyboard_shortcuts.description": "Description", | |||
"keyboard_shortcuts.down": "to move down in the list", | |||
"keyboard_shortcuts.enter": "to open status", | |||
"keyboard_shortcuts.favourite": "to favourite", | |||
"keyboard_shortcuts.heading": "Keyboard Shortcuts", | |||
"keyboard_shortcuts.hotkey": "Hotkey", | |||
"keyboard_shortcuts.legend": "to display this legend", | |||
"keyboard_shortcuts.mention": "to mention author", | |||
"keyboard_shortcuts.reply": "to reply", | |||
"keyboard_shortcuts.search": "to focus search", | |||
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", | |||
"keyboard_shortcuts.toot": "to start a brand new toot", | |||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", | |||
"keyboard_shortcuts.up": "to move up in the list", | |||
"lightbox.close": "Close", | |||
"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.new.create": "Add list", | |||
"lists.new.title_placeholder": "New list title", | |||
"lists.search": "Search among people you follow", | |||
"lists.subheading": "Your lists", | |||
"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.hide_notifications": "Hide notifications from this user?", | |||
"navigation_bar.blocks": "Blocked users", | |||
"navigation_bar.community_timeline": "Local timeline", | |||
"navigation_bar.direct": "Direct messages", | |||
"navigation_bar.domain_blocks": "Hidden domains", | |||
"navigation_bar.edit_profile": "Edit profile", | |||
"navigation_bar.favourites": "Favourites", | |||
"navigation_bar.follow_requests": "Follow requests", | |||
"navigation_bar.info": "Extended information", | |||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", | |||
"navigation_bar.lists": "Lists", | |||
"navigation_bar.logout": "Logout", | |||
"navigation_bar.mutes": "Muted users", | |||
"navigation_bar.pins": "Pinned toots", | |||
"navigation_bar.preferences": "Preferences", | |||
"navigation_bar.public_timeline": "Federated timeline", | |||
"notification.favourite": "{name} favourited your status", | |||
"notification.follow": "{name} followed you", | |||
"notification.mention": "{name} mentioned you", | |||
"notification.reblog": "{name} boosted your status", | |||
"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": "Favourites:", | |||
"notifications.column_settings.follow": "New followers:", | |||
"notifications.column_settings.mention": "Mentions:", | |||
"notifications.column_settings.push": "Push notifications", | |||
"notifications.column_settings.push_meta": "This device", | |||
"notifications.column_settings.reblog": "Boosts:", | |||
"notifications.column_settings.show": "Show in column", | |||
"notifications.column_settings.sound": "Play sound", | |||
"onboarding.done": "Done", | |||
"onboarding.next": "Next", | |||
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", | |||
"onboarding.page_four.home": "The home timeline shows posts from people you follow.", | |||
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", | |||
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", | |||
"onboarding.page_one.full_handle": "Your full handle", | |||
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", | |||
"onboarding.page_one.welcome": "Welcome to Mastodon!", | |||
"onboarding.page_six.admin": "Your instance's admin is {admin}.", | |||
"onboarding.page_six.almost_done": "Almost done...", | |||
"onboarding.page_six.appetoot": "Bon Appetoot!", | |||
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", | |||
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", | |||
"onboarding.page_six.guidelines": "community guidelines", | |||
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", | |||
"onboarding.page_six.various_app": "mobile apps", | |||
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", | |||
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", | |||
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", | |||
"onboarding.skip": "Skip", | |||
"privacy.change": "Adjust status privacy", | |||
"privacy.direct.long": "Post to mentioned users only", | |||
"privacy.direct.short": "Direct", | |||
"privacy.private.long": "Post to followers only", | |||
"privacy.private.short": "Followers-only", | |||
"privacy.public.long": "Post to public timelines", | |||
"privacy.public.short": "Public", | |||
"privacy.unlisted.long": "Do not show in public timelines", | |||
"privacy.unlisted.short": "Unlisted", | |||
"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", | |||
"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 instance moderators. You can provide an explanation of why you are reporting this account below:", | |||
"report.placeholder": "Additional comments", | |||
"report.submit": "Submit", | |||
"report.target": "Report {target}", | |||
"search.placeholder": "Search", | |||
"search_popout.search_format": "Advanced search format", | |||
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, 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": "user", | |||
"search_results.accounts": "People", | |||
"search_results.hashtags": "Hashtags", | |||
"search_results.statuses": "Toots", | |||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", | |||
"standalone.public_title": "A look inside...", | |||
"status.block": "Block @{name}", | |||
"status.cancel_reblog_private": "Unboost", | |||
"status.cannot_reblog": "This post cannot be boosted", | |||
"status.delete": "Delete", | |||
"status.direct": "Direct message @{name}", | |||
"status.embed": "Embed", | |||
"status.favourite": "Favourite", | |||
"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 status", | |||
"status.pin": "Pin on profile", | |||
"status.pinned": "Pinned toot", | |||
"status.reblog": "Boost", | |||
"status.reblog_private": "Boost to original audience", | |||
"status.reblogged_by": "{name} boosted", | |||
"status.reply": "Reply", | |||
"status.replyAll": "Reply to thread", | |||
"status.report": "Report @{name}", | |||
"status.sensitive_toggle": "Click to view", | |||
"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.unmute_conversation": "Unmute conversation", | |||
"status.unpin": "Unpin from profile", | |||
"tabs_bar.federated_timeline": "Federated", | |||
"tabs_bar.home": "Home", | |||
"tabs_bar.local_timeline": "Local", | |||
"tabs_bar.notifications": "Notifications", | |||
"tabs_bar.search": "Search", | |||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.", | |||
"upload_area.title": "Drag & drop to upload", | |||
"upload_button.label": "Add media", | |||
"upload_form.description": "Describe for the visually impaired", | |||
"upload_form.focus": "Crop", | |||
"upload_form.undo": "Undo", | |||
"upload_progress.label": "Uploading...", | |||
"video.close": "Close video", | |||
"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" | |||
} |
@ -0,0 +1,296 @@ | |||
{ | |||
"account.block": "Blokeatu @{name}", | |||
"account.block_domain": "{domain}(e)ko guztia ezkutatu", | |||
"account.blocked": "Blokeatuta", | |||
"account.direct": "@{name}(e)ri mezu zuzena bidali", | |||
"account.disclaimer_full": "Baliteke beheko informazioak erabiltzailearen profilaren zati bat baino ez erakustea.", | |||
"account.domain_blocked": "Ezkutatutako domeinua", | |||
"account.edit_profile": "Profila aldatu", | |||
"account.follow": "Jarraitu", | |||
"account.followers": "Jarraitzaileak", | |||
"account.follows": "Jarraitzen", | |||
"account.follows_you": "Jarraitzen dizu", | |||
"account.hide_reblogs": "@{name}(e)k sustatutakoak ezkutatu", | |||
"account.media": "Media", | |||
"account.mention": "@{name} aipatu", | |||
"account.moved_to": "{name} hona lekualdatu da:", | |||
"account.mute": "@{name} isilarazi", | |||
"account.mute_notifications": "@{name}(e)ren jakinarazpenak isilarazi", | |||
"account.muted": "Isilarazita", | |||
"account.posts": "Toots", | |||
"account.posts_with_replies": "Toots and replies", | |||
"account.report": "@{name} salatu", | |||
"account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko", | |||
"account.share": "@{name}(e)ren profila elkarbanatu", | |||
"account.show_reblogs": "@{name}(e)k sustatutakoak erakutsi", | |||
"account.unblock": "@{name} desblokeatu", | |||
"account.unblock_domain": "Berriz erakutsi {domain}", | |||
"account.unfollow": "Jarraitzeari utzi", | |||
"account.unmute": "Unmute @{name}", | |||
"account.unmute_notifications": "Unmute notifications from @{name}", | |||
"account.view_full_profile": "View full profile", | |||
"alert.unexpected.message": "An unexpected error occurred.", | |||
"alert.unexpected.title": "Oops!", | |||
"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.community": "Local timeline", | |||
"column.direct": "Direct messages", | |||
"column.domain_blocks": "Hidden domains", | |||
"column.favourites": "Favourites", | |||
"column.follow_requests": "Follow requests", | |||
"column.home": "Home", | |||
"column.lists": "Lists", | |||
"column.mutes": "Muted users", | |||
"column.notifications": "Notifications", | |||
"column.pins": "Pinned toot", | |||
"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.navigation": "Navigation", | |||
"column_subheading.settings": "Settings", | |||
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", | |||
"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 posts.", | |||
"compose_form.lock_disclaimer.lock": "locked", | |||
"compose_form.placeholder": "What is on your mind?", | |||
"compose_form.publish": "Toot", | |||
"compose_form.publish_loud": "{publish}!", | |||
"compose_form.sensitive.marked": "Media is marked as sensitive", | |||
"compose_form.sensitive.unmarked": "Media is not marked as sensitive", | |||
"compose_form.spoiler.marked": "Text is hidden behind warning", | |||
"compose_form.spoiler.unmarked": "Text is not hidden", | |||
"compose_form.spoiler_placeholder": "Write your warning here", | |||
"confirmation_modal.cancel": "Cancel", | |||
"confirmations.block.confirm": "Block", | |||
"confirmations.block.message": "Are you sure you want to block {name}?", | |||
"confirmations.delete.confirm": "Delete", | |||
"confirmations.delete.message": "Are you sure you want to delete this status?", | |||
"confirmations.delete_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.mute.confirm": "Mute", | |||
"confirmations.mute.message": "Are you sure you want to mute {name}?", | |||
"confirmations.unfollow.confirm": "Unfollow", | |||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", | |||
"embed.instructions": "Embed this status 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": "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.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.hashtag": "There is nothing in this hashtag yet.", | |||
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", | |||
"empty_column.home.public_timeline": "the public timeline", | |||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", | |||
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", | |||
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", | |||
"follow_request.authorize": "Authorize", | |||
"follow_request.reject": "Reject", | |||
"getting_started.appsshort": "Apps", | |||
"getting_started.faq": "FAQ", | |||
"getting_started.heading": "Getting started", | |||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", | |||
"getting_started.userguide": "User Guide", | |||
"home.column_settings.advanced": "Advanced", | |||
"home.column_settings.basic": "Basic", | |||
"home.column_settings.filter_regex": "Filter out by regular expressions", | |||
"home.column_settings.show_reblogs": "Show boosts", | |||
"home.column_settings.show_replies": "Show replies", | |||
"home.settings": "Column settings", | |||
"keyboard_shortcuts.back": "to navigate back", | |||
"keyboard_shortcuts.boost": "to boost", | |||
"keyboard_shortcuts.column": "to focus a status in one of the columns", | |||
"keyboard_shortcuts.compose": "to focus the compose textarea", | |||
"keyboard_shortcuts.description": "Description", | |||
"keyboard_shortcuts.down": "to move down in the list", | |||
"keyboard_shortcuts.enter": "to open status", | |||
"keyboard_shortcuts.favourite": "to favourite", | |||
"keyboard_shortcuts.heading": "Keyboard Shortcuts", | |||
"keyboard_shortcuts.hotkey": "Hotkey", | |||
"keyboard_shortcuts.legend": "to display this legend", | |||
"keyboard_shortcuts.mention": "to mention author", | |||
"keyboard_shortcuts.reply": "to reply", | |||
"keyboard_shortcuts.search": "to focus search", | |||
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", | |||
"keyboard_shortcuts.toot": "to start a brand new toot", | |||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", | |||
"keyboard_shortcuts.up": "to move up in the list", | |||
"lightbox.close": "Close", | |||
"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.new.create": "Add list", | |||
"lists.new.title_placeholder": "New list title", | |||
"lists.search": "Search among people you follow", | |||
"lists.subheading": "Your lists", | |||
"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.hide_notifications": "Hide notifications from this user?", | |||
"navigation_bar.blocks": "Blocked users", | |||
"navigation_bar.community_timeline": "Local timeline", | |||
"navigation_bar.direct": "Direct messages", | |||
"navigation_bar.domain_blocks": "Hidden domains", | |||
"navigation_bar.edit_profile": "Edit profile", | |||
"navigation_bar.favourites": "Favourites", | |||
"navigation_bar.follow_requests": "Follow requests", | |||
"navigation_bar.info": "Extended information", | |||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", | |||
"navigation_bar.lists": "Lists", | |||
"navigation_bar.logout": "Logout", | |||
"navigation_bar.mutes": "Muted users", | |||
"navigation_bar.pins": "Pinned toots", | |||
"navigation_bar.preferences": "Preferences", | |||
"navigation_bar.public_timeline": "Federated timeline", | |||
"notification.favourite": "{name} favourited your status", | |||
"notification.follow": "{name} followed you", | |||
"notification.mention": "{name} mentioned you", | |||
"notification.reblog": "{name} boosted your status", | |||
"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": "Favourites:", | |||
"notifications.column_settings.follow": "New followers:", | |||
"notifications.column_settings.mention": "Mentions:", | |||
"notifications.column_settings.push": "Push notifications", | |||
"notifications.column_settings.push_meta": "This device", | |||
"notifications.column_settings.reblog": "Boosts:", | |||
"notifications.column_settings.show": "Show in column", | |||
"notifications.column_settings.sound": "Play sound", | |||
"onboarding.done": "Done", | |||
"onboarding.next": "Next", | |||
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", | |||
"onboarding.page_four.home": "The home timeline shows posts from people you follow.", | |||
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", | |||
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", | |||
"onboarding.page_one.full_handle": "Your full handle", | |||
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", | |||
"onboarding.page_one.welcome": "Welcome to Mastodon!", | |||
"onboarding.page_six.admin": "Your instance's admin is {admin}.", | |||
"onboarding.page_six.almost_done": "Almost done...", | |||
"onboarding.page_six.appetoot": "Bon Appetoot!", | |||
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", | |||
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", | |||
"onboarding.page_six.guidelines": "community guidelines", | |||
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", | |||
"onboarding.page_six.various_app": "mobile apps", | |||
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", | |||
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", | |||
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", | |||
"onboarding.skip": "Skip", | |||
"privacy.change": "Adjust status privacy", | |||
"privacy.direct.long": "Post to mentioned users only", | |||
"privacy.direct.short": "Direct", | |||
"privacy.private.long": "Post to followers only", | |||
"privacy.private.short": "Followers-only", | |||
"privacy.public.long": "Post to public timelines", | |||
"privacy.public.short": "Public", | |||
"privacy.unlisted.long": "Do not show in public timelines", | |||
"privacy.unlisted.short": "Unlisted", | |||
"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", | |||
"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 instance moderators. You can provide an explanation of why you are reporting this account below:", | |||
"report.placeholder": "Additional comments", | |||
"report.submit": "Submit", | |||
"report.target": "Report {target}", | |||
"search.placeholder": "Search", | |||
"search_popout.search_format": "Advanced search format", | |||
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, 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": "user", | |||
"search_results.accounts": "People", | |||
"search_results.hashtags": "Hashtags", | |||
"search_results.statuses": "Toots", | |||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", | |||
"standalone.public_title": "A look inside...", | |||
"status.block": "Block @{name}", | |||
"status.cancel_reblog_private": "Unboost", | |||
"status.cannot_reblog": "This post cannot be boosted", | |||
"status.delete": "Delete", | |||
"status.direct": "Direct message @{name}", | |||
"status.embed": "Embed", | |||
"status.favourite": "Favourite", | |||
"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 status", | |||
"status.pin": "Pin on profile", | |||
"status.pinned": "Pinned toot", | |||
"status.reblog": "Boost", | |||
"status.reblog_private": "Boost to original audience", | |||
"status.reblogged_by": "{name} boosted", | |||
"status.reply": "Reply", | |||
"status.replyAll": "Reply to thread", | |||
"status.report": "Report @{name}", | |||
"status.sensitive_toggle": "Click to view", | |||
"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.unmute_conversation": "Unmute conversation", | |||
"status.unpin": "Unpin from profile", | |||
"tabs_bar.federated_timeline": "Federated", | |||
"tabs_bar.home": "Home", | |||
"tabs_bar.local_timeline": "Local", | |||
"tabs_bar.notifications": "Notifications", | |||
"tabs_bar.search": "Search", | |||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.", | |||
"upload_area.title": "Drag & drop to upload", | |||
"upload_button.label": "Add media", | |||
"upload_form.description": "Describe for the visually impaired", | |||
"upload_form.focus": "Crop", | |||
"upload_form.undo": "Undo", | |||
"upload_progress.label": "Uploading...", | |||
"video.close": "Close video", | |||
"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" | |||
} |
@ -0,0 +1,296 @@ | |||
{ | |||
"account.block": "Block @{name}", | |||
"account.block_domain": "Hide everything from {domain}", | |||
"account.blocked": "Blocked", | |||
"account.direct": "Direct message @{name}", | |||
"account.disclaimer_full": "Information below may reflect the user's profile incompletely.", | |||
"account.domain_blocked": "Domain hidden", | |||
"account.edit_profile": "Edit profile", | |||
"account.follow": "Follow", | |||
"account.followers": "Followers", | |||
"account.follows": "Follows", | |||
"account.follows_you": "Follows you", | |||
"account.hide_reblogs": "Hide boosts from @{name}", | |||
"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.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 boosts from @{name}", | |||
"account.unblock": "Unblock @{name}", | |||
"account.unblock_domain": "Unhide {domain}", | |||
"account.unfollow": "Unfollow", | |||
"account.unmute": "Unmute @{name}", | |||
"account.unmute_notifications": "Unmute notifications from @{name}", | |||
"account.view_full_profile": "View full profile", | |||
"alert.unexpected.message": "An unexpected error occurred.", | |||
"alert.unexpected.title": "Oops!", | |||
"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.community": "Local timeline", | |||
"column.direct": "Direct messages", | |||
"column.domain_blocks": "Hidden domains", | |||
"column.favourites": "Favourites", | |||
"column.follow_requests": "Follow requests", | |||
"column.home": "Home", | |||
"column.lists": "Lists", | |||
"column.mutes": "Muted users", | |||
"column.notifications": "Notifications", | |||
"column.pins": "Pinned toot", | |||
"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.navigation": "Navigation", | |||
"column_subheading.settings": "Settings", | |||
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.", | |||
"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 posts.", | |||
"compose_form.lock_disclaimer.lock": "locked", | |||
"compose_form.placeholder": "What is on your mind?", | |||
"compose_form.publish": "Toot", | |||
"compose_form.publish_loud": "{publish}!", | |||
"compose_form.sensitive.marked": "Media is marked as sensitive", | |||
"compose_form.sensitive.unmarked": "Media is not marked as sensitive", | |||
"compose_form.spoiler.marked": "Text is hidden behind warning", | |||
"compose_form.spoiler.unmarked": "Text is not hidden", | |||
"compose_form.spoiler_placeholder": "Write your warning here", | |||
"confirmation_modal.cancel": "Cancel", | |||
"confirmations.block.confirm": "Block", | |||
"confirmations.block.message": "Are you sure you want to block {name}?", | |||
"confirmations.delete.confirm": "Delete", | |||
"confirmations.delete.message": "Are you sure you want to delete this status?", | |||
"confirmations.delete_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.mute.confirm": "Mute", | |||
"confirmations.mute.message": "Are you sure you want to mute {name}?", | |||
"confirmations.unfollow.confirm": "Unfollow", | |||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", | |||
"embed.instructions": "Embed this status 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": "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.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.hashtag": "There is nothing in this hashtag yet.", | |||
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", | |||
"empty_column.home.public_timeline": "the public timeline", | |||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", | |||
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", | |||
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up", | |||
"follow_request.authorize": "Authorize", | |||
"follow_request.reject": "Reject", | |||
"getting_started.appsshort": "Apps", | |||
"getting_started.faq": "FAQ", | |||
"getting_started.heading": "Getting started", | |||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", | |||
"getting_started.userguide": "User Guide", | |||
"home.column_settings.advanced": "Advanced", | |||
"home.column_settings.basic": "Basic", | |||
"home.column_settings.filter_regex": "Filter out by regular expressions", | |||
"home.column_settings.show_reblogs": "Show boosts", | |||
"home.column_settings.show_replies": "Show replies", | |||
"home.settings": "Column settings", | |||
"keyboard_shortcuts.back": "to navigate back", | |||
"keyboard_shortcuts.boost": "to boost", | |||
"keyboard_shortcuts.column": "to focus a status in one of the columns", | |||
"keyboard_shortcuts.compose": "to focus the compose textarea", | |||
"keyboard_shortcuts.description": "Description", | |||
"keyboard_shortcuts.down": "to move down in the list", | |||
"keyboard_shortcuts.enter": "to open status", | |||
"keyboard_shortcuts.favourite": "to favourite", | |||
"keyboard_shortcuts.heading": "Keyboard Shortcuts", | |||
"keyboard_shortcuts.hotkey": "Hotkey", | |||
"keyboard_shortcuts.legend": "to display this legend", | |||
"keyboard_shortcuts.mention": "to mention author", | |||
"keyboard_shortcuts.reply": "to reply", | |||
"keyboard_shortcuts.search": "to focus search", | |||
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", | |||
"keyboard_shortcuts.toot": "to start a brand new toot", | |||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", | |||
"keyboard_shortcuts.up": "to move up in the list", | |||
"lightbox.close": "Close", | |||
"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.new.create": "Add list", | |||
"lists.new.title_placeholder": "New list title", | |||
"lists.search": "Search among people you follow", | |||
"lists.subheading": "Your lists", | |||
"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.hide_notifications": "Hide notifications from this user?", | |||
"navigation_bar.blocks": "Blocked users", | |||
"navigation_bar.community_timeline": "Local timeline", | |||
"navigation_bar.direct": "Direct messages", | |||
"navigation_bar.domain_blocks": "Hidden domains", | |||
"navigation_bar.edit_profile": "Edit profile", | |||
"navigation_bar.favourites": "Favourites", | |||
"navigation_bar.follow_requests": "Follow requests", | |||
"navigation_bar.info": "Extended information", | |||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", | |||
"navigation_bar.lists": "Lists", | |||
"navigation_bar.logout": "Logout", | |||
"navigation_bar.mutes": "Muted users", | |||
"navigation_bar.pins": "Pinned toots", | |||
"navigation_bar.preferences": "Preferences", | |||
"navigation_bar.public_timeline": "Federated timeline", | |||
"notification.favourite": "{name} favourited your status", | |||
"notification.follow": "{name} followed you", | |||
"notification.mention": "{name} mentioned you", | |||
"notification.reblog": "{name} boosted your status", | |||
"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": "Favourites:", | |||
"notifications.column_settings.follow": "New followers:", | |||
"notifications.column_settings.mention": "Mentions:", | |||
"notifications.column_settings.push": "Push notifications", | |||
"notifications.column_settings.push_meta": "This device", | |||
"notifications.column_settings.reblog": "Boosts:", | |||
"notifications.column_settings.show": "Show in column", | |||
"notifications.column_settings.sound": "Play sound", | |||
"onboarding.done": "Done", | |||
"onboarding.next": "Next", | |||
"onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", | |||
"onboarding.page_four.home": "The home timeline shows posts from people you follow.", | |||
"onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", | |||
"onboarding.page_one.federation": "Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", | |||
"onboarding.page_one.full_handle": "Your full handle", | |||
"onboarding.page_one.handle_hint": "This is what you would tell your friends to search for.", | |||
"onboarding.page_one.welcome": "Welcome to Mastodon!", | |||
"onboarding.page_six.admin": "Your instance's admin is {admin}.", | |||
"onboarding.page_six.almost_done": "Almost done...", | |||
"onboarding.page_six.appetoot": "Bon Appetoot!", | |||
"onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", | |||
"onboarding.page_six.github": "Mastodon is free open-source software. You can report bugs, request features, or contribute to the code on {github}.", | |||
"onboarding.page_six.guidelines": "community guidelines", | |||
"onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", | |||
"onboarding.page_six.various_app": "mobile apps", | |||
"onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", | |||
"onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", | |||
"onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", | |||
"onboarding.skip": "Skip", | |||
"privacy.change": "Adjust status privacy", | |||
"privacy.direct.long": "Post to mentioned users only", | |||
"privacy.direct.short": "Direct", | |||
"privacy.private.long": "Post to followers only", | |||
"privacy.private.short": "Followers-only", | |||
"privacy.public.long": "Post to public timelines", | |||
"privacy.public.short": "Public", | |||
"privacy.unlisted.long": "Do not show in public timelines", | |||
"privacy.unlisted.short": "Unlisted", | |||
"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", | |||
"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 instance moderators. You can provide an explanation of why you are reporting this account below:", | |||
"report.placeholder": "Additional comments", | |||
"report.submit": "Submit", | |||
"report.target": "Report {target}", | |||
"search.placeholder": "Search", | |||
"search_popout.search_format": "Advanced search format", | |||
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, 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": "user", | |||
"search_results.accounts": "People", | |||
"search_results.hashtags": "Hashtags", | |||
"search_results.statuses": "Toots", | |||
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", | |||
"standalone.public_title": "A look inside...", | |||
"status.block": "Block @{name}", | |||
"status.cancel_reblog_private": "Unboost", | |||
"status.cannot_reblog": "This post cannot be boosted", | |||
"status.delete": "Delete", | |||
"status.direct": "Direct message @{name}", | |||
"status.embed": "Embed", | |||
"status.favourite": "Favourite", | |||
"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 status", | |||
"status.pin": "Pin on profile", | |||
"status.pinned": "Pinned toot", | |||
"status.reblog": "Boost", | |||
"status.reblog_private": "Boost to original audience", | |||
"status.reblogged_by": "{name} boosted", | |||
"status.reply": "Reply", | |||
"status.replyAll": "Reply to thread", | |||
"status.report": "Report @{name}", | |||
"status.sensitive_toggle": "Click to view", | |||
"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.unmute_conversation": "Unmute conversation", | |||
"status.unpin": "Unpin from profile", | |||
"tabs_bar.federated_timeline": "Federated", | |||
"tabs_bar.home": "Home", | |||
"tabs_bar.local_timeline": "Local", | |||
"tabs_bar.notifications": "Notifications", | |||
"tabs_bar.search": "Search", | |||
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.", | |||
"upload_area.title": "Drag & drop to upload", | |||
"upload_button.label": "Add media", | |||
"upload_form.description": "Describe for the visually impaired", | |||
"upload_form.focus": "Crop", | |||
"upload_form.undo": "Undo", | |||
"upload_progress.label": "Uploading...", | |||
"video.close": "Close video", | |||
"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" | |||
} |
@ -0,0 +1,2 @@ | |||
[ | |||
] |
@ -0,0 +1,2 @@ | |||
[ | |||
] |
@ -0,0 +1,2 @@ | |||
[ | |||
] |
@ -0,0 +1,10 @@ | |||
import * as base64 from '../base64'; | |||
describe('base64', () => { | |||
describe('decode', () => { | |||
it('returns a uint8 array', () => { | |||
const arr = base64.decode('dGVzdA=='); | |||
expect(arr).toEqual(new Uint8Array([116, 101, 115, 116])); | |||
}); | |||
}); | |||
}); |
@ -0,0 +1,10 @@ | |||
export const decode = base64 => { | |||
const rawData = window.atob(base64); | |||
const outputArray = new Uint8Array(rawData.length); | |||
for (let i = 0; i < rawData.length; ++i) { | |||
outputArray[i] = rawData.charCodeAt(i); | |||
} | |||
return outputArray; | |||
}; |
@ -0,0 +1,66 @@ | |||
const MAX_IMAGE_DIMENSION = 1280; | |||
const getImageUrl = inputFile => new Promise((resolve, reject) => { | |||
if (window.URL && URL.createObjectURL) { | |||
try { | |||
resolve(URL.createObjectURL(inputFile)); | |||
} catch (error) { | |||
reject(error); | |||
} | |||
return; | |||
} | |||
const reader = new FileReader(); | |||
reader.onerror = (...args) => reject(...args); | |||
reader.onload = ({ target }) => resolve(target.result); | |||
reader.readAsDataURL(inputFile); | |||
}); | |||
const loadImage = inputFile => new Promise((resolve, reject) => { | |||
getImageUrl(inputFile).then(url => { | |||
const img = new Image(); | |||
img.onerror = (...args) => reject(...args); | |||
img.onload = () => resolve(img); | |||
img.src = url; | |||
}).catch(reject); | |||
}); | |||
export default inputFile => new Promise((resolve, reject) => { | |||
if (!inputFile.type.match(/image.*/) || inputFile.type === 'image/gif') { | |||
resolve(inputFile); | |||
return; | |||
} | |||
loadImage(inputFile).then(img => { | |||
const canvas = document.createElement('canvas'); | |||
const { width, height } = img; | |||
let newWidth, newHeight; | |||
if (width < MAX_IMAGE_DIMENSION && height < MAX_IMAGE_DIMENSION) { | |||
resolve(inputFile); | |||
return; | |||
} | |||
if (width > height) { | |||
newHeight = height * MAX_IMAGE_DIMENSION / width; | |||
newWidth = MAX_IMAGE_DIMENSION; | |||
} else if (height > width) { | |||
newWidth = width * MAX_IMAGE_DIMENSION / height; | |||
newHeight = MAX_IMAGE_DIMENSION; | |||
} else { | |||
newWidth = MAX_IMAGE_DIMENSION; | |||
newHeight = MAX_IMAGE_DIMENSION; | |||
} | |||
canvas.width = newWidth; | |||
canvas.height = newHeight; | |||
canvas.getContext('2d').drawImage(img, 0, 0, newWidth, newHeight); | |||
canvas.toBlob(resolve, inputFile.type); | |||
}).catch(reject); | |||
}); |
@ -0,0 +1,3 @@ | |||
@import 'contrast/variables'; | |||
@import 'application'; | |||
@import 'contrast/diff'; |
@ -0,0 +1,14 @@ | |||
// components.scss | |||
.compose-form { | |||
.compose-form__modifiers { | |||
.compose-form__upload { | |||
&-description { | |||
input { | |||
&::placeholder { | |||
opacity: 1.0; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
} |
@ -0,0 +1,24 @@ | |||
// Dependent colors | |||
$black: #000000; | |||
$classic-base-color: #282c37; | |||
$classic-primary-color: #9baec8; | |||
$classic-secondary-color: #d9e1e8; | |||
$classic-highlight-color: #2b90d9; | |||
$ui-base-color: $classic-base-color !default; | |||
$ui-primary-color: $classic-primary-color !default; | |||
$ui-secondary-color: $classic-secondary-color !default; | |||
// Differences | |||
$ui-highlight-color: #2b5fd9; | |||
$darker-text-color: lighten($ui-primary-color, 20%) !default; | |||
$dark-text-color: lighten($ui-primary-color, 12%) !default; | |||
$secondary-text-color: lighten($ui-secondary-color, 6%) !default; | |||
$highlight-text-color: $classic-highlight-color !default; | |||
$action-button-color: #8d9ac2; | |||
$inverted-text-color: $black !default; | |||
$lighter-text-color: darken($ui-base-color,6%) !default; | |||
$light-text-color: darken($ui-primary-color, 40%) !default; |