diff options
author | ThibG <thib@sitedethib.com> | 2020-02-09 12:56:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-09 12:56:12 +0100 |
commit | d3aaa08730901e7c97c6aeb1ebf56f2a027c78a2 (patch) | |
tree | 9fcb99dab28b01e0f85fbe7f27f406f92a031903 | |
parent | a2cfe3daaadabfaad71969a44c460bd76b8405ff (diff) | |
parent | 432033743c409356bd11e0d7d96f14a3cc82fb77 (diff) |
Merge pull request #1280 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
40 files changed, 461 insertions, 228 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index fa5b2bfed..84e08341e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ Changelog All notable changes to this project will be documented in this file. -## Unreleased +## [3.1.0] - 2020-02-09 ### Added - Add bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/7107), [Gargron](https://github.com/tootsuite/mastodon/pull/12494), [Gomasy](https://github.com/tootsuite/mastodon/pull/12381)) @@ -38,8 +38,9 @@ All notable changes to this project will be documented in this file. - Add support for KaiOS arrow navigation to public pages ([nolanlawson](https://github.com/tootsuite/mastodon/pull/12251)) - Add `discoverable` to accounts in REST API ([trwnh](https://github.com/tootsuite/mastodon/pull/12508)) - Add admin setting to disable default follows ([ArisuOngaku](https://github.com/tootsuite/mastodon/pull/12566)) -- Add support for LDAP and PAM in the OAuth password grant strategy ([ntl-purism](https://github.com/tootsuite/mastodon/pull/12390)) +- Add support for LDAP and PAM in the OAuth password grant strategy ([ntl-purism](https://github.com/tootsuite/mastodon/pull/12390), [Gargron](https://github.com/tootsuite/mastodon/pull/12743)) - Allow support for `Accept`/`Reject` activities with a non-embedded object ([puckipedia](https://github.com/tootsuite/mastodon/pull/12199)) +- Add "Show thread" button to public profiles ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/13000)) ### Changed @@ -65,6 +66,7 @@ All notable changes to this project will be documented in this file. - Change to fallback to to `Create` audience when `object` has no defined audience ([ThibG](https://github.com/tootsuite/mastodon/pull/12249)) - Change Twemoji library to 12.1.3 in web UI ([koyuawsmbrtn](https://github.com/tootsuite/mastodon/pull/12342)) - Change blocked users to be hidden from following/followers lists ([ThibG](https://github.com/tootsuite/mastodon/pull/12733)) +- Change signature verification to ignore signatures with invalid host ([Gargron](https://github.com/tootsuite/mastodon/pull/13033)) ### Removed @@ -92,14 +94,13 @@ All notable changes to this project will be documented in this file. - Fix old migrations failing because of strong migrations update ([ThibG](https://github.com/tootsuite/mastodon/pull/12787), [ThibG](https://github.com/tootsuite/mastodon/pull/12692)) - Fix reuse of detailed status components in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12792)) - Fix base64-encoded file uploads not being possible in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/12748), [Gargron](https://github.com/tootsuite/mastodon/pull/12857)) -- Fix resource_owner_from_credentials in Doorkeeper initializer ([Gargron](https://github.com/tootsuite/mastodon/pull/12743)) - Fix error due to missing authentication call in filters controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12746)) - Fix uncaught unknown format error in host meta controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12747)) - Fix URL search not returning private toots user has access to ([ThibG](https://github.com/tootsuite/mastodon/pull/12742), [ThibG](https://github.com/tootsuite/mastodon/pull/12336)) - Fix cache digesting log noise on status embeds ([Gargron](https://github.com/tootsuite/mastodon/pull/12750)) - Fix slowness due to layout thrashing when reloading a large set of statuses in web UI ([panarom](https://github.com/tootsuite/mastodon/pull/12661), [panarom](https://github.com/tootsuite/mastodon/pull/12744), [Gargron](https://github.com/tootsuite/mastodon/pull/12712)) - Fix error when fetching followers/following from REST API when user has network hidden ([Gargron](https://github.com/tootsuite/mastodon/pull/12716)) -- Fix IDN mentions not being processed, IDN domains not being rendered ([Gargron](https://github.com/tootsuite/mastodon/pull/12715)) +- Fix IDN mentions not being processed, IDN domains not being rendered ([Gargron](https://github.com/tootsuite/mastodon/pull/12715), [Gargron](https://github.com/tootsuite/mastodon/pull/13035), [Gargron](https://github.com/tootsuite/mastodon/pull/13030)) - Fix error when searching for empty phrase ([Gargron](https://github.com/tootsuite/mastodon/pull/12711)) - Fix backups stopping due to read timeouts ([chr-1x](https://github.com/tootsuite/mastodon/pull/12281)) - Fix batch actions on non-pending tags in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12537)) @@ -152,6 +153,13 @@ All notable changes to this project will be documented in this file. - Fix voting issue with remote polls that contain trailing spaces ([ThibG](https://github.com/tootsuite/mastodon/pull/12515)) - Fix dynamic elements not working in pgHero due to CSP rules ([ykzts](https://github.com/tootsuite/mastodon/pull/12489)) - Fix overly verbose backtraces when delivering ActivityPub payloads ([zunda](https://github.com/tootsuite/mastodon/pull/12798)) +- Fix rendering `<a>` without `href` when scheme unsupported ([Gargron](https://github.com/tootsuite/mastodon/pull/13040)) +- Fix unfiltered params error when generating ActivityPub tag pagination ([Gargron](https://github.com/tootsuite/mastodon/pull/13049)) +- Fix malformed HTML causing uncaught error ([Gargron](https://github.com/tootsuite/mastodon/pull/13042)) +- Fix native share button not being displayed for unlisted toots ([ThibG](https://github.com/tootsuite/mastodon/pull/13045)) +- Fix remote convertible media attachments (e.g. GIFs) not being saved ([Gargron](https://github.com/tootsuite/mastodon/pull/13032)) +- Fix account query not using faster index ([abcang](https://github.com/tootsuite/mastodon/pull/13016)) +- Fix error when sending moderation notification ([renatolond](https://github.com/tootsuite/mastodon/pull/13014)) ### Security diff --git a/Gemfile b/Gemfile index 8d3fe095b..8a36db08d 100644 --- a/Gemfile +++ b/Gemfile @@ -61,7 +61,7 @@ gem 'htmlentities', '~> 4.3' gem 'http', '~> 4.3' gem 'http_accept_language', '~> 2.1' gem 'http_parser.rb', '~> 0.6', git: 'https://github.com/tmm1/http_parser.rb', ref: '54b17ba8c7d8d20a16dfc65d1775241833219cf2', submodules: true -gem 'httplog', '~> 1.4.1' +gem 'httplog', '~> 1.4.2' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.1' gem 'link_header', '~> 0.0' diff --git a/Gemfile.lock b/Gemfile.lock index f5076302e..e33748197 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -284,7 +284,7 @@ GEM http-parser (1.2.1) ffi-compiler (>= 1.0, < 2.0) http_accept_language (2.1.1) - httplog (1.4.1) + httplog (1.4.2) rack (>= 1.0) rainbow (>= 2.0.0) i18n (1.8.2) @@ -713,7 +713,7 @@ DEPENDENCIES http (~> 4.3) http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! - httplog (~> 1.4.1) + httplog (~> 1.4.2) i18n-tasks (~> 0.9) idn-ruby iso-639 diff --git a/app/controllers/api/web/embeds_controller.rb b/app/controllers/api/web/embeds_controller.rb index 6231733b7..4aa31695c 100644 --- a/app/controllers/api/web/embeds_controller.rb +++ b/app/controllers/api/web/embeds_controller.rb @@ -7,15 +7,21 @@ class Api::Web::EmbedsController < Api::Web::BaseController def create status = StatusFinder.new(params[:url]).status + + return not_found if status.hidden? + render json: status, serializer: OEmbedSerializer, width: 400 rescue ActiveRecord::RecordNotFound oembed = FetchOEmbedService.new.call(params[:url]) - oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED) if oembed[:html].present? - if oembed - render json: oembed - else - render json: {}, status: :not_found + return not_found if oembed.nil? + + begin + oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED) + rescue ArgumentError + return not_found end + + render json: oembed end end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index ef61c980f..c59446efc 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -25,7 +25,7 @@ class TagsController < ApplicationController format.rss do expires_in 0, public: true - @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none)).limit(PAGE_SIZE) + @statuses = HashtagQueryService.new.call(@tag, filter_params).limit(PAGE_SIZE) @statuses = cache_collection(@statuses, Status) render xml: RSS::TagSerializer.render(@tag, @statuses) @@ -34,7 +34,7 @@ class TagsController < ApplicationController format.json do expires_in 3.minutes, public: public_fetch_mode? - @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none), current_account, params[:local]).paginate_by_max_id(PAGE_SIZE, params[:max_id]) + @statuses = HashtagQueryService.new.call(@tag, filter_params, current_account, params[:local]).paginate_by_max_id(PAGE_SIZE, params[:max_id]) @statuses = cache_collection(@statuses, Status) render json: collection_presenter, serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json' @@ -58,10 +58,14 @@ class TagsController < ApplicationController def collection_presenter ActivityPub::CollectionPresenter.new( - id: tag_url(@tag, params.slice(:any, :all, :none)), + id: tag_url(@tag, filter_params), type: :ordered, size: @tag.statuses.count, items: @statuses.map { |s| ActivityPub::TagManager.instance.uri_for(s) } ) end + + def filter_params + params.slice(:any, :all, :none).permit(:any, :all, :none) + end end diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js index 60b370622..0a481c816 100644 --- a/app/javascript/flavours/glitch/components/status_action_bar.js +++ b/app/javascript/flavours/glitch/components/status_action_bar.js @@ -265,7 +265,7 @@ class StatusActionBar extends ImmutablePureComponent { replyTitle = intl.formatMessage(messages.replyAll); } - const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && ( + const shareButton = ('share' in navigator) && publicStatus && ( <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} /> ); diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js index d71a3ae08..bb53f9288 100644 --- a/app/javascript/flavours/glitch/features/status/components/action_bar.js +++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js @@ -188,7 +188,7 @@ class ActionBar extends React.PureComponent { } } - const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && ( + const shareButton = ('share' in navigator) && publicStatus && ( <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div> ); @@ -196,13 +196,12 @@ class ActionBar extends React.PureComponent { //if (status.get('visibility') === 'direct') reblogIcon = 'envelope'; // else if (status.get('visibility') === 'private') reblogIcon = 'lock'; - let reblog_disabled = (status.get('visibility') === 'direct' || (status.get('visibility') === 'private' && me !== status.getIn(['account', 'id']))); let reblog_message = status.get('visibility') === 'private' ? messages.reblog_private : messages.reblog; return ( <div className='detailed-status__action-bar'> <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div> - <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblog_message)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> + <div className='detailed-status__button'><IconButton disabled={!publicStatus} active={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblog_message)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> <div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div> {shareButton} <div className='detailed-status__button'><IconButton className='bookmark-icon' active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div> diff --git a/app/javascript/flavours/glitch/styles/components/announcements.scss b/app/javascript/flavours/glitch/styles/components/announcements.scss index ac4c199cd..eab6c728b 100644 --- a/app/javascript/flavours/glitch/styles/components/announcements.scss +++ b/app/javascript/flavours/glitch/styles/components/announcements.scss @@ -84,14 +84,13 @@ &__unread { position: absolute; - top: 15px; - right: 15px; - display: inline-block; + top: 19px; + right: 19px; + display: block; background: $highlight-text-color; border-radius: 50%; width: 0.625rem; height: 0.625rem; - margin: 0 .15em; } } diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 4b3c79d0d..e2c8d43c9 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -319,7 +319,7 @@ class StatusActionBar extends ImmutablePureComponent { replyTitle = intl.formatMessage(messages.replyAll); } - const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && ( + const shareButton = ('share' in navigator) && publicStatus && ( <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} /> ); diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 657d2bb1c..959774da4 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -250,7 +250,7 @@ class ActionBar extends React.PureComponent { } } - const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && ( + const shareButton = ('share' in navigator) && publicStatus && ( <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div> ); @@ -265,12 +265,10 @@ class ActionBar extends React.PureComponent { if (status.get('visibility') === 'direct') reblogIcon = 'envelope'; else if (status.get('visibility') === 'private') reblogIcon = 'lock'; - let reblog_disabled = (status.get('visibility') === 'direct' || status.get('visibility') === 'private'); - return ( <div className='detailed-status__action-bar'> <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} /></div> - <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> + <div className='detailed-status__button'><IconButton disabled={!publicStatus} active={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> <div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div> {shareButton} <div className='detailed-status__button'><IconButton className='bookmark-icon' active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div> diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 596ebc051..c71212b85 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -184,8 +184,8 @@ "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "اعرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "إخفاء الإعلانات", + "home.show_announcements": "إظهار الإعلانات", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}", "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}", @@ -335,7 +335,7 @@ "relative_time.just_now": "الآن", "relative_time.minutes": "{number}د", "relative_time.seconds": "{number}ثا", - "relative_time.today": "today", + "relative_time.today": "اليوم", "reply_indicator.cancel": "إلغاء", "report.forward": "التحويل إلى {target}", "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 8a2657792..8006a1306 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -29,14 +29,14 @@ "account.never_active": "Enxamás", "account.posts": "Barritos", "account.posts_with_replies": "Barritos y rempuestes", - "account.report": "Informar de @{name}", + "account.report": "Report @{name}", "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu", "account.share": "Share @{name}'s profile", - "account.show_reblogs": "Show boosts from @{name}", + "account.show_reblogs": "Amosar les comparticiones de @{name}", "account.unblock": "Desbloquiar a @{name}", "account.unblock_domain": "Amosar {domain}", "account.unendorse": "Nun destacar nel perfil", - "account.unfollow": "Unfollow", + "account.unfollow": "Dexar de siguir", "account.unmute": "Unmute @{name}", "account.unmute_notifications": "Unmute notifications from @{name}", "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", @@ -84,7 +84,7 @@ "compose_form.poll.add_option": "Amestar una escoyeta", "compose_form.poll.duration": "Poll duration", "compose_form.poll.option_placeholder": "Escoyeta {number}", - "compose_form.poll.remove_option": "Remove this choice", + "compose_form.poll.remove_option": "Desaniciar esta escoyeta", "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": "Barritar", @@ -96,30 +96,30 @@ "compose_form.spoiler.unmarked": "El testu nun va anubrise", "compose_form.spoiler_placeholder": "Escribi equí l'alvertencia", "confirmation_modal.cancel": "Encaboxar", - "confirmations.block.block_and_report": "Block & Report", - "confirmations.block.confirm": "Block", + "confirmations.block.block_and_report": "Bloquiar ya informar", + "confirmations.block.confirm": "Bloquiar", "confirmations.block.message": "¿De xuru que quies bloquiar a {name}?", - "confirmations.delete.confirm": "Delete", + "confirmations.delete.confirm": "Desaniciar", "confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?", "confirmations.delete_list.confirm": "Desaniciar", "confirmations.delete_list.message": "¿De xuru que quies desaniciar dafechu esta llista?", "confirmations.domain_block.confirm": "Anubrir tol dominiu", - "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 posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.domain_block.message": "¿De xuru xurísimu que quies bloquiar el dominiu {domain} enteru? Na mayoría de casos bloquiar o silenciar dalguna cuenta ye abondo y preferible. Nun vas ver el conteníu d'esi dominiu en nenguna llinia temporal pública o nos avisos, y van desanciase los tos siguidores d'esi dominiu.", + "confirmations.logout.confirm": "Zarrar sesión", + "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?", + "confirmations.mute.confirm": "Silenciar", + "confirmations.mute.explanation": "Esto va anubrir los espublizamientos y les sos menciones pero entá va permiti-yos ver los tos espublizamientos y siguite.", "confirmations.mute.message": "¿De xuru que quies silenciar a {name}?", "confirmations.redraft.confirm": "Desaniciar y reeditar", "confirmations.redraft.message": "¿De xuru que quies desaniciar esti estáu y reeditalu? Van perdese los favoritos y comparticiones, y les rempuestes al toot orixinal van quedar güérfanes.", - "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.reply.confirm": "Responder", + "confirmations.reply.message": "Responder agora va sobrescribir el mensaxe que tas componiendo anguaño. ¿De xuru que quies siguir?", + "confirmations.unfollow.confirm": "Dexar de siguir", "confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?", "conversation.delete": "Delete conversation", "conversation.mark_as_read": "Mark as read", "conversation.open": "View conversation", - "conversation.with": "With {names}", + "conversation.with": "Con {names}", "directory.federated": "Dende'l fediversu", "directory.local": "Dende {domain} namái", "directory.new_arrivals": "Cuentes nueves", @@ -142,21 +142,21 @@ "emoji_button.travel": "Viaxes y llugares", "empty_column.account_timeline": "¡Equí nun hai barritos!", "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "Entá nun bloquiesti a dengún usuariu.", + "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.", "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", + "empty_column.direct": "Entá nun tienes nunengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.", "empty_column.domain_blocks": "Entá nun hai dominios anubríos.", "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.", "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_requests": "Entá nun tienes denguna solicitú de siguimientu. Cuando recibas una, va amosase equí.", + "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.", "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.", "empty_column.home": "¡Tienes la llinia temporal balera! Visita {public} o usa la gueta pa entamar y conocer a otros usuarios.", "empty_column.home.public_timeline": "la llinia temporal pública", "empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen estaos nuevos, van apaecer equí.", - "empty_column.lists": "Entá nun tienes denguna llista. Cuando crees una, va amosase equí.", - "empty_column.mutes": "Entá nun silenciesti a dengún usuariu.", - "empty_column.notifications": "Entá nun tienes dengún avisu. Interactúa con otros p'aniciar la conversación.", + "empty_column.lists": "Entá nun tienes nunenguna llista. Cuando crees una, va amosase equí.", + "empty_column.mutes": "Entá nun silenciesti a nunengún usuariu.", + "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.", "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto", "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun pudo amosase correutamente.", "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.", @@ -189,7 +189,7 @@ "intervals.full.days": "{number, plural, one {# día} other {# díes}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}", - "introduction.federation.action": "Next", + "introduction.federation.action": "Siguiente", "introduction.federation.federated.headline": "Federated", "introduction.federation.federated.text": "Los espublizamientos públicos de los demás sirvidores del fediversu van apaecer na llinia temporal federada.", "introduction.federation.home.headline": "Home", @@ -198,12 +198,12 @@ "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", "introduction.interactions.action": "¡Finar el tutorial!", "introduction.interactions.favourite.headline": "Favourite", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", + "introduction.interactions.favourite.text": "Pues guardar un barritu pa dempués y facer que l'autor sepa que te prestó marcándolu como favoritu.", "introduction.interactions.reblog.headline": "Boost", "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", "introduction.interactions.reply.headline": "Reply", "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", - "introduction.welcome.action": "Let's go!", + "introduction.welcome.action": "¡Vamos!", "introduction.welcome.headline": "Primeros pasos", "introduction.welcome.text": "¡Afáyate nel fediversu! Nun momentu vas ser a tresmitir mensaxes y falar colos collacios d'una montonera de sirvidores. Pero esti sirvidor, {domain}, ye especial: agospia'l to perfil, asina qu'alcuérdate de cómo se llama.", "keyboard_shortcuts.back": "pa dir p'atrás", @@ -316,8 +316,8 @@ "poll.total_votes": "{count, plural, one {# votu} other {# votos}}", "poll.vote": "Vote", "poll.voted": "You voted for this answer", - "poll_button.add_poll": "Add a poll", - "poll_button.remove_poll": "Remove poll", + "poll_button.add_poll": "Amestar una encuesta", + "poll_button.remove_poll": "Desaniciar la encuesta", "privacy.change": "Adjust status privacy", "privacy.direct.long": "Post to mentioned users only", "privacy.direct.short": "Direct", @@ -341,7 +341,7 @@ "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.hint": "L'informe va unviase a los llendadores del to sirvidor. Embaxo, pues desplicar por qué informes d'esta cuenta:", "report.placeholder": "Comentarios adicionales", - "report.submit": "Submit", + "report.submit": "Unviar", "report.target": "Report {target}", "search.placeholder": "Guetar", "search_popout.search_format": "Formatu de gueta avanzada", @@ -362,7 +362,7 @@ "status.cancel_reblog_private": "Dexar de compartir", "status.cannot_reblog": "Esti artículu nun pue compartise", "status.copy": "Copiar l'enllaz al estáu", - "status.delete": "Delete", + "status.delete": "Desaniciar", "status.detailed_status": "Detailed conversation view", "status.direct": "Unviar un mensaxe direutu a @{name}", "status.embed": "Empotrar", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 11092a133..f55420793 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -158,8 +158,8 @@ "empty_column.mutes": "Encara no has silenciat cap usuari.", "empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.", "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho", - "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina no podria ser mostrada correctament.", - "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda encara pots ser capaç d'utilitzar Mastodont a través d'un navegador diferent o app nativa.", + "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.", + "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una app nativa.", "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls", "errors.unexpected_crash.report_issue": "Informa d'un problema", "follow_request.authorize": "Autoritzar", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 890baec0b..0d535cbc2 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -184,8 +184,8 @@ "home.column_settings.basic": "Syml", "home.column_settings.show_reblogs": "Dangos bŵstiau", "home.column_settings.show_replies": "Dangos ymatebion", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "Cuddio cyhoeddiadau", + "home.show_announcements": "Dangos cyhoeddiadau", "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", @@ -335,7 +335,7 @@ "relative_time.just_now": "nawr", "relative_time.minutes": "{number}munud", "relative_time.seconds": "{number}eiliad", - "relative_time.today": "today", + "relative_time.today": "heddiw", "reply_indicator.cancel": "Canslo", "report.forward": "Ymlaen i {target}", "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 798557200..76657cdde 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -72,7 +72,7 @@ "column_header.moveRight_settings": "Mover columna cara a dereita", "column_header.pin": "Fixar", "column_header.show_settings": "Amosar axustes", - "column_header.unpin": "Desafixar", + "column_header.unpin": "Desapegar", "column_subheading.settings": "Axustes", "community.column_settings.media_only": "Só multimedia", "compose_form.direct_message_warning": "Este toot só será enviado ás usuarias mencionadas.", @@ -118,7 +118,7 @@ "confirmations.unfollow.message": "Desexas deixar de seguir a {name}?", "conversation.delete": "Eliminar conversa", "conversation.mark_as_read": "Marcar como lido", - "conversation.open": "Ollar conversa", + "conversation.open": "Ver conversa", "conversation.with": "Con {names}", "directory.federated": "Do fediverso coñecido", "directory.local": "Só de {domain}", @@ -129,7 +129,7 @@ "emoji_button.activity": "Actividade", "emoji_button.custom": "Personalizado", "emoji_button.flags": "Bandeiras", - "emoji_button.food": "Comida e bebida", + "emoji_button.food": "Comida e Bebida", "emoji_button.label": "Inserir emoticona", "emoji_button.nature": "Natureza", "emoji_button.not_found": "Non hai emoticonas!! (╯°□°)╯︵ ┻━┻", @@ -139,11 +139,11 @@ "emoji_button.search": "Procurar...", "emoji_button.search_results": "Resultados da procura", "emoji_button.symbols": "Símbolos", - "emoji_button.travel": "Viaxes e lugares", + "emoji_button.travel": "Viaxes e Lugares", "empty_column.account_timeline": "Non hai toots aquí!", - "empty_column.account_unavailable": "Perfil non dispoñíbel", + "empty_column.account_unavailable": "Perfil non dispoñible", "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", - "empty_column.bookmarked_statuses": "Aínda non marcaches ningún toot. Cando o fagas, amosaranse aquí.", + "empty_column.bookmarked_statuses": "Aínda non marcaches ningún toot. Cando o fagas, aparecerán aquí.", "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!", "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.", "empty_column.domain_blocks": "Aínda non hai dominios agochados.", @@ -165,7 +165,7 @@ "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "getting_started.developers": "Desenvolvedores", - "getting_started.directory": "Directorio do perfil", + "getting_started.directory": "Directorio local", "getting_started.documentation": "Documentación", "getting_started.heading": "Primeiros pasos", "getting_started.invite": "Convidar persoas", @@ -223,13 +223,13 @@ "keyboard_shortcuts.hotkey": "Tecla de atallo", "keyboard_shortcuts.legend": "para amosar esta lenda", "keyboard_shortcuts.local": "para abrir a cronoloxía local", - "keyboard_shortcuts.mention": "para mencionar ó autor", + "keyboard_shortcuts.mention": "para mencionar a autora", "keyboard_shortcuts.muted": "abrir lista de usuarias acaladas", "keyboard_shortcuts.my_profile": "para abrir o teu perfil", "keyboard_shortcuts.notifications": "para abrir a columna das notificacións", "keyboard_shortcuts.open_media": "para abrir o contido multimedia", "keyboard_shortcuts.pinned": "para abrir a listaxe dos toots fixados", - "keyboard_shortcuts.profile": "para abrir o perfil do autor", + "keyboard_shortcuts.profile": "para abrir o perfil da autora", "keyboard_shortcuts.reply": "para responder", "keyboard_shortcuts.requests": "para abrir a listaxe das peticións de seguimento", "keyboard_shortcuts.search": "para destacar a procura", @@ -313,7 +313,7 @@ "poll.closed": "Pechado", "poll.refresh": "Actualizar", "poll.total_people": "{count, plural,one {# persoa}other {# persoas}}", - "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}", + "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", "poll.voted": "Votaches por esta opción", "poll_button.add_poll": "Engadir unha enquisa", @@ -357,14 +357,14 @@ "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_status": "Abrir este estado na interface de moderación", - "status.block": "Bloquear @{name}", + "status.block": "Bloquear a @{name}", "status.bookmark": "Marcar", "status.cancel_reblog_private": "Desfacer compartido", "status.cannot_reblog": "Esta publicación non pode ser promovida", "status.copy": "Copiar ligazón ó estado", "status.delete": "Eliminar", "status.detailed_status": "Vista detallada da conversa", - "status.direct": "Mensaxe directa @{name}", + "status.direct": "Mensaxe directa a @{name}", "status.embed": "Embeber nunha web", "status.favourite": "Favorito", "status.filtered": "Filtrado", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 8cf3f3e58..98d0af510 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -43,7 +43,7 @@ "alert.rate_limited.title": "Batasan tingkat", "alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.", "alert.unexpected.title": "Oops!", - "announcement.announcement": "Announcement", + "announcement.announcement": "Pengumuman", "autosuggest_hashtag.per_week": "{count} per minggu", "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini", "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index d73110508..e78b4cc4f 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -28,7 +28,7 @@ "account.muted": "Yettwasgugem", "account.never_active": "Werǧin", "account.posts": "Tijewwaqin", - "account.posts_with_replies": "Tibarraḥin d tririyin", + "account.posts_with_replies": "Tijewwaqin akked tririyin", "account.report": "Sewɛed @{name}", "account.requested": "Di laɛḍil ad yettwaqbel. Ssit iwakken ad yefsex usuter n weḍfar", "account.share": "Bḍu amaγnu n @{name}", @@ -41,7 +41,7 @@ "account.unmute_notifications": "Serreḥ ilγa sγur @{name}", "alert.rate_limited.message": "Ma ulac aγilif ɛreḍ tikelt-nniḍen mbeɛd {retry_time, time, medium}.", "alert.rate_limited.title": "Aktum s talast", - "alert.unexpected.message": "Tella-d tuccḍa i ɣef ur nedmi ara.", + "alert.unexpected.message": "Tella-d tuccḍa i γef ur nedmi ara.", "alert.unexpected.title": "Ayhuh!", "announcement.announcement": "Ulγu", "autosuggest_hashtag.per_week": "{count} i yimalas", @@ -109,18 +109,18 @@ "confirmations.logout.message": "D tidet tebγiḍ ad teffγeḍ?", "confirmations.mute.confirm": "Sgugem", "confirmations.mute.explanation": "Aya ad yeffer iznan-is d wid i deg d-yettwabder neγ d-tettwabder, maca xas akka yezmer neγ tezmer awali n yiznan-inek d uḍfaṛ-ik.", - "confirmations.mute.message": "Tetḥeqqeḍ belli tebγiḍ asɛuggen n {name}?", + "confirmations.mute.message": "Tetḥeqqeḍ belli tebγiḍ ad ttegugmeḍ {name}?", "confirmations.redraft.confirm": "Sfeḍ & Ɛiwed tira", "confirmations.redraft.message": "Tetḥeqqeḍ belli tebγiḍ tuksa n waddad-agi iwakken ad s-tɛiwdeḍ tira? Ismenyifen d beḍḍuwat ad ṛuḥen, ma d tiririyin-is ad uγalent d tigujilin.", "confirmations.reply.confirm": "Err", "confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebγiḍ ad tkemmleḍ?", "confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara", - "confirmations.unfollow.message": "Tetḥeqqeḍ belli tebγiḍ ur teḍḍafaṛeḍ ara {name}?", + "confirmations.unfollow.message": "Tetḥeqqeḍ belli tebγiḍ ur teṭafaṛeḍ ara {name}?", "conversation.delete": "Sfeḍ adiwenni", "conversation.mark_as_read": "Creḍ yettwaγṛa", "conversation.open": "Sken adiwenni", "conversation.with": "Akked {names}", - "directory.federated": "Seg fedivers yettwasnen", + "directory.federated": "Deg fedivers yettwasnen", "directory.local": "Seg {domain} kan", "directory.new_arrivals": "Imaynuten id yewḍen", "directory.recently_active": "Yermed xas melmi kan", @@ -205,7 +205,7 @@ "introduction.interactions.reply.text": "Tzemreḍ ad terreḍ γef tjewwakin-ik d tid n medden-nniḍen, d acu ara tent-id-iɛeqden ta deffir ta deg yiwen udiwenni.", "introduction.welcome.action": "Bdu!", "introduction.welcome.headline": "Isurifen imenza", - "introduction.welcome.text": "Anṣuf γer fediverse! Deg kra n yimiren, ad tizmireḍ ad tzzuzreḍ iznan neɣ ad tmeslayeḍ i yemddukkal deg waṭas n yiqeddacen. Maca aqeddac-agi, {domain}, mačči am wiyaḍ - deg-s i yella umaγnu-ik, ihi cfu γef yisem-is.", + "introduction.welcome.text": "Anṣuf γer fediverse! Deg kra n yimiren, ad tizmireḍ ad tzzuzreḍ iznan neγ ad tmeslayeḍ i yemddukkal deg waṭas n yiqeddacen. Maca aqeddac-agi, {domain}, mačči am wiyaḍ - deg-s i yella umaγnu-ik, ihi cfu γef yisem-is.", "keyboard_shortcuts.back": "uγal ar deffir", "keyboard_shortcuts.blocked": "akken ad teldiḍ tabdert n yimseqdacen yettwasḥebsen", "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen", @@ -412,8 +412,8 @@ "trends.count_by_accounts": "{count} {rawCount, plural, one {n umdan} other {n yemdanen}} i yettmeslayen", "trends.trending_now": "Trending now", "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeγ-ed deg Maṣṭudun.", - "upload_area.title": "Drag & drop to upload", - "upload_button.label": "Add media ({formats})", + "upload_area.title": "Zuḥeb rnu sers i tasalyt", + "upload_button.label": "Rnu Taγwalt ({formats})", "upload_error.limit": "File upload limit exceeded.", "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt", @@ -427,7 +427,7 @@ "upload_modal.detect_text": "Sefru-d aḍris seg tugna", "upload_modal.edit_media": "Ẓreg taγwalt", "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.preview_label": "Preview ({ratio})", + "upload_modal.preview_label": "Taskant ({ratio})", "upload_progress.label": "Asali iteddu...", "video.close": "Mdel tabidyutt", "video.download": "Sidered afaylu", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 9d119902a..9d9eaa769 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -1,7 +1,7 @@ { "account.add_or_remove_from_list": "Dodaj lub usuń z list", "account.badges.bot": "Bot", - "account.badges.group": "Group", + "account.badges.group": "Grupa", "account.block": "Blokuj @{name}", "account.block_domain": "Blokuj wszystko z {domain}", "account.blocked": "Zablokowany(-a)", @@ -43,7 +43,7 @@ "alert.rate_limited.title": "Ograniczony czasowo", "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.", "alert.unexpected.title": "O nie!", - "announcement.announcement": "Announcement", + "announcement.announcement": "Ogłoszenie", "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", @@ -89,8 +89,8 @@ "compose_form.poll.duration": "Czas trwania głosowania", "compose_form.poll.option_placeholder": "Opcja {number}", "compose_form.poll.remove_option": "Usuń tę opcję", - "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.poll.switch_to_multiple": "Pozwól na wybranie wielu opcji", + "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji", "compose_form.publish": "Wyślij", "compose_form.publish_loud": "{publish}!", "compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe", @@ -188,8 +188,8 @@ "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "Ukryj ogłoszenia", + "home.show_announcements": "Pokaż ogłoszenia", "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -340,7 +340,7 @@ "relative_time.just_now": "teraz", "relative_time.minutes": "{number} min.", "relative_time.seconds": "{number} s.", - "relative_time.today": "today", + "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", @@ -421,11 +421,11 @@ "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_error.limit": "Przekroczono limit plików do wysłania.", "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.", - "upload_form.audio_description": "Describe for people with hearing loss", + "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", "upload_form.edit": "Edytuj", "upload_form.undo": "Usuń", - "upload_form.video_description": "Describe for people with hearing loss or visual impairment", + "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących", "upload_modal.analyzing_picture": "Analizowanie obrazu…", "upload_modal.apply": "Zastosuj", "upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 8217a1369..ad4407e9d 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -184,8 +184,8 @@ "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté", "home.column_settings.show_replies": "Ukáž odpovede", - "home.hide_announcements": "Hide announcements", - "home.show_announcements": "Show announcements", + "home.hide_announcements": "Skry oboznámenia", + "home.show_announcements": "Ukáž oboznámenia", "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}", "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}", @@ -335,7 +335,7 @@ "relative_time.just_now": "teraz", "relative_time.minutes": "{number}min", "relative_time.seconds": "{number}sek", - "relative_time.today": "today", + "relative_time.today": "dnes", "reply_indicator.cancel": "Zrušiť", "report.forward": "Posuň ku {target}", "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 1674499e9..003dfaf3b 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -47,7 +47,7 @@ "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}", "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்", "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", - "bundle_column_error.retry": "மீண்டும் முயல்க", + "bundle_column_error.retry": "மீண்டும் முயற்சிக்கவும்", "bundle_column_error.title": "பிணையப் பிழை", "bundle_modal_error.close": "மூடுக", "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.", @@ -65,70 +65,70 @@ "column.mutes": "மௌனத் தடை செய்யப்பட்ட பயனர்கள்", "column.notifications": "அறிவிப்புகள்", "column.pins": "பொருத்தப்பட்ட டூட்டுகள்", - "column.public": "கூட்டாட்சி காலக்கெடு", + "column.public": "ஆலமரத்தில் நிகழ்பவை", "column_back_button.label": "திரும்பு", "column_header.hide_settings": "அமைப்புகளை மறை", - "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்தவும்", - "column_header.moveRight_settings": "நெடுவரிசை வலது புறமாக நகர்த்து", - "column_header.pin": "குண்டூசி", + "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்து", + "column_header.moveRight_settings": "நெடுவரிசையை வலதுபுறமாக நகர்த்து", + "column_header.pin": "பொருத்து", "column_header.show_settings": "அமைப்புகளைக் காட்டு", - "column_header.unpin": "பொருத்தப்படாத", + "column_header.unpin": "கழட்டு", "column_subheading.settings": "அமைப்புகள்", "community.column_settings.media_only": "படங்கள் மட்டுமே", - "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.", - "compose_form.direct_message_warning_learn_more": "மேலும் அறிக", - "compose_form.hashtag_warning": "இந்த toot பட்டியலிடப்படாதது போல எந்த ஹேஸ்டேக்கின் கீழ் பட்டியலிடப்படாது. ஹேஸ்டேக் மூலம் பொது டோட்டல்கள் மட்டுமே தேட முடியும்.", - "compose_form.lock_disclaimer": "உங்கள் கணக்கு அல்ல {locked}. உங்களுடைய பின்தொடர்பவர் மட்டும் இடுகைகளை யாராவது காணலாம்.", - "compose_form.lock_disclaimer.lock": "தாழிடு", - "compose_form.placeholder": "What is on your mind?", - "compose_form.poll.add_option": "ஒரு விருப்பத்தைச் சேர்க்கவும்", - "compose_form.poll.duration": "வாக்கெடுப்பு காலம்", - "compose_form.poll.option_placeholder": "தேர்ந்தெடுப்ப {number}", - "compose_form.poll.remove_option": "இந்த விருப்பத்தை அகற்றவும்", + "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.", + "compose_form.direct_message_warning_learn_more": "மேலும் அறிய", + "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.", + "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.", + "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது", + "compose_form.placeholder": "உங்கள் மனதில் என்ன இருக்கிறது?", + "compose_form.poll.add_option": "தேர்வை சேர்", + "compose_form.poll.duration": "கருத்துக்கணிப்பின் கால அளவு", + "compose_form.poll.option_placeholder": "தேர்வு எண் {number}", + "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று", "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று", "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று", - "compose_form.publish": "டூட் செய்க", + "compose_form.publish": "டூட்", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்ற ஊடகம் இல்லை எனக் குறியிடுக", - "compose_form.sensitive.marked": "ஊடகம் உணர்திறன் என குறிக்கப்பட்டுள்ளது", - "compose_form.sensitive.unmarked": "ஊடகம் உணர்திறன் என குறிக்கப்படவில்லை", - "compose_form.spoiler.marked": "எச்சரிக்கை பின்னால் உரை மறைக்கப்பட்டுள்ளது", - "compose_form.spoiler.unmarked": "உரை மறைக்கப்படவில்லை", - "compose_form.spoiler_placeholder": "இங்கே உங்கள் எச்சரிக்கையை எழுதுங்கள்", - "confirmation_modal.cancel": "எதிராணை", + "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு", + "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.block_and_report": "தடுத்துப் புகாரளி", "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": "முழு டொமைனை மறை", - "confirmations.domain_block.message": "நீங்கள் உண்மையில், நிச்சயமாக நீங்கள் முழு தடுக்க வேண்டும் நிச்சயமாக {domain}? பெரும்பாலான சந்தர்ப்பங்களில் ஒரு சில இலக்குகள் அல்லது மியூட்கள் போதுமானவை மற்றும் சிறந்தவை. எந்த பொது நேரத்திலும் அல்லது உங்கள் அறிவிப்புகளிலும் அந்தக் களத்திலிருந்து உள்ளடக்கத்தை நீங்கள் பார்க்க மாட்டீர்கள். அந்த களத்தில் இருந்து உங்கள் ஆதரவாளர்கள் அகற்றப்படுவார்கள்.", + "confirmations.block.message": "{name}-ஐ நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா?", + "confirmations.delete.confirm": "நீக்கு", + "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", + "confirmations.delete_list.confirm": "நீக்கு", + "confirmations.delete_list.message": "இப்பட்டியலை நிரந்தரமாக நீக்க நிச்சயம் விரும்புகிறீர்களா?", + "confirmations.domain_block.confirm": "முழு களத்தையும் மறை", + "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.", "confirmations.logout.confirm": "வெளியேறு", - "confirmations.logout.message": "கண்டிப்பாக வெளியேறத்தான் வேண்டுமா?", - "confirmations.mute.confirm": "ஊமையான", - "confirmations.mute.explanation": "இது அவர்களின் பதிவுகளையும், அவர்களைக் குறிப்பிடும் பதிவுகளையும் மறைத்துவிடும். ஆனால் அவர்கள் உங்கள் பதிவுகளைப் பார்க்கவும், உங்களைப் பின் தொடரவும் அனுமதிக்கப்படுவார்கள்.", - "confirmations.mute.message": "நிச்சயமாக நீங்கள் முடக்க விரும்புகிறீர்களா {name}?", - "confirmations.redraft.confirm": "நீக்கு & redraft", - "confirmations.redraft.message": "நிச்சயமாக இந்த நிலையை நீக்கி, அதை மறுபடியும் உருவாக்க வேண்டுமா? பிடித்தவை மற்றும் ஊக்கங்கள் இழக்கப்படும், மற்றும் அசல் இடுகையில் பதில்கள் அனாதையான இருக்கும்.", - "confirmations.reply.confirm": "பதில்", - "confirmations.reply.message": "இப்போது பதில், தற்போது நீங்கள் உருவாக்கும் செய்தி மேலெழுதப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?", - "confirmations.unfollow.confirm": "பின்தொடராட்", - "confirmations.unfollow.message": "நிச்சயமாக நீங்கள் பின்தொடர விரும்புகிறீர்களா {name}?", - "conversation.delete": "உரையாடலை அழிக்கவும்", + "confirmations.logout.message": "நிச்சயமாக நீங்கள் வெளியேற விரும்புகிறீர்களா?", + "confirmations.mute.confirm": "அமைதியாக்கு", + "confirmations.mute.explanation": "இந்தத் தேர்வு அவர்களின் பதிவுகளையும், அவர்களைக் குறிப்பிடும் பதிவுகளையும் மறைத்துவிடும். ஆனால், அவர்களால் உங்களைப் பின்தொடர்ந்து உங்கள் பதிவுகளைக் காண முடியும்.", + "confirmations.mute.message": "{name}-ஐ நிச்சயமாக நீங்கள் அமைதியாக்க விரும்புகிறீர்களா?", + "confirmations.redraft.confirm": "பதிவை நீக்கி மறுவரைவு செய்", + "confirmations.redraft.message": "நிச்சயமாக நீங்கள் இந்தப் பதிவை நீக்கி மறுவரைவு செய்ய விரும்புகிறீர்களா? விருப்பங்களும் பகிர்வுகளும் அழிந்துபோகும், மேலும் மூலப் பதிவிற்கு வந்த மறுமொழிகள் தனித்துவிடப்படும்.", + "confirmations.reply.confirm": "மறுமொழி", + "confirmations.reply.message": "ஏற்கனவே ஒரு பதிவு எழுதப்பட்டுக்கொண்டிருக்கிறது. இப்பொழுது பதில் எழுத முனைந்தால் அது அழிக்கப்படும். பரவாயில்லையா?", + "confirmations.unfollow.confirm": "விலகு", + "confirmations.unfollow.message": "{name}-ஐப் பின்தொடர்வதை நிச்சயமாக நீங்கள் நிறுத்த விரும்புகிறீர்களா?", + "conversation.delete": "உரையாடலை அழி", "conversation.mark_as_read": "படிக்கபட்டதாகக் குறி", - "conversation.open": "உரையாடலைக் காண்க", + "conversation.open": "உரையாடலைக் காட்டு", "conversation.with": "{names} உடன்", - "directory.federated": "தெரிந்த ஃபெடிவெர்சிலிருந்து", - "directory.local": "{domain} இல் இருந்து மட்டும்", + "directory.federated": "ஆலமரத்தின் அறியப்பட்டப் பகுதியிலிருந்து", + "directory.local": "{domain} களத்திலிருந்து மட்டும்", "directory.new_arrivals": "புதிய வரவு", - "directory.recently_active": "தற்பொழுது இயாக்கதிலிருப்பவர்கள்", - "embed.instructions": "கீழே உள்ள குறியீட்டை நகலெடுப்பதன் மூலம் உங்கள் இணையதளத்தில் இந்த நிலையை உட்பொதிக்கவும்.", - "embed.preview": "இது போன்ற தோற்றத்தை இங்கு காணலாம்:", - "emoji_button.activity": "நடவடிக்கை", - "emoji_button.custom": "வழக்கம்", - "emoji_button.flags": "கொடி", + "directory.recently_active": "சற்றுமுன் செயல்பாட்டில் இருந்தவர்கள்", + "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.", + "embed.preview": "பார்க்க இப்படி இருக்கும்:", + "emoji_button.activity": "செயல்பாடு", + "emoji_button.custom": "தனிப்பயன்", + "emoji_button.flags": "கொடிகள்", "emoji_button.food": "உணவு மற்றும் பானம்", "emoji_button.label": "குறுப்படங்களை உள்ளிடு", "emoji_button.nature": "இயற்கை", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 54372022a..aa885e241 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6697,14 +6697,13 @@ noscript { &__unread { position: absolute; - top: 15px; - right: 15px; - display: inline-block; + top: 19px; + right: 19px; + display: block; background: $highlight-text-color; border-radius: 50%; width: 0.625rem; height: 0.625rem; - margin: 0 .15em; } } diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb index f1a751f84..fcc99d009 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -77,6 +77,8 @@ class Formatter def reformat(html) sanitize(html, Sanitize::Config::MASTODON_STRICT) + rescue ArgumentError + '' end def plaintext(status) diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb index 2b5d554b5..e3fc94ba6 100644 --- a/app/lib/sanitize_config.rb +++ b/app/lib/sanitize_config.rb @@ -2,7 +2,23 @@ class Sanitize module Config - HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', 'xmpp', 'magnet', :relative].freeze + HTTP_PROTOCOLS = %w( + http + https + ).freeze + + LINK_PROTOCOLS = %w( + http + https + dat + dweb + ipfs + ipns + ssb + gopher + xmpp + magnet + ).freeze CLASS_WHITELIST_TRANSFORMER = lambda do |env| node = env[:node] @@ -38,6 +54,22 @@ class Sanitize end end + UNSUPPORTED_HREF_TRANSFORMER = lambda do |env| + return unless env[:node_name] == 'a' + + current_node = env[:node] + + scheme = begin + if current_node['href'] =~ Sanitize::REGEX_PROTOCOL + Regexp.last_match(1).downcase + else + :relative + end + end + + current_node.replace(current_node.text) unless LINK_PROTOCOLS.include?(scheme) + end + MASTODON_STRICT ||= freeze_config( elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li), @@ -56,13 +88,14 @@ class Sanitize }, protocols: { - 'a' => { 'href' => HTTP_PROTOCOLS }, - 'blockquote' => { 'cite' => HTTP_PROTOCOLS }, + 'a' => { 'href' => LINK_PROTOCOLS }, + 'blockquote' => { 'cite' => LINK_PROTOCOLS }, }, transformers: [ CLASS_WHITELIST_TRANSFORMER, IMG_TAG_TRANSFORMER, + UNSUPPORTED_HREF_TRANSFORMER, ] ) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 29ad72988..f5a6f067d 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -250,6 +250,7 @@ ar: create: إنشاء إعلان title: إعلان جديد published_msg: تم نشر الإعلان بنجاح! + scheduled_for: بُرمِج على %{time} scheduled_msg: تمت جدولة نشر الإعلان! title: الإعلانات unpublished_msg: تم إلغاء نشر الإعلان بنجاح! @@ -1074,6 +1075,7 @@ ar: zero: بدون صوت %{count} vote: صوّت show_more: أظهر المزيد + show_thread: اعرض خيط المحادثة sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/ast.yml b/config/locales/ast.yml index 308fef71c..d7e0faf41 100644 --- a/config/locales/ast.yml +++ b/config/locales/ast.yml @@ -40,7 +40,6 @@ ast: one: Siguidor other: Siguidores joined: Xunióse en %{date} - last_active: última actividá moved_html: "%{name} mudóse a %{new_profile_link}:" network_hidden: Esta información nun ta disponible never_active: Enxamás @@ -73,6 +72,7 @@ ast: reject_all: Refugar too resend_confirmation: already_confirmed: Esti usuariu yá ta confirmáu + send: Reunviar les instrucciones role: Permisos roles: admin: Alministrador @@ -92,6 +92,7 @@ ast: disable_custom_emoji: "%{name} desactivó'l fustaxe %{target}" disable_user: "%{name} desactivó l'aniciu de sesión del usuariu %{target}" enable_custom_emoji: "%{name} activó'l fustaxe %{target}" + enable_user: "%{name} activó l'aniciu de sesión del usuariu %{target}" promote_user: "%{name} ascendió al usuariu %{target}" remove_avatar_user: "%{name} desanició l'avatar de %{target}" reopen_report: "%{name} reabrió l'informe de %{target}" @@ -147,6 +148,7 @@ ast: other: "%{count} informes" are_you_sure: "¿De xuru?" status: Estáu + title: Informes settings: registrations: min_invite_role: @@ -167,6 +169,7 @@ ast: new_pending_account: body: Los detalles de la cuenta nueva tán embaxo. Pues aprobar o refugar esta aplicación. new_report: + body: "%{reporter} informó de %{target}" body_remote: Daquién dende %{domain} informó de %{target} new_trending_tag: body: 'Güei la etiqueta #%{name} ye tendencia pero nun se revisó anteriormente. Nun va amosase públicamente a nun ser que lo permitas o guardes el formulariu como ta pa nun saber más d''ello.' @@ -180,6 +183,7 @@ ast: body: Mastodon tradúcenlu voluntarios, guide_link: https://crowdin.com/project/mastodon guide_link_text: tol mundu pue collaborar. + sensitive_content: Conteníu sensible toot_layout: Distribución de los barritos applications: invalid_url: La URL apurrida nun ye válida @@ -192,6 +196,7 @@ ast: delete_account_html: Si deseyes desaniciar la to cuenta, pues <a href="%{path}">siguir equí</a>. Va pidísete la confirmación. description: suffix: "¡Con una cuenta, vas ser a siguir a persones, espublizar anovamientos ya intercambiar mensaxes con usuarios de cualesquier sirvidor de Mastodon y más!" + didnt_get_confirmation: "¿Nun recibiesti les instrucciones de confirmación?" forgot_password: "¿Escaeciesti la contraseña?" login: Aniciar sesión migrate_account: Mudase a otra cuenta @@ -221,6 +226,7 @@ ast: email_contact_html: Si entá nun aportó, pues unviar un corréu a<a href="mailto:%{email}">%{email}</a> pa más ayuda more_details_html: Pa más detalles, mira la <a href="%{terms_path}">política de privacidá</a>. directories: + directory: Direutoriu de perfiles explanation: y descubri a usuarios según los sos intereses explore_mastodon: Esplora %{title} errors: @@ -266,15 +272,22 @@ ast: generic: all: Too changes_saved_msg: "¡Los cambeos guardáronse con ésitu!" + order_by: Clasificación save_changes: Guardar cambeos identity_proofs: authorize: Sí, autorizar i_am_html: Soi %{username} de %{service}. identity: Identidá imports: + modes: + merge: Mecíu + merge_long: Caltién los rexistros esistentes y amesta otros nuevos + overwrite: Sobrescritura + overwrite_long: Troca los rexistros actuales por otros nuevos preface: Pues importar los datos qu'esportares dende otra instancia, como por exemplu la llista de persones que bloquiares o tuvieres siguiendo. types: blocking: Llista de xente bloquiao + domain_blocking: Llista de dominios bloquiaos following: Llista de siguidores muting: Llista de xente silenciao upload: Xubir @@ -345,10 +358,12 @@ ast: preferences: public_timelines: Llinies temporales públiques relationships: + activity: Actividá followers: Siguidores most_recent: Lo más recién relationship: Rellación remove_selected_follows: Dexar de siguir a los usuarios esbillaos + status: Estáu remote_follow: acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer no_account_html: "¿Nun tienes una cuenta? Pues <a href='%{sign_up_path}' target='_blank'>rexistrate equí</a>" diff --git a/config/locales/cy.yml b/config/locales/cy.yml index d1d099f32..afca0212a 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -1157,6 +1157,7 @@ cy: zero: "%{count} pleidlais" vote: Pleidleisio show_more: Dangos mwy + show_thread: Dangos edefyn sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/devise.kab.yml b/config/locales/devise.kab.yml index c2624315d..650ade1e4 100644 --- a/config/locales/devise.kab.yml +++ b/config/locales/devise.kab.yml @@ -8,21 +8,21 @@ kab: failure: already_authenticated: Aqla-k teqqneḍ yakan. inactive: Amiḍan-inek mazal ur yermed ara. - invalid: Tella tuccḍa deg %{authentication_keys} neɣ deg wawal uffir. - last_attempt: Ɣur-k yiwen n uɛraḍ-nniḍen kan qbel ad yettucekkel umiḍan-ik. + invalid: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir. + last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik. locked: Amiḍan-ik yewḥel. - not_found_in_database: Tella tuccḍa deg %{authentication_keys} neɣ deg wawal uffir. - pending: Amiḍan-inek mazal-it deg ɛiwed n tmuɣli. - timeout: Tiɣimit n tuqqna tezri. Ma ulac aɣilif ɛiwed tuqqna akken ad tkemmleḍ. + not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir. + pending: Amiḍan-inek mazal-it deg ɛiwed n tmuγli. + timeout: Tiγimit n tuqqna tezri. Ma ulac aγilif ɛiwed tuqqna akken ad tkemmleḍ. unauthenticated: Ilaq ad teqqneḍ neγ ad tjerrḍeḍ akken ad tkemmelḍ. unconfirmed: Ilaq ad wekdeḍ tansa-inek imayl akken ad tkemmelḍ. mailer: confirmation_instructions: action: Senqed tansa-inek imayl - action_with_app: Wekked sakkin uɣal ɣer %{app} + action_with_app: Wekked sakkin uγal γer %{app} explanation: Aqla-k terniḍ amiḍan deg %{host} s tansa imayl-agi. Mazal-ak yiwen utekki akken ad t-tremdeḍ. Ma mačči d kečč i yessutren ay-agi, ttxil-k ssinef izen-a. - explanation_when_pending: Tsutreḍ-d ajerred deg %{host} s tansa-agi imayl. Ad nɣeṛ asuter-ik ticki tsentmeḍ tansa-ik imayl. Send asentem, ur tezmireḍ ara ad teqqneḍ ɣer umiḍan-ik. Ma yella nugi asuter-ik, isefka-ik ad ttwakksen seg uqeddac, ihi ulac tigawt-nniḍen ara k-d-yettuqeblen. Ma mačči d kečč i yellan deffir n usuter-agi, ttxil-k ssinef izen-agi. - extra_html: Ttxil-k ẓer daɣen <a href="%{terms_path}">ilugan n uqeddac</a> akked <a href="%{policy_path}">twetlin n useqdec</a>. + explanation_when_pending: Tsutreḍ-d ajerred deg %{host} s tansa-agi imayl. Ad nγeṛ asuter-ik ticki tsentmeḍ tansa-ik imayl. Send asentem, ur tezmireḍ ara ad teqqneḍ γer umiḍan-ik. Ma yella nugi asuter-ik, isefka-ik ad ttwakksen seg uqeddac, ihi ulac tigawt-nniḍen ara k-d-yettuqeblen. Ma mačči d kečč i yellan deffir n usuter-agi, ttxil-k ssinef izen-agi. + extra_html: Ttxil-k ẓer daγen <a href="%{terms_path}">ilugan n uqeddac</a> akked <a href="%{policy_path}">twetlin n useqdec</a>. subject: 'Maṣṭudun: Asentem n ujerred deg uqeddac %{instance}' title: Senqed tansa-inek imayl email_changed: @@ -43,7 +43,7 @@ kab: explanation: Tessutreḍ awal uffir amaynut i umiḍan-ik. title: Aɛiwed n wawal uffir passwords: - send_paranoid_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneɣ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaɣ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam. + send_paranoid_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneγ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaγ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam. updated: Awal-ik uffir yettwabeddel mebla ugur. Aqla-k tura tjerrḍeḍ. updated_not_active: Awal-ik uffir yettwabeddel mebla ugur. registrations: @@ -51,7 +51,7 @@ kab: signed_up: Anṣuf! Aqla-k tkecmeḍ. sessions: signed_in: Aqla-k teqqneḍ. - signed_out: Aqla-k teffɣeḍ. + signed_out: Aqla-k teffγeḍ. errors: messages: not_found: ulac-it diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index a0af51c32..6336a5794 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -46,6 +46,18 @@ pl: extra: Jeżeli to nie Ty, zignoruj tą wiadomość. Twoje hasło nie ulegnie zmianie, jeżeli nie wykorzystasz powyższego odnośnika i nie utworzysz nowego hasła. subject: 'Mastodon: Instrukcje ustawienia nowego hasła' title: Przywracanie hasła + two_factor_disabled: + explanation: Uwierzytelnianie dwuskładnikowe dla Twojego konta zostało wyłączone. Możesz się teraz logować korzystając z samego adresu e-mail i hasła. + subject: Mastodon – wyłączono uwierzytelnianie dwustopniowe + title: Wyłączono 2FA + two_factor_enabled: + explanation: Uwierzytelnianie dwuskładnikowe dla Twojego konta zostało włączone. Logując się, będziesz potrzebować tokenu z połączonej aplikacji TOTP. + subject: Mastodon – włączono uwierzytelnianie dwustopniowe + title: Włączono 2FA + two_factor_recovery_codes_changed: + explanation: Poprzednie kody zapasowe zostały unieważnione, a nowe zostały wygenerowane. + subject: Mastodon – wygenerowano nowe kody ratunkowe 2FA + title: Zmieniono kody odzyskiwania 2FA unlock_instructions: subject: 'Mastodon: Instrukcje odblokowania konta' omniauth_callbacks: diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index af9dee300..b9ab81618 100644 --- a/config/locales/doorkeeper.ast.yml +++ b/config/locales/doorkeeper.ast.yml @@ -77,7 +77,7 @@ ast: scopes: admin:read: lleer tolos datos del sirvidor admin:read:accounts: lleer la información sensible de toles cuentes - admin:read:reports: lleer la información sensible de tolos informe y cuentes informaes + admin:read:reports: lleer la información sensible de tolos informes y cuentes informaes admin:write: modificar tolos datos del sirvidor read: lleer tolos datos de la to cuenta read:accounts: ver información de cuentes diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml index 9cd506488..b384b76b1 100644 --- a/config/locales/doorkeeper.kab.yml +++ b/config/locales/doorkeeper.kab.yml @@ -12,7 +12,7 @@ kab: attributes: redirect_uri: fragment_present: ur yezmir ad yegber afrur. - invalid_uri: ilaq ad tili d tansa URL tameɣtut. + invalid_uri: ilaq ad tili d tansa URL tameγtut. relative_uri: ilaq ad yili d URI amagdaz. secured_uri: ilaq URI ad yili HTTPS/SSL. doorkeeper: @@ -56,19 +56,23 @@ kab: title: Tella-d tuccḍa new: able_to: Asnas-agi yezmer - prompt: Eǧǧ i %{client_name} ad yekcem ɣer umiḍan-ik + prompt: Eǧǧ i %{client_name} ad yekcem γer umiḍan-ik + title: Tlaq tsiregt show: - title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas. + title: Nγel tangalt n wurag sakkin senteḍ-itt deg usnas. authorized_applications: + buttons: + revoke: Ḥwi confirmations: revoke: Tetḥeqqeḍ? index: application: Asnas created_at: Yettussireg date_format: "%d-%m-%Y %H:%M:%S" + title: Isnasen-ik·im yettusirgen errors: messages: - invalid_redirect_uri: URI n uwelleh mačči d ameɣtu. + invalid_redirect_uri: URI n uwelleh mačči d ameγtu. flash: applications: create: @@ -77,16 +81,21 @@ kab: notice: Asnan yettwakkes. update: notice: Asnan yettwalqem. + authorized_applications: + destroy: + notice: Yettwaḥwi wesnas. layouts: admin: nav: applications: Isnasen + application: + title: Tlaq tsiregt n OAuth scopes: - admin:read: ɣeṛ akk isefka ɣef uqeddac - admin:write: ẓreg akk isefka ɣef uqeddac - follow: beddel assaɣen n umiḍan - push: ṭṭef-d tilɣa-ik yettwademren - read: ɣeṛ akk isefka n umiḍan-ik + admin:read: γeṛ akk isefka γef uqeddac + admin:write: ẓreg akk isefka γef uqeddac + follow: beddel assaγen n umiḍan + push: ṭṭef-d tilγa-ik yettwademren + read: γeṛ akk isefka n umiḍan-ik read:accounts: ẓer isallen n yimiḍanen read:blocks: ẓer imiḍanen i tesḥebseḍ read:bookmarks: ẓer ticraḍ-ik @@ -95,12 +104,13 @@ kab: read:follows: ẓer imeḍfaṛen-ik read:lists: ẓer tibdarin-ik read:mutes: ẓer wid i tesgugmeḍ - read:notifications: ẓer tilɣa-ik - read:statuses: ẓer meṛṛa tisuffaɣ + read:notifications: ẓer tilγa-ik + read:statuses: ẓer meṛṛa tisuffaγ write: beddel meṛṛa isefka n umiḍan-ik - write:accounts: ẓreg amaɣnu-ik - write:blocks: seḥbes imiḍanen d tɣula + write:accounts: ẓreg amaγnu-ik + write:blocks: seḥbes imiḍanen d tγula write:bookmarks: ad yernu tisuffγin γer ticraḍ write:filters: rnu-d imsizedgen write:follows: ḍfeṛ imdanen write:lists: rnu-d tibdarin + write:media: ad yessali ifayluyen n teγwalt diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml index 2068eeef4..7c6c4fb6d 100644 --- a/config/locales/doorkeeper.pl.yml +++ b/config/locales/doorkeeper.pl.yml @@ -38,6 +38,7 @@ pl: application: Aplikacja callback_url: URL wywołania zwrotnego (callback) delete: Usuń + empty: Nie masz aplikacji. name: Nazwa new: Nowa aplikacja scopes: Zakres @@ -125,6 +126,7 @@ pl: read: możliwość odczytu wszystkich danych konta read:accounts: dostęp do informacji o koncie read:blocks: dostęp do listy blokowanych + read:bookmarks: dostęp do zakładek read:favourites: dostęp do listy ulubionych read:filters: dostęp do filtrów read:follows: dostęp do listy śledzonych @@ -137,6 +139,7 @@ pl: write: możliwość modyfikowania wszystkich danych o koncie write:accounts: możliwość modyfikowania informacji o koncie write:blocks: możliwość blokowania domen i użytkowników + write:bookmarks: możliwość dodawania wpisów do zakładek write:favourites: możliwość dodawnia wpisów do ulubionych write:filters: możliwość tworzenia filtrów write:follows: możliwość śledzenia ludzi diff --git a/config/locales/id.yml b/config/locales/id.yml index 6ef16c8ed..ca222946c 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -743,8 +743,10 @@ id: add_new: Tambah baru errors: limit: Anda sudah menampilkan tagar unggulan dengan jumlah maksimum + hint_html: "<strong>Apa itu tagar yang diunggulkan?</strong> Mereka ditampilkan secara mencolok di profil publik Anda dan mengizinkan orang-orang untuk menjelajahi kiriman publik khususnya yang ada di bawah tagar tersebut. Mereka adalah alat yang bagus untuk melacak pekerjaan kreatif atau proyek jangka panjang." filters: contexts: + account: Profil home: Beranda notifications: Notifikasi public: Linimasa publik @@ -768,6 +770,8 @@ id: all: Semua changes_saved_msg: Perubahan berhasil disimpan! copy: Salin + delete: Hapus + no_batch_actions_available: Tindakan batch tidak tersedia di halaman ini order_by: Urut berdasarkan save_changes: Simpan perubahan validation_errors: diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 1e8b508ba..03f4d8c13 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -1,12 +1,12 @@ --- kab: about: - about_hashtag_html: Tigi d tijewwiqin tizuyaz, γur-sent <strong>#%{hashtag}</strong>. Tzemreḍ ad tesdemreḍ akked yid-sent ma tesɛiḍ amiḍan deg kra n umḍiq deg fediverse. + about_hashtag_html: Tigi d tijewwiqin tizuyaz, γur-sent <strong>#%{hashtag}</strong>. Tzemreḍ ad tesdemreḍ akked yid-sent ma tesɛiḍ amiḍan deg kra n umḍiq deg fedivers. about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna γef leqder d ttrebga, daγen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!' about_this: Γef active_count_after: d urmid active_footnote: Imseqdacen yekkren s wayyur (MAU) - administered_by: 'Yettwadbel sɣur:' + administered_by: 'Yettwadbel sγur:' api: API apps: Isnasen izirazen apps_platforms: Seqdec Maṣṭudun deg iOS, Android d tγeṛγṛin-nniḍen @@ -22,18 +22,18 @@ kab: privacy_policy: Tasertit tabaḍnit see_whats_happening: Ẓer d acu i iḍerrun server_stats: 'Tidaddanin n uqeddac:' - source_code: Tangalt n uɣbalu + source_code: Tangalt Taγbalut status_count_after: - one: n tsuffeɣt - other: n tsuffɣin - status_count_before: I d-yessuffɣen + one: n tsuffeγt + other: n tsuffγin + status_count_before: I d-yessuffγen tagline: Ḍfeṛ imddukkal-ik tissineḍ-d wiyaḍ terms: Tiwetlin n useqdec unavailable_content: Ulac agbur unavailable_content_description: domain: Aqeddac reason: Taγzent - silenced: 'Tisuffɣin ara d-yekken seg yiqeddacen-agi ad ttwaffrent deg tsuddmin tizuyaz d yidiwenniten, daɣen ur ttilin ara telɣa ɣef usedmer n yimseqdacen-nsen, skud ur ten-teḍfiṛeḍ ara:' + silenced: 'Tisuffγin ara d-yekken seg yiqeddacen-agi ad ttwaffrent deg tsuddmin tizuyaz d yidiwenniten, daγen ur ttilin ara telγa γef usedmer n yimseqdacen-nsen, skud ur ten-teḍfiṛeḍ ara:' unavailable_content_html: Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an γur-k tsuraf i yellan deg uqeddac-agi. user_count_after: one: amseqdac @@ -46,10 +46,10 @@ kab: one: Ameḍfaṛ other: Imeḍfaṛen following: Yeṭafaṛ - joined: Yettwarna-d deg %{date} + joined: Ikcemed deg %{date} last_active: armud aneggaru media: Taγwalt - moved_html: "%{name} ibeddel amiḍan ɣer %{new_profile_link}:" + moved_html: 'ibeddel %{name} amiḍan γer %{new_profile_link}:' network_hidden: Ulac isalli-agi never_active: Werǧin nothing_here: Ulac kra da! @@ -59,13 +59,13 @@ kab: one: Tajewwiqt other: Tijewwiqin posts_tab_heading: Tiberraḥin - posts_with_replies: Tibarraḥin d tririyin + posts_with_replies: Tijewwaqin akked tririyin reserved_username: Isem-agi n umseqdac yettwaṭṭef yakan roles: admin: Anedbal bot: Aṛubut group: Agraw - unavailable: Ur nufi ara amaɣnu-a + unavailable: Ur nufi ara amaγnu-a unfollow: Ur ṭṭafaṛ ara admin: account_moderation_notes: @@ -76,7 +76,7 @@ kab: approve_all: Qbel kullec are_you_sure: Tetḥeqqeḍ? avatar: Tugna n wummuγ - by_domain: Taɣult + by_domain: Taγult change_email: changed_msg: Imayl n umiḍan yettwabeddel mebla ugur! current_email: Imayl n tura @@ -92,7 +92,7 @@ kab: disable_two_factor_authentication: Gdel 2FA disabled: Yensa display_name: Isem ara d-yettwaskanen - domain: Taɣult + domain: Taγult edit: Ẓreg email: Imayl email_status: Addad n imayl @@ -103,7 +103,7 @@ kab: header: Ixef inbox_url: URL n yinekcam ip: Tansa IP - joined: Yettwarna-d + joined: Ikcemed deg location: all: Akk local: Adigan @@ -121,7 +121,7 @@ kab: no_limits_imposed: War tilisa protocol: Aneggaf public: Azayez - redownload: Smiren amaɣnu + redownload: Smiren amaγnu reject: Ggami reject_all: Ggami-ten akk remove_avatar: Kkes tugna n wummuγ @@ -131,6 +131,7 @@ kab: success: Imayl n usentem yettwazen mebla ugur! reset: Wennez reset_password: Beddel awal uffir + role: Tisirag roles: admin: Anedbal staff: Tarbaɛt @@ -153,16 +154,16 @@ kab: actions: change_email_user: "%{name} ibeddel imayl n umseqdac %{target}" confirm_user: "%{name} isentem tansa imayl n umseqdac %{target}" - create_account_warning: "%{name} yuzen alɣu i %{target}" + create_account_warning: "%{name} yuzen alγu i %{target}" create_custom_emoji: "%{name} yessuli-d imujiten imaynuten %{target}" - create_domain_allow: "%{name} yerna taɣult %{target} ɣer tebdart tamellalt" - create_domain_block: "%{name} yesseḥbes taɣult %{target}" - create_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart taberkant" + create_domain_allow: "%{name} yerna taγult %{target} γer tebdart tamellalt" + create_domain_block: "%{name} yesseḥbes taγult %{target}" + create_email_domain_block: "%{name} yerna taγult n imayl %{target} γer tebdart taberkant" destroy_custom_emoji: "%{name} ihudd imuji %{target}" - destroy_domain_allow: "%{name} yekkes taɣult %{target} seg tebdart tamellalt" - destroy_domain_block: "%{name} yekkes aseḥbes n taɣult %{target}" - destroy_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart tamellalt" - destroy_status: "%{name} yekkes tasuffeɣt n %{target}" + destroy_domain_allow: "%{name} yekkes taγult %{target} seg tebdart tamellalt" + destroy_domain_block: "%{name} yekkes aseḥbes n taγult %{target}" + destroy_email_domain_block: "%{name} yerna taγult n imayl %{target} γer tebdart tamellalt" + destroy_status: "%{name} yekkes tasuffeγt n %{target}" disable_custom_emoji: "%{name} yessens imuji %{target}" disable_user: "%{name} yessens tuqqna i umseqdac %{target}" enable_custom_emoji: "%{name} yermed imuji %{target}" @@ -171,8 +172,8 @@ kab: silence_account: "%{name} yesgugem amiḍan n %{target}" unsilence_account: "%{name} yekkes asgugem n umiḍan n %{target}" update_custom_emoji: "%{name} yelqem imuji %{target}" - update_status: "%{name} yelqem tasuffeɣt n %{target}" - deleted_status: "(tasuffeɣt tettwakkes)" + update_status: "%{name} yelqem tasuffeγt n %{target}" + deleted_status: "(tasuffeγt tettwakkes)" announcements: edit: title: Ẓreg ulγu @@ -200,6 +201,7 @@ kab: list: Tabdart new: title: Timerna n imuji udmawan amaynut + overwrite: Semselsi title: Imujiten udmawanen unlist: Kkes si tabdert unlisted: Yettwakkes si tabdert @@ -218,9 +220,9 @@ kab: week_users_active: yermed deg yimalas-agi week_users_new: imseqdacen deg yimalas-agi domain_allows: - add_new: Timerna n taɣult ɣer tebdart tamellalt - created_msg: Taɣult-a tettwarna ɣer tebdart tamellalt mebla ugur - destroyed_msg: Taɣult-a tettwakkes seg tebdart tamellalt + add_new: Timerna n taγult γer tebdart tamellalt + created_msg: Taγult-a tettwarna γer tebdart tamellalt mebla ugur + destroyed_msg: Taγult-a tettwakkes seg tebdart tamellalt undo: Kkes seg tebdart tamellalt domain_blocks: domain: Taγult @@ -228,6 +230,8 @@ kab: severity: noop: Ula yiwen silence: Sgugem + private_comment: Awennit uslig + public_comment: Awennit azayez severity: silence: yettwasgugem show: @@ -238,7 +242,7 @@ kab: domain: Taγult new: create: Rnu taγult - title: Timerna n taɣult tamaynut n imayl ɣer tebdart taberkant + title: Timerna n taγult tamaynut n imayl γer tebdart taberkant title: Tabdart taberkant n imayl instances: by_domain: Taγult @@ -248,7 +252,10 @@ kab: other: "%{count} n yimiḍanen i yettwassnen" moderation: all: Akk - total_blocked_by_us: Ttwasḥebsen sɣur-neɣ + private_comment: Awennit uslig + public_comment: Awennit azayez + title: Tamatut + total_blocked_by_us: Ttwasḥebsen sγur-neγ total_followed_by_them: Ṭtafaṛen-t total_followed_by_us: Neṭṭafaṛ-it invites: @@ -264,6 +271,7 @@ kab: enable: Rmed enabled: Yermed save_and_enable: Sekles rnu rmed-it + status: Addad reports: account: reports: @@ -279,17 +287,18 @@ kab: delete: Kkes report: 'Aneqqis #%{id}' resolved: Fran + status: Addad title: Ineqqisen unresolved: Ur yefra ara updated_at: Yettwaleqqem settings: custom_css: - desc_html: Beddel aɣan s CSS ara d-yettwasalayen deg yal asebter + desc_html: Beddel aγan s CSS ara d-yettwasalayen deg yal asebter title: CSS udmawan domain_blocks: - all: Ɣef medden akk - disabled: Ɣef yiwen ala - users: Ɣef yimseqdacen idiganen i yeqqnen + all: I medden akk + disabled: Γef ula yiwen + users: Γef yimseqdacen idiganen i yeqqnen profile_directory: title: Rmed akaram n imaγnuten registrations: @@ -315,6 +324,7 @@ kab: tags: directory: Deg ukaram in_directory: "%{count} deg ukaram" + last_active: Armud aneggaru most_popular: Ittwasnen aṭas most_recent: Melmi kan warning_presets: @@ -325,6 +335,7 @@ kab: new_report: subject: Aneqqis amaynut i %{instance} (#%{id}) appearance: + discovery: Asnirem localization: guide_link: https://crowdin.com/project/mastodon guide_link_text: Yal yiwen·t y·tezmer a ttekki. @@ -349,6 +360,9 @@ kab: reset_password: Wennez awal uffir security: Taγellist set_new_password: Egr-ed awal uffir amaynut + status: + account_status: Addad n umiḍan + functional: Amiḍan-inek·m yettwaheyya. trouble_logging_in: Γur-k uguren n tuqqna? authorize_follow: already_following: Teṭafareḍ ya kan amiḍan-a @@ -394,12 +408,15 @@ kab: '429': Throttled '500': '503': The page could not be served due to a temporary server failure. + existing_username_validator: + not_found_multiple: ur yezmir ara ad yaf %{usernames} exports: archive_takeout: date: Azemz size: Teγzi csv: CSV lists: Tibdarin + mutes: Wid tesgugmeḍ featured_tags: add_new: Rnu amaynut filters: @@ -407,8 +424,14 @@ kab: account: Imuγna notifications: Tilγa thread: Idiwenniyen + edit: + title: Ẓreg amzizdig index: delete: Kkes + empty: Ur tesɛid ara imzizdigen. + title: Imzizdigen + new: + title: Rnu yiwen umzizdig amaynut footer: developers: Ineflayen more: Ugar… @@ -416,13 +439,21 @@ kab: all: Akk copy: Nγel delete: Kkes + order_by: Sizwer s save_changes: Sekles ibeddilen identity_proofs: + active: Yermed authorize: Ih, ssireg i_am_html: Nekki d %{username} deg %{service}. + identity: Tamagit + inactive: D arurmid + publicize_checkbox: 'Tjewqeḍ aya:' imports: + modes: + overwrite: Semselsi types: following: Tabdart n wid teṭafareḍ + upload: Sali invites: expires_in: '1800': 30 n tisdatin @@ -435,16 +466,23 @@ kab: title: Ɛreḍ-d kra n yimdanen migrations: acct: Ibeddel γer + incoming_migrations: Tusiḍ-ed seg umiḍan nniḍen notification_mailer: + digest: + action: Wali akk tilγa + mention: 'Yuder-ik-id %{name} deg:' follow: body: "%{name} yeṭafaṛ-ik-id tura!" subject: "%{name} yeṭafaṛ-ik-id tura" title: Ameḍfaṛ amaynut mention: action: Err + notifications: + other_settings: Iγewwaṛen nniḍen n tilγa pagination: newer: Amaynut next: Wayed + older: Aqbuṛ prev: Win iɛeddan truncate: d preferences: @@ -452,9 +490,12 @@ kab: relationships: followers: Imeḍfaṛen following: Yeṭafaṛ + moved: Igujj + status: Addad n umiḍan remote_follow: no_account_html: Ur tesɛid ara amiḍan? Tzmreḍ <a href='%{sign_up_path}' target='_blank'>ad jerdeḍ da</a> sessions: + activity: Armud aneggaru browser: Iminig browsers: alipay: Alipay @@ -463,8 +504,14 @@ kab: edge: Microsoft Edge electron: Electron firefox: Firefox + generic: Iminig arusin + ie: Internet Explorer + micro_messenger: MicroMessenger + nokia: Nokia S40 Ovi Browser opera: Opera otter: Otter + phantom_js: PhantomJS + qq: QQ Browser safari: Safari uc_browser: UCBrowser weibo: Weibo @@ -482,13 +529,19 @@ kab: mac: Mac windows: Windows windows_mobile: Windows Mobile + windows_phone: Tiliγri Windows Phone + revoke: Ḥwi settings: account: Amiḍan account_settings: Iγewwaṛen n umiḍan appearance: Udem + authorized_apps: Isnasen yettussirgen back: Uγal γer Maṣṭudun development: Taneflit edit_profile: Ẓreg amaγnu + export: Taktert n yisefka + import: Kter + import_and_export: Taktert d usifeḍ notifications: Tilγa preferences: Imenyafen profile: Ameγnu @@ -511,8 +564,10 @@ kab: title: '%{name}: "%{quote}"' visibilities: private: Imeḍfaṛen kan + private_long: Sken i ymeḍfaṛen kan public_long: Yal yiwen·t yezmer at iwali stream_entries: + pinned: Tijewwiqt yettwasentḍen sensitive_content: Agbur amḥulfu terms: title: Tiwtilin n useqdec akked tsertit tabaḍnit n %{instance} @@ -535,6 +590,7 @@ kab: full_handle: Tansa umiḍan-ik takemmalit review_preferences_action: Beddel imenyafen subject: Ansuf γer Maṣṭudun + tips: Tixbaluyin title: Ansuf yessek·em, %{name}! users: signed_in_as: 'Teqqneḍ amzun d:' diff --git a/config/locales/nl.yml b/config/locales/nl.yml index d350a8e20..976072368 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -39,7 +39,7 @@ nl: unavailable_content_description: domain: Server reason: 'Reden:' - rejecting_media: Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken. + rejecting_media: 'Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken:' silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt. suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld. unavailable_content_html: Met Mastodon kun je in het algemeen berichten bekijken van en communiceren met gebruikers van elke andere server in de fediverse. Dit zijn de uitzonderingen die door deze server zijn gemaakt en expliciet alleen hier gelden. @@ -953,8 +953,8 @@ nl: public_timelines: Openbare tijdlijnen reactions: errors: - limit_reached: Limiet van verschillende reacties bereikt - unrecognized_emoji: is geen bestaande emoji + limit_reached: Limiet van verschillende emoji-reacties bereikt + unrecognized_emoji: is geen bestaande emoji-reactie relationships: activity: Accountactiviteit dormant: Sluimerend diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 774319a5a..6f04720c5 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -11,6 +11,7 @@ pl: apps: Aplikacje apps_platforms: Korzystaj z Mastodona z poziomu iOS-a, Androida i innych browse_directory: Przeglądaj katalog profilów i filtruj z uwzględnieniem zainteresowań + browse_local_posts: Przeglądaj strumień publicznych wpisów z tego serwera browse_public_posts: Przeglądaj strumień publicznych wpisów na Mastodonie na żywo contact: Kontakt contact_missing: Nie ustawiono @@ -85,6 +86,7 @@ pl: roles: admin: Administrator bot: Bot + group: Grupa moderator: Moderator unavailable: Profil niedostępny unfollow: Przestań śledzić @@ -204,11 +206,15 @@ pl: change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}" confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}" create_account_warning: "%{name} wysłał(a) ostrzeżenie do %{target}" + create_announcement: "%{name} utworzył(a) nowe ogłoszenie %{target}" create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}" + create_domain_allow: "%{name} dodał(a) na białą listę domenę %{target}" create_domain_block: "%{name} zablokował(a) domenę %{target}" create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę" demote_user: "%{name} zdegradował(a) użytkownika %{target}" + destroy_announcement: "%{name} usunął(-ęła) ogłoszenie %{target}" destroy_custom_emoji: "%{name} usunął(-ęła) emoji %{target}" + destroy_domain_allow: "%{name} usunął(-ęła) domenę %{target} z białej listy" destroy_domain_block: "%{name} odblokował(a) domenę %{target}" destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy" destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}" @@ -228,10 +234,26 @@ pl: unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}" unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}" unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}" + update_announcement: "%{name} zaktualizował(-a) ogłoszenie %{target}" update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}" update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}" deleted_status: "(usunięty wpis)" title: Dziennik działań administracyjnych + announcements: + destroyed_msg: Pomyślnie usunięto ogłoszenie! + edit: + title: Edytuj ogłoszenie + empty: Nie znaleziono ogłoszeń. + live: Na żywo + new: + create: Utwórz ogłoszenie + title: Nowe ogłoszenie + published_msg: Pomyślnie opublikowano ogłoszenie! + scheduled_for: Zaplanowano na %{time} + scheduled_msg: Zaplanowano publikację ogłoszenia! + title: Ogłoszenia + unpublished_msg: Pomyślnie wycofano publikację ogłoszenia! + updated_msg: Pomyślnie zaktualizowano ogłoszenie! custom_emojis: assign_category: Ustaw kategorię by_domain: Domeny @@ -243,9 +265,11 @@ pl: delete: Usuń destroyed_msg: Pomyślnie usunięto emoji! disable: Wyłącz + disabled: Wyłączone disabled_msg: Pomyślnie wyłączono emoji emoji: Emotikona enable: Włącz + enabled: Włączone enabled_msg: Pomyślnie przywrócono emoji image_hint: Plik PNG ważący do 50KB list: Dodaj do listy @@ -314,6 +338,7 @@ pl: private_comment: Prywatny komentarz private_comment_hint: Komentarz na temat ograniczeń dla tej domeny do wewnętrznej informacji dla moderatorów. public_comment: Publiczny komentarz + public_comment_hint: Komentarz dotyczący tego ograniczenia domeny widoczny publicznie, jeżeli wyświetlanie listy ograniczonych domen jest włączone. reject_media: Odrzucaj pliki multimedialne reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu reject_reports: Odrzucaj zgłoszenia @@ -342,6 +367,7 @@ pl: delete: Usuń destroyed_msg: Pomyślnie usunięto blokadę domeny e-mail domain: Domena + empty: Żadna domena e-mail nie znajduje się obecnie na czarnej liście. new: create: Utwórz blokadę title: Nowa blokada domeny e-mail @@ -376,6 +402,8 @@ pl: title: Zaproszenia pending_accounts: title: Oczekujące konta (%{count}) + relationships: + title: Relacje %{acct} relays: add_new: Dodaj nowy delete: Usuń @@ -400,6 +428,7 @@ pl: are_you_sure: Czy na pewno? assign_to_self: Przypisz do siebie assigned: Przypisany moderator + by_target_domain: Domena zgłaszanego konta comment: none: Brak created_at: Zgłoszono diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index e62fd2447..db4369e92 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -5,27 +5,29 @@ kab: account_alias: acct: Specify the username@domain of the account you want to move from account_migration: - acct: Sekcem isem n umseqdac@taɣult n umiḍan wuɣur tebɣiḍ ad tuɣaleḍ + acct: Sekcem isem n umseqdac@taγult n umiḍan anida itebγiḍ ad gujjeḍ admin_account_action: - send_email_notification: Amseqdac ad t-id-yewweḍ usefhem ɣef wayen yeḍran akked umiḍan-is + send_email_notification: Amseqdac ad t-id-yewweḍ usefhem γef wayen yeḍran akked umiḍan-is type_html: Fren d acu ara txedmeḍ s <strong>%{acct}</strong> defaults: autofollow: Imdanen ara ijerrden s usnebgi-inek, ad k-ḍefṛen s wudem awurman - discoverable: Tabdert n yimaɣnuten d udem-nniḍen i umiḍan-ik akken ad yettwassen ugar + discoverable: Tabdert n yimaγnuten d udem-nniḍen i umiḍan-ik akken ad yettwassen ugar email: Ad n-teṭṭfeḍ imayl i usentem - irreversible: Tibarraḥin i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat - locale: Tutlayt n ugrudem, imaylen d tilɣa + irreversible: Tijewwaqin i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat + locale: Tutlayt n ugrudem, imaylen d tilγa password: Seqdec ma drus 8 n yisekkilen - setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaɣnu-inek + setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaγnu-inek username: Isem-ik n umseqdac ad yili d ayiwen, ulac am netta deg %{domain} featured_tag: - name: 'Ahat ad tebɣuḍ ad tesqedceḍ yiwen gar-asen:' + name: 'Ahat ad tebγuḍ ad tesqedceḍ yiwen gar-asen:' imports: data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun labels: account: fields: value: Agbur + account_migration: + acct: Tansa n umiḍan amaynut admin_account_action: types: silence: Sgugem @@ -49,6 +51,7 @@ kab: setting_display_media_hide_all: Ffer kullec setting_display_media_show_all: Sken kullec setting_hide_network: Ffer azetta-k·m + setting_theme: Asental n wesmel username: Isem n useqdac username_or_email: Isem n useqdac neγ imal whole_word: Awal akk @@ -57,7 +60,7 @@ kab: invite: comment: Awennit invite_request: - text: Acimi tebɣiḍ ad ternuḍ iman-ik? + text: Acimi tebγiḍ ad ternuḍ iman-ik? 'no': Ala required: mark: "*" diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index d3d726440..c985badb4 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -39,12 +39,16 @@ pl: whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień featured_tag: name: 'Sugerujemy użycie jednego z następujących:' + form_challenge: + current_password: Wchodzisz w strefę bezpieczną imports: data: Plik CSV wyeksportowany z innego serwera Mastodona invite_request: text: To pomoże nam w recenzji Twojej aplikacji sessions: otp: 'Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych:' + tag: + name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne user: chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu labels: @@ -52,9 +56,14 @@ pl: fields: name: Nazwa value: Zawartość + account_alias: + acct: Nazwa starego konta + account_migration: + acct: Nazwa nowego konta account_warning_preset: text: Tekst szablonu admin_account_action: + include_statuses: Uwzględniaj zgłoszone wpisy w wiadomości e-mail send_email_notification: Powiadom użytkownika mailem text: Niestandardowe ostrzeżenie type: Działanie @@ -64,6 +73,12 @@ pl: silence: Wycisz suspend: Zawieś i nieodwracalnie usuń dane konta warning_preset_id: Użyj szablonu ostrzeżenia + announcement: + all_day: Wydarzenie całodniowe + ends_at: Koniec wydarzenia + scheduled_at: Zaplanuj publikację + starts_at: Początek wydarzenia + text: Ogłoszenie defaults: autofollow: Zapraszaj do śledzenia swojego konta avatar: Awatar @@ -94,6 +109,7 @@ pl: setting_aggregate_reblogs: Grupuj podbicia na osiach czasu setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy setting_boost_modal: Pytaj o potwierdzenie przed podbiciem + setting_crop_images: Przycinaj obrazki w nierozwiniętych wpisach do 16x9 setting_default_language: Język wpisów setting_default_privacy: Widoczność wpisów setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą @@ -110,8 +126,11 @@ pl: setting_show_application: Informuj o aplikacji z której wysłano wpisy setting_skin: Motyw setting_system_font_ui: Używaj domyślnej czcionki systemu + setting_theme: Motyw strony + setting_trends: Pokazuj dzisiejsze „Na czasie” setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia setting_use_blurhash: Pokazuj kolorowe gradienty dla ukrytej zawartości multimedialnej + setting_use_pending_items: Tryb spowolniony severity: Priorytet type: Importowane dane username: Nazwa użytkownika @@ -123,6 +142,8 @@ pl: must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie śledzisz + invite: + comment: Komentarz invite_request: text: Czemu chcesz dołączyć? notification_emails: @@ -134,6 +155,12 @@ pl: pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie + trending_tag: Nieprzejrzany hashtag jest na czasie + tag: + listable: Pozwól, aby ten hashtag pojawiał się w wynikach wyszukiwania i katalogu profilów + name: Hashtag + trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie” + usable: Pozwól na umieszczanie tego hashtagu we wpisach 'no': Nie recommended: Polecane required: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 16adcb837..dbee6bb12 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -357,6 +357,7 @@ sk: delete: Vymaž destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných domain: Doména + empty: Žiadné emailové domény niesú v súčasnosti na čiernej listine. new: create: Pridaj doménu title: Nový email na zablokovanie @@ -391,6 +392,8 @@ sk: title: Pozvánky pending_accounts: title: Čakajúcich účtov (%{count}) + relationships: + title: Vzťahy užívateľa %{acct} relays: add_new: Pridaj nový federovací mostík delete: Vymaž @@ -467,6 +470,8 @@ sk: users: Prihláseným, miestnym užívateľom domain_blocks_rationale: title: Ukáž zdôvodnenie + enable_bootstrap_timeline_accounts: + title: Novým užívateľom povoľ východiskové následovania hero: desc_html: Zobrazuje sa na hlavnej stránke. Doporučené je rozlišenie aspoň 600x100px. Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru. title: Obrázok hrdinu @@ -594,6 +599,7 @@ sk: confirmation_dialogs: Potvrdzovacie dialógy discovery: Nájdenie localization: + body: Mastodon je prekladaný dobrovoľníkmi. guide_link_text: Prispievať môže každý. sensitive_content: Chúlostivý obsah toot_layout: Rozloženie príspevkov @@ -938,6 +944,7 @@ sk: dormant: Spiace followers: Následovatelia following: Následovaní + invited: Pozvaný/á last_active: Naposledy aktívny most_recent: Najnovšie moved: Presunuli sa diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 4a56470d0..c3e288eee 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def flags - 'rc2' + '' end def suffix diff --git a/spec/lib/sanitize_config_spec.rb b/spec/lib/sanitize_config_spec.rb index c5143bcef..50558a0d8 100644 --- a/spec/lib/sanitize_config_spec.rb +++ b/spec/lib/sanitize_config_spec.rb @@ -14,5 +14,21 @@ describe Sanitize::Config do it 'keeps ul' do expect(Sanitize.fragment('<p>Check out:</p><ul><li>Foo</li><li>Bar</li></ul>', subject)).to eq '<p>Check out:</p><ul><li>Foo</li><li>Bar</li></ul>' end + + it 'removes a without href' do + expect(Sanitize.fragment('<a>Test</a>', subject)).to eq 'Test' + end + + it 'removes a without href and only keeps text content' do + expect(Sanitize.fragment('<a><span class="invisible">foo&</span><span>Test</span></a>', subject)).to eq 'foo&Test' + end + + it 'removes a with unsupported scheme in href' do + expect(Sanitize.fragment('<a href="foo://bar">Test</a>', subject)).to eq 'Test' + end + + it 'keeps a with href' do + expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener tag noreferrer" target="_blank">Test</a>' + end end end |