diff --git a/CHANGELOG.md b/CHANGELOG.md index fa5b2bfedeaa6c8813343bf780bdadf7fe4a15e1..84e08341e87b768dc1f7a2351826a9bfc56fa4a2 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 5e6ea2f0be4643847751ee41cd5eb5be587d1c95..9329f3ab098a15e09966f406296655f40c73b9a9 100644 --- a/Gemfile +++ b/Gemfile @@ -60,7 +60,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' +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 75f2d482882f2f1e917a29b180e120feca9505b2..c8a37dd4b7690749d014c966330e8276659ac0f6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -282,7 +282,7 @@ GEM http-parser (1.2.1) ffi-compiler (>= 1.0, < 2.0) http_accept_language (2.1.1) - httplog (1.4.0) + httplog (1.4.2) rack (>= 1.0) rainbow (>= 2.0.0) i18n (1.8.2) @@ -709,7 +709,7 @@ DEPENDENCIES http (~> 4.3) http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! - httplog (~> 1.4) + 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 6231733b71aa101f395a7e8b80f7ea684d488b3c..4aa31695c701463714a9f936c85a304464520389 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 77d5661b8d596b94dc6a5d0012d966a0a106b368..b0bc2f6b7f8c86339ecb5b5299c9ec4a1ca46d61 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -24,7 +24,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) @@ -33,7 +33,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' @@ -57,10 +57,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/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 4b3c79d0daec82bf46bec05dd278a34a62455bdf..e2c8d43c98d3c1f34d74c37d692920bf478e0506 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 657d2bb1c5ee56719eb64f68755c2f024ff11e44..959774da4605991865c53adb80be0d00e6e1b145 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 596ebc051399f518b43d19208cd621920432abd8..c71212b85ca87062dc450e04f1ddbe037ada0b34 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 8a2657792d925d7e547f7f3b266f711d6047d073..8006a13061f41e90c47ffc566a13a9d1fae5784d 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 11092a1330e630fd791298ca42c787ba23927359..f55420793ea9866f4ee027c55a2f9469024a8727 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 0a14b54c29f9f0fc54dc1f7200017427d600ea90..f5bc084e651af13426200ba020c4f04a27a07302 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 7985572004d87618fefc0c2ef67828efb467568d..76657cdde56921e9497f5b2bd48fe7ecef9a04cd 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 9a99f25581258b2afcc1a637057373b5decfd349..2a1ddc6cd77003628835179a5f2aa4d006de0f27 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 d7311050860a62d363786a1494eb3dcedeefe8ee..e78b4cc4f8adc3e57d9e01c47b2f56956c8fc0cb 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 48bfc825a60b346d34fd4fbf679d1e7a47247205..858aa2668cf4ef0a7df46be8a3ed055c7c2eeb7d 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.", @@ -85,8 +85,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", @@ -184,8 +184,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}}", @@ -335,7 +335,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Ä…?", @@ -416,11 +416,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 cdb34f4f5472d2e31a057e93717f2ec545fbb003..39d2bdf030bfedd92b76f3e412fdd4f80f5b8bfa 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 05d93d42ee2d45d7bc1682b670e474abd3e13ea8..40835df481b60f8270450cb5df2f7f3242c70b21 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 d90d9734dc0658cd02a548966492baf087661160..653ad818805ecf22f9321c03b186c90675143427 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 2c5674869365c828d7e5844098508259d598de75..e6f5d7a6327969a990f12bab33ff0e26dc79530d 100644 --- a/app/lib/formatter.rb +++ b/app/lib/formatter.rb @@ -46,6 +46,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 a82411127931ab07fd771ebdf39ee197bd4720e4..4ad1199a60442c9788d8c731e963ff31cfd1a62b 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] @@ -19,19 +35,37 @@ class Sanitize node['class'] = class_list.join(' ') 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 + UNSUPPORTED_ELEMENTS_TRANSFORMER = lambda do |env| return unless %w(h1 h2 h3 h4 h5 h6 blockquote pre ul ol li).include?(env[:node_name]) + current_node = env[:node] + case env[:node_name] when 'li' - env[:node].traverse do |node| + current_node.traverse do |node| next unless %w(p ul ol li).include?(node.name) node.add_next_sibling('<br>') if node.next_sibling node.replace(node.children) unless node.text? end else - env[:node].name = 'p' + current_node.name = 'p' end end @@ -50,13 +84,12 @@ class Sanitize }, }, - protocols: { - 'a' => { 'href' => HTTP_PROTOCOLS }, - }, + protocols: {}, transformers: [ CLASS_WHITELIST_TRANSFORMER, UNSUPPORTED_ELEMENTS_TRANSFORMER, + UNSUPPORTED_HREF_TRANSFORMER, ] ) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index 29ad729882313639656854c1763f2d3f0d8cc5f0..f5a6f067db5086148e696679f620296f7203f8b9 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 308fef71cb74e0542fcba1312fdf550939caea1b..d7e0faf414c37b4e215b1707f6c76f67944e24cd 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 be44b226b176520ecf305a9b87992b221a1c3f6d..d649b62c46400c6915c46c39ee9d678fea2bd967 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 c2624315d723e8e3f2e00d81c4a5ede7a1d924f8..650ade1e41307481849ee656171b76a0b4a32545 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 81004eb95f9e07eeffd0ebcf2ac46b57b15c5d83..380872074da3eb431527349bc7909750d1ca9424 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: 'quey: 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: 'quey: Instrukcje odblokowania konta' omniauth_callbacks: diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml index af9dee3001ad7d4cc8a13a4b0161d2fa772e1b8c..b9ab816182bf68121c24f9a1fa9bab64e1c64fdc 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 9cd506488f7cf544ab6221e803fff4940f0fe00d..b384b76b16578da0e0d03bb24f3af8fef2b6afb9 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 2068eeef466de4038338792deaf90eab96d0c719..7c6c4fb6dba46c74f0624a1ad2fc30d7ac880ee2 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 f6405f4305f599bdd052b8e43f77a6c600e4a4c0..db5c9a70a44cffbfdfeb71e4e06ffc5b53480480 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 1e8b508bac9d9e25f83992614b5ce64564ef7888..03f4d8c13dff3587b94b8b899516cb561945f2a0 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 a2b8e9c2fa3a747319ee478dbaecb1805ba0a312..fb6b8f437eb7eab5fd445ec38f75701cf08828e5 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 quey 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 3c7601c581ac0dfb10a4bf4c61c162a44d14c4a5..d84e6c3b21f8de1b6ae80d621851040ec2513ee8 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -11,7 +11,8 @@ pl: apps: Aplikacje apps_platforms: Korzystaj z queya z poziomu iOS-a, Androida i innych browse_directory: PrzeglÄ…daj katalog profilów i filtruj z uwzglÄ™dnieniem zainteresowaÅ„ - browse_public_posts: PrzeglÄ…daj strumieÅ„ publicznych wpisów na queyie na żywo + 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 contact_unavailable: Nie dotyczy @@ -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 e62fd2447aed67ef8e9f1aa1c23c8fdaa3d1b4ff..db4369e92f6b1e8b5dac71b45c2a1916aa40475e 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 7b156e0b3d361db15f29efe053dd9887cffe6597..1ab07f35480d1a2a4a3a6ab5b59be2887fa168a2 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -38,12 +38,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 queya 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: @@ -51,9 +55,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 @@ -63,6 +72,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 @@ -93,6 +108,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Ä… @@ -108,8 +124,10 @@ pl: setting_show_application: Informuj o aplikacji z której wysÅ‚ano wpisy 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 @@ -121,6 +139,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: @@ -132,6 +152,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 31cfc9bc051b4c8a55f2613488477f526ac134b8..15bd5e29578738ffa5d43cfd05dc087b26c44ff4 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 ed1a8cbae287c530ca27fbc5c15eb94b849c4190..291fbd9003de9ef735f7d6acefe6d58f9a64c9c2 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 feb86af352838263b037f8d5ede0fba8ad200c0f..d66302e6449eca185bb399cd8f89e7bb4e2dd48e 100644 --- a/spec/lib/sanitize_config_spec.rb +++ b/spec/lib/sanitize_config_spec.rb @@ -26,5 +26,21 @@ describe Sanitize::Config do it 'keep links in lists' do expect(Sanitize.fragment('<p>Check out:</p><ul><li><a href="https://joinmastodon.org" rel="nofollow noopener noreferrer" target="_blank">joinmastodon.org</a></li><li>Bar</li></ul>', subject)).to eq '<p>Check out:</p><p><a href="https://joinmastodon.org" rel="nofollow noopener noreferrer" target="_blank">joinmastodon.org</a><br>Bar</p>' 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 noreferrer" target="_blank">Test</a>' + end end end