mirror of
https://framagit.org/tykayn/mastodon.git
synced 2023-08-25 08:33:12 +02:00
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - `app/services/remove_status_service.rb`: Conflict caused by us having a distinc Direct timeline. Ported upstream changes. - `app/javascript/mastodon/features/compose/components/compose_form.js`: Conflict between glitch-soc's variable character limit and upstream refactoring that part of the code. Ported upstream changes.
This commit is contained in:
commit
f8d867bac4
179
CHANGELOG.md
179
CHANGELOG.md
@ -3,6 +3,185 @@ Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## Unreleased
|
||||
### Added
|
||||
|
||||
- **Add hotkeys for audio/video control in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15158), [Gargron](https://github.com/tootsuite/mastodon/pull/15198))
|
||||
- `Space` and `k` to toggle playback
|
||||
- `m` to toggle mute
|
||||
- `f` to toggle fullscreen
|
||||
- `j` and `l` to go back and forward by 10 seconds
|
||||
- `.` and `,` to go back and forward by a frame (video only)
|
||||
- Add expand/compress button on media modal in web UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15068), [mashirozx](https://github.com/tootsuite/mastodon/pull/15088), [mashirozx](https://github.com/tootsuite/mastodon/pull/15094))
|
||||
- Add border around 🕺 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14769))
|
||||
- Add border around 🐞 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14712))
|
||||
- Add home link to the getting started column when home isn't mounted ([ThibG](https://github.com/tootsuite/mastodon/pull/14707))
|
||||
- Add option to disable swiping motions across the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13885))
|
||||
- **Add pop-out player for audio/video in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/14870), [Gargron](https://github.com/tootsuite/mastodon/pull/15157), [Gargron](https://github.com/tootsuite/mastodon/pull/14915))
|
||||
- Continue watching/listening when you scroll away
|
||||
- Action bar to interact with/open toot from the pop-out player
|
||||
- Add unread notification markers in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14818), [ThibG](https://github.com/tootsuite/mastodon/pull/14960), [ThibG](https://github.com/tootsuite/mastodon/pull/14954), [noellabo](https://github.com/tootsuite/mastodon/pull/14897), [noellabo](https://github.com/tootsuite/mastodon/pull/14907))
|
||||
- Add paragraph about browser add-ons when encountering errors in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14801))
|
||||
- Add import and export for bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/14956))
|
||||
- Add cache buster feature for media files ([Gargron](https://github.com/tootsuite/mastodon/pull/15155))
|
||||
- If you have a proxy cache in front of object storage, deleted files will persist until the cache expires
|
||||
- If enabled, cache buster will make a special request to the proxy to signal a cache reset
|
||||
- Add duration option to the mute function ([aquarla](https://github.com/tootsuite/mastodon/pull/13831))
|
||||
- Add replies policy option to the list function ([ThibG](https://github.com/tootsuite/mastodon/pull/9205))
|
||||
- Add `og:published_time` OpenGraph tags on toots ([nornagon](https://github.com/tootsuite/mastodon/pull/14865))
|
||||
- **Add option to be notified when a followed user posts** ([Gargron](https://github.com/tootsuite/mastodon/pull/13546), [ThibG](https://github.com/tootsuite/mastodon/pull/14896), [Gargron](https://github.com/tootsuite/mastodon/pull/14822))
|
||||
- If you don't want to miss a toot, click the bell button!
|
||||
- Add client-side validation in password change forms ([ThibG](https://github.com/tootsuite/mastodon/pull/14564))
|
||||
- Add client-side validation in the registration form ([ThibG](https://github.com/tootsuite/mastodon/pull/14560), [ThibG](https://github.com/tootsuite/mastodon/pull/14599))
|
||||
- Add support for Gemini URLs ([joshleeb](https://github.com/tootsuite/mastodon/pull/15013))
|
||||
- Add WebAuthn as an alternative 2FA method ([santiagorodriguez96](https://github.com/tootsuite/mastodon/pull/14466), [jiikko](https://github.com/tootsuite/mastodon/pull/14806))
|
||||
- Add icon for mutual relationships in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15149))
|
||||
- Add follow selected followers button in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15148))
|
||||
- **Add subresource integrity for JS and CSS assets** ([Gargron](https://github.com/tootsuite/mastodon/pull/15096))
|
||||
- If you use a CDN for static assets (JavaScript, CSS, and so on), you have to trust that the CDN does not modify the assets maliciously
|
||||
- Subresource integrity compares server-generated asset digests with what's actually served from the CDN and prevents such attacks
|
||||
- Add `ku`, `sa`, `sc`, `zgh` to available locales ([ykzts](https://github.com/tootsuite/mastodon/pull/15138))
|
||||
- Add ability to force an account to mark media as sensitive ([noellabo](https://github.com/tootsuite/mastodon/pull/14361))
|
||||
- **Add ability to block access or limit sign-ups from chosen IPs** ([Gargron](https://github.com/tootsuite/mastodon/pull/14963))
|
||||
- Add rules for IPs or CIDR ranges that automatically expire after a configurable amount of time
|
||||
- Choose the severity of the rule, either blocking all access or merely limiting sign-ups
|
||||
- **Add support for reversible suspensions through ActivityPub** ([Gargron](https://github.com/tootsuite/mastodon/pull/14989))
|
||||
- Servers can signal that one of their accounts has been suspended
|
||||
- During suspension, the account can only delete its own content
|
||||
- A reversal of the suspension can be signalled the same way
|
||||
- A local suspension always overrides a remote one
|
||||
- Add ActivityPub follower synchronization mechanism ([ThibG](https://github.com/tootsuite/mastodon/pull/14510), [ThibG](https://github.com/tootsuite/mastodon/pull/15026))
|
||||
- Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721))
|
||||
- Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595))
|
||||
- Add support for dereferencing objects through bearcaps ([Gargron](https://github.com/tootsuite/mastodon/pull/14683), [noellabo](https://github.com/tootsuite/mastodon/pull/14981))
|
||||
- Add `S3_READ_TIMEOUT` environment variable ([tateisu](https://github.com/tootsuite/mastodon/pull/14952))
|
||||
- Add `ALLOWED_PRIVATE_ADDRESSES` environment variable ([ThibG](https://github.com/tootsuite/mastodon/pull/14722))
|
||||
- Add `--fix-permissions` option to `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/14383), [uist1idrju3i](https://github.com/tootsuite/mastodon/pull/14715))
|
||||
- Add `tootctl accounts merge` ([Gargron](https://github.com/tootsuite/mastodon/pull/15201))
|
||||
- Has someone changed their domain or subdomain thereby creating two accounts where there should be one?
|
||||
- This command will fix it on your end
|
||||
- Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223))
|
||||
- Index corruption in the database?
|
||||
- This command is for you
|
||||
- **Add support for managing multiple stream subscriptions in a single connection** ([Gargron](https://github.com/tootsuite/mastodon/pull/14524), [Gargron](https://github.com/tootsuite/mastodon/pull/14566), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14859), [zunda](https://github.com/tootsuite/mastodon/pull/14608))
|
||||
- Previously, getting live updates for multiple timelines required opening a HTTP or WebSocket connection for each
|
||||
- More connections means more resource consumption on both ends, not to mention the (ever so slight) delay when establishing a new connection
|
||||
- Now, with just a single WebSocket connection you can subscribe and unsubscribe to and from multiple streams
|
||||
- Add support for limiting results by both `min_id` and `max_id` at the same time in REST API ([tateisu](https://github.com/tootsuite/mastodon/pull/14776))
|
||||
- Add `GET /api/v1/accounts/:id/featured_tags` to REST API ([noellabo](https://github.com/tootsuite/mastodon/pull/11817))
|
||||
- Add optional `tootctl remove media` cronjob in Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14396))
|
||||
|
||||
### Changed
|
||||
|
||||
- **Change media modals look in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15217), [Gargron](https://github.com/tootsuite/mastodon/pull/15221))
|
||||
- Background of the overlay matches the color of the image
|
||||
- Action bar to interact with or open the toot from the modal
|
||||
- Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091))
|
||||
- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855))
|
||||
- Suspensions no longer equal deletions
|
||||
- A suspended account can be unsuspended with minimal consequences for 30 days
|
||||
- Immediate deletion of data is still available as an explicit option
|
||||
- Suspended accounts can request an archive of their data through the UI
|
||||
- Change REST API to return empty data for suspended accounts (14765)
|
||||
- Change web UI to show empty profile for suspended accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/14766))
|
||||
- Change featured hashtag suggestions to be recently used instead of most used ([abcang](https://github.com/tootsuite/mastodon/pull/14760))
|
||||
- Change direct toots to appear in the home feed again ([Gargron](https://github.com/tootsuite/mastodon/pull/14711), [ThibG](https://github.com/tootsuite/mastodon/pull/15182), [noellabo](https://github.com/tootsuite/mastodon/pull/14727))
|
||||
- Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model
|
||||
- Change email address validation to return more specific errors ([ThibG](https://github.com/tootsuite/mastodon/pull/14565))
|
||||
- Change HTTP signature requirements to include `Digest` header on `POST` requests ([ThibG](https://github.com/tootsuite/mastodon/pull/15069))
|
||||
- Change click area of video/audio player buttons to be bigger in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15049))
|
||||
- Change order of filters by alphabetic by "keyword or phrase" ([ariasuni](https://github.com/tootsuite/mastodon/pull/15050))
|
||||
- Change suspension of remote accounts to also undo outgoing follows ([ThibG](https://github.com/tootsuite/mastodon/pull/15188))
|
||||
- Change string "Home" to "Home and lists" in the filter creation screen ([ariasuni](https://github.com/tootsuite/mastodon/pull/15139))
|
||||
- Change string "Boost to original audience" to "Boost with original visibility" in web UI ([3n-k1](https://github.com/tootsuite/mastodon/pull/14598))
|
||||
- Change string "Show more" to "Show newer" and "Show older" on public pages ([ariasuni](https://github.com/tootsuite/mastodon/pull/15052))
|
||||
- Change order of announcements to be reverse chronological in web UI ([dariusk](https://github.com/tootsuite/mastodon/pull/15065), [dariusk](https://github.com/tootsuite/mastodon/pull/15070))
|
||||
- Change visibility icon next to timestamp to be clickable in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15053), [mayaeh](https://github.com/tootsuite/mastodon/pull/15055))
|
||||
|
||||
### Removed
|
||||
|
||||
- Remove fade-in animation from modals in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15199))
|
||||
- Remove auto-redirect to direct messages in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15142))
|
||||
- Remove obsolete IndexedDB operations from web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14730))
|
||||
- Remove dependency on unused and unmaintained http_parser.rb gem ([ThibG](https://github.com/tootsuite/mastodon/pull/14574))
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Fix deletes not reaching every server that interacted with toot** ([Gargron](https://github.com/tootsuite/mastodon/pull/15200))
|
||||
- Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot
|
||||
- Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned
|
||||
- Fix resolving an account through its non-canonical form (i.e. alternate domain) ([ThibG](https://github.com/tootsuite/mastodon/pull/15187))
|
||||
- Fix sending redundant ActivityPub events when processing remote account deletion ([ThibG](https://github.com/tootsuite/mastodon/pull/15104))
|
||||
- Fix Move handler not being triggered when failing to fetch target account ([ThibG](https://github.com/tootsuite/mastodon/pull/15107))
|
||||
- Fix downloading remote media files when server returns empty filename ([ThibG](https://github.com/tootsuite/mastodon/pull/14867))
|
||||
- Fix account processing failing because of large collections ([ThibG](https://github.com/tootsuite/mastodon/pull/15027))
|
||||
- Fix not being able to unfavorite toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/15192))
|
||||
- Fix not being able to unbookmark toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/14604))
|
||||
- Fix possible casing inconsistencies in hashtag search ([ThibG](https://github.com/tootsuite/mastodon/pull/14906))
|
||||
- Fix updating account counters when association is not yet created ([Gargron](https://github.com/tootsuite/mastodon/pull/15108))
|
||||
- Fix cookies not having a SameSite attribute ([Gargron](https://github.com/tootsuite/mastodon/pull/15098))
|
||||
- Fix poll ending notifications being created for each vote ([ThibG](https://github.com/tootsuite/mastodon/pull/15071))
|
||||
- Fix multiple boosts of a same toot erroneously appearing in TL ([ThibG](https://github.com/tootsuite/mastodon/pull/14759))
|
||||
- Fix asset builds not picking up `CDN_HOST` change ([ThibG](https://github.com/tootsuite/mastodon/pull/14381))
|
||||
- Fix desktop notifications permission prompt in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14985), [Gargron](https://github.com/tootsuite/mastodon/pull/15141), [ThibG](https://github.com/tootsuite/mastodon/pull/13543))
|
||||
- Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click)
|
||||
- This means that for some time, users who haven't already given the permission before were not getting a prompt and as such were not receiving desktop notifications
|
||||
- Fix "Mark media as sensitive" string not supporting pluralizations in other languages in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15051))
|
||||
- Fix glitched image uploads when canvas read access is blocked in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15180))
|
||||
- Fix some account gallery items having empty labels in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15073))
|
||||
- Fix alt-key hotkeys activating while typing in a text field in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14942))
|
||||
- Fix wrong seek bar width on media player in web UI ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/15060))
|
||||
- Fix logging out on mobile in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14901))
|
||||
- Fix wrong click area for GIFVs in media modal in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14615))
|
||||
- Fix unreadable placeholder text color in high contrast theme in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14803))
|
||||
- Fix scrolling issues when closing some dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14606))
|
||||
- Fix notification filter bar incorrectly filtering gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14808))
|
||||
- Fix disabled boost icon being replaced by private boost icon on hover in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14456))
|
||||
- Fix hashtag detection in compose form being different to server-side in web UI ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/14484), [ThibG](https://github.com/tootsuite/mastodon/pull/14513))
|
||||
- Fix home last read marker mishandling gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14809))
|
||||
- Fix inefficiency when fetching hashtag timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/14861), [akihikodaki](https://github.com/tootsuite/mastodon/pull/14662))
|
||||
- Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674))
|
||||
- Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673))
|
||||
- Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675))
|
||||
- Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534))
|
||||
- Fix PostgreSQL secret name for cronjob in Helm chart ([metal3d](https://github.com/tootsuite/mastodon/pull/15072))
|
||||
- Fix Procfile not being compatible with herokuish ([acuteaura](https://github.com/tootsuite/mastodon/pull/12685))
|
||||
- Fix installation of tini being split into multiple steps in Dockerfile ([ryncsn](https://github.com/tootsuite/mastodon/pull/14686))
|
||||
|
||||
### Security
|
||||
|
||||
- Fix streaming API allowing connections to persist after access token invalidation ([Gargron](https://github.com/tootsuite/mastodon/pull/15111))
|
||||
- Fix 2FA/sign-in token sessions being valid after password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14802))
|
||||
|
||||
## [3.2.1] - 2020-10-19
|
||||
### Added
|
||||
|
||||
- Add support for latest HTTP Signatures spec draft ([ThibG](https://github.com/tootsuite/mastodon/pull/14556))
|
||||
- Add support for inlined objects in ActivityPub `to`/`cc` ([ThibG](https://github.com/tootsuite/mastodon/pull/14514))
|
||||
|
||||
### Changed
|
||||
|
||||
- Change actors to not be served at all without authentication in limited federation mode ([ThibG](https://github.com/tootsuite/mastodon/pull/14800))
|
||||
- Previously, a bare version of an actor was served when not authenticated, i.e. username and public key
|
||||
- Because all actor fetch requests are signed using a separate system actor, that is no longer required
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix `tootctl media` commands not recognizing very large IDs ([ThibG](https://github.com/tootsuite/mastodon/pull/14536))
|
||||
- Fix crash when failing to load emoji picker in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14525))
|
||||
- Fix contrast requirements in thumbnail color extraction ([ThibG](https://github.com/tootsuite/mastodon/pull/14464))
|
||||
- Fix audio/video player not using `CDN_HOST` on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14486))
|
||||
- Fix private boost icon not being used on public pages ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14471))
|
||||
- Fix audio player on Safari in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14485), [ThibG](https://github.com/tootsuite/mastodon/pull/14465))
|
||||
- Fix dereferencing remote statuses not using the correct account for signature when receiving a targeted inbox delivery ([ThibG](https://github.com/tootsuite/mastodon/pull/14656))
|
||||
- Fix nil error in `tootctl media remove` ([noellabo](https://github.com/tootsuite/mastodon/pull/14657))
|
||||
- Fix videos with near-60 fps being rejected ([Gargron](https://github.com/tootsuite/mastodon/pull/14684))
|
||||
- Fix reported statuses not being included in warning e-mail ([Gargron](https://github.com/tootsuite/mastodon/pull/14778))
|
||||
- Fix `Reject` activities of `Follow` objects not correctly destroying a follow relationship ([ThibG](https://github.com/tootsuite/mastodon/pull/14479))
|
||||
- Fix inefficiencies in fan-out-on-write service ([Gargron](https://github.com/tootsuite/mastodon/pull/14682), [noellabo](https://github.com/tootsuite/mastodon/pull/14709))
|
||||
- Fix timeout errors when trying to webfinger some IPv6 configurations ([Gargron](https://github.com/tootsuite/mastodon/pull/14919))
|
||||
- Fix files served as `application/octet-stream` being rejected without attempting mime type detection ([ThibG](https://github.com/tootsuite/mastodon/pull/14452))
|
||||
|
||||
## [3.2.0] - 2020-07-27
|
||||
### Added
|
||||
|
||||
|
@ -4,7 +4,7 @@ FROM ubuntu:20.04 as build-dep
|
||||
SHELL ["bash", "-c"]
|
||||
|
||||
# Install Node v12 (LTS)
|
||||
ENV NODE_VER="12.16.3"
|
||||
ENV NODE_VER="12.20.0"
|
||||
RUN ARCH= && \
|
||||
dpkgArch="$(dpkg --print-architecture)" && \
|
||||
case "${dpkgArch##*-}" in \
|
||||
|
1
Gemfile
1
Gemfile
@ -44,6 +44,7 @@ gem 'net-ldap', '~> 0.16'
|
||||
gem 'omniauth-cas', '~> 2.0'
|
||||
gem 'omniauth-saml', '~> 1.10'
|
||||
gem 'omniauth', '~> 1.9'
|
||||
gem 'omniauth-rails_csrf_protection', '~> 0.1'
|
||||
|
||||
gem 'color_diff', '~> 0.1'
|
||||
gem 'discard', '~> 1.2'
|
||||
|
@ -375,6 +375,9 @@ GEM
|
||||
addressable (~> 2.3)
|
||||
nokogiri (~> 1.5)
|
||||
omniauth (~> 1.2)
|
||||
omniauth-rails_csrf_protection (0.1.2)
|
||||
actionpack (>= 4.2)
|
||||
omniauth (>= 1.3.1)
|
||||
omniauth-saml (1.10.3)
|
||||
omniauth (~> 1.3, >= 1.3.2)
|
||||
ruby-saml (~> 1.9)
|
||||
@ -742,6 +745,7 @@ DEPENDENCIES
|
||||
oj (~> 3.10)
|
||||
omniauth (~> 1.9)
|
||||
omniauth-cas (~> 2.0)
|
||||
omniauth-rails_csrf_protection (~> 0.1)
|
||||
omniauth-saml (~> 1.10)
|
||||
ox (~> 2.13)
|
||||
paperclip (~> 6.0)
|
||||
|
@ -17,6 +17,6 @@ class Api::V1::Accounts::FeaturedTagsController < Api::BaseController
|
||||
end
|
||||
|
||||
def set_featured_tags
|
||||
@featured_tags = @account.suspended? ? @account.featured_tags : []
|
||||
@featured_tags = @account.suspended? ? [] : @account.featured_tags
|
||||
end
|
||||
end
|
||||
|
@ -7,6 +7,13 @@ module ApplicationHelper
|
||||
follow
|
||||
).freeze
|
||||
|
||||
RTL_LOCALES = %i(
|
||||
ar
|
||||
fa
|
||||
he
|
||||
ku
|
||||
).freeze
|
||||
|
||||
def active_nav_class(*paths)
|
||||
paths.any? { |path| current_page?(path) } ? 'active' : ''
|
||||
end
|
||||
@ -44,7 +51,7 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def locale_direction
|
||||
if [:ar, :fa, :he].include?(I18n.locale)
|
||||
if RTL_LOCALES.include?(I18n.locale)
|
||||
'rtl'
|
||||
else
|
||||
'ltr'
|
||||
|
@ -1,12 +1,18 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import 'wicg-inert';
|
||||
import { normal } from 'color-blend';
|
||||
|
||||
export default class ModalRoot extends React.PureComponent {
|
||||
|
||||
static propTypes = {
|
||||
children: PropTypes.node,
|
||||
onClose: PropTypes.func.isRequired,
|
||||
backgroundColor: PropTypes.shape({
|
||||
r: PropTypes.number,
|
||||
g: PropTypes.number,
|
||||
b: PropTypes.number,
|
||||
}),
|
||||
};
|
||||
|
||||
activeElement = this.props.children ? document.activeElement : null;
|
||||
@ -62,9 +68,7 @@ export default class ModalRoot extends React.PureComponent {
|
||||
Promise.resolve().then(() => {
|
||||
this.activeElement.focus({ preventScroll: true });
|
||||
this.activeElement = null;
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
});
|
||||
}).catch(console.error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -91,10 +95,16 @@ export default class ModalRoot extends React.PureComponent {
|
||||
);
|
||||
}
|
||||
|
||||
let backgroundColor = null;
|
||||
|
||||
if (this.props.backgroundColor) {
|
||||
backgroundColor = normal({ ...this.props.backgroundColor, a: 1 }, { r: 0, g: 0, b: 0, a: 0.3 });
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='modal-root' ref={this.setRef}>
|
||||
<div style={{ pointerEvents: visible ? 'auto' : 'none' }}>
|
||||
<div role='presentation' className='modal-root__overlay' onClick={onClose} />
|
||||
<div role='presentation' className='modal-root__overlay' onClick={onClose} style={{ backgroundColor: backgroundColor ? `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, 0.7)` : null }} />
|
||||
<div role='dialog' className='modal-root__container'>{children}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -193,22 +193,24 @@ class Status extends ImmutablePureComponent {
|
||||
}
|
||||
|
||||
handleOpenVideo = (media, options) => {
|
||||
this.props.onOpenVideo(media, options);
|
||||
this.props.onOpenVideo(this._properStatus().get('id'), media, options);
|
||||
}
|
||||
|
||||
handleOpenMedia = (media, index) => {
|
||||
this.props.onOpenMedia(this._properStatus().get('id'), media, index);
|
||||
}
|
||||
|
||||
handleHotkeyOpenMedia = e => {
|
||||
const { onOpenMedia, onOpenVideo } = this.props;
|
||||
const status = this._properStatus();
|
||||
const statusId = this._properStatus().get('id');
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
if (status.get('media_attachments').size > 0) {
|
||||
if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {
|
||||
// TODO: toggle play/paused?
|
||||
} else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
|
||||
onOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 });
|
||||
if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
|
||||
onOpenVideo(statusId, status.getIn(['media_attachments', 0]), { startTime: 0 });
|
||||
} else {
|
||||
onOpenMedia(status.get('media_attachments'), 0);
|
||||
onOpenMedia(statusId, status.get('media_attachments'), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -416,7 +418,7 @@ class Status extends ImmutablePureComponent {
|
||||
media={status.get('media_attachments')}
|
||||
sensitive={status.get('sensitive')}
|
||||
height={110}
|
||||
onOpenMedia={this.props.onOpenMedia}
|
||||
onOpenMedia={this.handleOpenMedia}
|
||||
cacheWidth={this.props.cacheMediaWidth}
|
||||
defaultWidth={this.props.cachedMediaWidth}
|
||||
visible={this.state.showMedia}
|
||||
|
@ -30,6 +30,7 @@ export default class MediaContainer extends PureComponent {
|
||||
media: null,
|
||||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
};
|
||||
|
||||
handleOpenMedia = (media, index) => {
|
||||
@ -52,7 +53,16 @@ export default class MediaContainer extends PureComponent {
|
||||
document.body.classList.remove('with-modals--active');
|
||||
document.documentElement.style.marginRight = 0;
|
||||
|
||||
this.setState({ media: null, index: null, time: null });
|
||||
this.setState({
|
||||
media: null,
|
||||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
});
|
||||
}
|
||||
|
||||
setBackgroundColor = color => {
|
||||
this.setState({ backgroundColor: color });
|
||||
}
|
||||
|
||||
render () {
|
||||
@ -85,13 +95,14 @@ export default class MediaContainer extends PureComponent {
|
||||
);
|
||||
})}
|
||||
|
||||
<ModalRoot onClose={this.handleCloseMedia}>
|
||||
<ModalRoot backgroundColor={this.state.backgroundColor} onClose={this.handleCloseMedia}>
|
||||
{this.state.media && (
|
||||
<MediaModal
|
||||
media={this.state.media}
|
||||
index={this.state.index || 0}
|
||||
time={this.state.time}
|
||||
onClose={this.handleCloseMedia}
|
||||
onChangeBackgroundColor={this.setBackgroundColor}
|
||||
/>
|
||||
)}
|
||||
</ModalRoot>
|
||||
|
@ -152,12 +152,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
|
||||
dispatch(mentionCompose(account, router));
|
||||
},
|
||||
|
||||
onOpenMedia (media, index) {
|
||||
dispatch(openModal('MEDIA', { media, index }));
|
||||
onOpenMedia (statusId, media, index) {
|
||||
dispatch(openModal('MEDIA', { statusId, media, index }));
|
||||
},
|
||||
|
||||
onOpenVideo (media, options) {
|
||||
dispatch(openModal('VIDEO', { media, options }));
|
||||
onOpenVideo (statusId, media, options) {
|
||||
dispatch(openModal('VIDEO', { statusId, media, options }));
|
||||
},
|
||||
|
||||
onBlock (status) {
|
||||
|
@ -105,15 +105,18 @@ class AccountGallery extends ImmutablePureComponent {
|
||||
}
|
||||
|
||||
handleOpenMedia = attachment => {
|
||||
const { dispatch } = this.props;
|
||||
const statusId = attachment.getIn(['status', 'id']);
|
||||
|
||||
if (attachment.get('type') === 'video') {
|
||||
this.props.dispatch(openModal('VIDEO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } }));
|
||||
dispatch(openModal('VIDEO', { media: attachment, statusId, options: { autoPlay: true } }));
|
||||
} else if (attachment.get('type') === 'audio') {
|
||||
this.props.dispatch(openModal('AUDIO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } }));
|
||||
dispatch(openModal('AUDIO', { media: attachment, statusId, options: { autoPlay: true } }));
|
||||
} else {
|
||||
const media = attachment.getIn(['status', 'media_attachments']);
|
||||
const index = media.findIndex(x => x.get('id') === attachment.get('id'));
|
||||
|
||||
this.props.dispatch(openModal('MEDIA', { media, index, status: attachment.get('status') }));
|
||||
dispatch(openModal('MEDIA', { media, index, statusId }));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,18 @@ class ComposeForm extends ImmutablePureComponent {
|
||||
}
|
||||
}
|
||||
|
||||
getFulltextForCharacterCounting = () => {
|
||||
return [this.props.spoiler? this.props.spoilerText: '', countableText(this.props.text)].join('');
|
||||
}
|
||||
|
||||
canSubmit = () => {
|
||||
const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
|
||||
const fulltext = this.getFulltextForCharacterCounting();
|
||||
const isOnlyWhitespace = fulltext.length !== 0 && fulltext.trim().length === 0;
|
||||
|
||||
return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > maxChars || (isOnlyWhitespace && !anyMedia));
|
||||
}
|
||||
|
||||
handleSubmit = () => {
|
||||
if (this.props.text !== this.autosuggestTextarea.textarea.value) {
|
||||
// Something changed the text inside the textarea (e.g. browser extensions like Grammarly)
|
||||
@ -85,11 +97,7 @@ class ComposeForm extends ImmutablePureComponent {
|
||||
this.props.onChange(this.autosuggestTextarea.textarea.value);
|
||||
}
|
||||
|
||||
// Submit disabled:
|
||||
const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
|
||||
const fulltext = [this.props.spoilerText, countableText(this.props.text)].join('');
|
||||
|
||||
if (isSubmitting || isUploading || isChangingUpload || length(fulltext) > maxChars || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) {
|
||||
if (!this.canSubmit()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -179,10 +187,8 @@ class ComposeForm extends ImmutablePureComponent {
|
||||
}
|
||||
|
||||
render () {
|
||||
const { intl, onPaste, showSearch, anyMedia } = this.props;
|
||||
const { intl, onPaste, showSearch } = this.props;
|
||||
const disabled = this.props.isSubmitting;
|
||||
const text = [this.props.spoilerText, countableText(this.props.text)].join('');
|
||||
const disabledButton = disabled || this.props.isUploading || this.props.isChangingUpload || length(text) > maxChars || (text.length !== 0 && text.trim().length === 0 && !anyMedia);
|
||||
let publishText = '';
|
||||
|
||||
if (this.props.privacy === 'private' || this.props.privacy === 'direct') {
|
||||
@ -244,11 +250,11 @@ class ComposeForm extends ImmutablePureComponent {
|
||||
<PrivacyDropdownContainer />
|
||||
<SpoilerButtonContainer />
|
||||
</div>
|
||||
<div className='character-counter__wrapper'><CharacterCounter max={maxChars} text={text} /></div>
|
||||
<div className='character-counter__wrapper'><CharacterCounter max={maxChars} text={this.getFulltextForCharacterCounting()} /></div>
|
||||
</div>
|
||||
|
||||
<div className='compose-form__publish'>
|
||||
<div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabledButton} block /></div>
|
||||
<div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={!this.canSubmit()} block /></div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@ -22,6 +22,7 @@ const messages = defineMessages({
|
||||
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
|
||||
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
|
||||
replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },
|
||||
open: { id: 'status.open', defaultMessage: 'Expand this status' },
|
||||
});
|
||||
|
||||
const makeMapStateToProps = () => {
|
||||
@ -49,11 +50,19 @@ class Footer extends ImmutablePureComponent {
|
||||
intl: PropTypes.object.isRequired,
|
||||
dispatch: PropTypes.func.isRequired,
|
||||
askReplyConfirmation: PropTypes.bool,
|
||||
withOpenButton: PropTypes.bool,
|
||||
onClose: PropTypes.func,
|
||||
};
|
||||
|
||||
_performReply = () => {
|
||||
const { dispatch, status } = this.props;
|
||||
dispatch(replyCompose(status, this.context.router.history));
|
||||
const { dispatch, status, onClose } = this.props;
|
||||
const { router } = this.context;
|
||||
|
||||
if (onClose) {
|
||||
onClose();
|
||||
}
|
||||
|
||||
dispatch(replyCompose(status, router.history));
|
||||
};
|
||||
|
||||
handleReplyClick = () => {
|
||||
@ -97,8 +106,20 @@ class Footer extends ImmutablePureComponent {
|
||||
}
|
||||
};
|
||||
|
||||
handleOpenClick = e => {
|
||||
const { router } = this.context;
|
||||
|
||||
if (e.button !== 0 || !router) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { status } = this.props;
|
||||
|
||||
router.history.push(`/statuses/${status.get('id')}`);
|
||||
}
|
||||
|
||||
render () {
|
||||
const { status, intl } = this.props;
|
||||
const { status, intl, withOpenButton } = this.props;
|
||||
|
||||
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));
|
||||
const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private';
|
||||
@ -130,6 +151,7 @@ class Footer extends ImmutablePureComponent {
|
||||
<IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount />
|
||||
<IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
|
||||
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
|
||||
{withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='external-link' onClick={this.handleOpenClick} />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -276,22 +276,20 @@ class Status extends ImmutablePureComponent {
|
||||
}
|
||||
|
||||
handleOpenMedia = (media, index) => {
|
||||
this.props.dispatch(openModal('MEDIA', { media, index }));
|
||||
this.props.dispatch(openModal('MEDIA', { statusId: this.props.status.get('id'), media, index }));
|
||||
}
|
||||
|
||||
handleOpenVideo = (media, options) => {
|
||||
this.props.dispatch(openModal('VIDEO', { media, options }));
|
||||
this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options }));
|
||||
}
|
||||
|
||||
handleHotkeyOpenMedia = e => {
|
||||
const status = this._properStatus();
|
||||
const { status } = this.props;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
if (status.get('media_attachments').size > 0) {
|
||||
if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {
|
||||
// TODO: toggle play/paused?
|
||||
} else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
|
||||
if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
|
||||
this.handleOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 });
|
||||
} else {
|
||||
this.handleOpenMedia(status.get('media_attachments'), 0);
|
||||
|
@ -4,13 +4,14 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import PropTypes from 'prop-types';
|
||||
import Video from 'mastodon/features/video';
|
||||
import classNames from 'classnames';
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import IconButton from 'mastodon/components/icon_button';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import ImageLoader from './image_loader';
|
||||
import Icon from 'mastodon/components/icon';
|
||||
import GIFV from 'mastodon/components/gifv';
|
||||
import { disableSwiping } from 'mastodon/initial_state';
|
||||
import Footer from 'mastodon/features/picture_in_picture/components/footer';
|
||||
|
||||
const messages = defineMessages({
|
||||
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||
@ -20,15 +21,121 @@ const messages = defineMessages({
|
||||
|
||||
export const previewState = 'previewMediaModal';
|
||||
|
||||
const digitCharacters = [
|
||||
'0',
|
||||
'1',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'7',
|
||||
'8',
|
||||
'9',
|
||||
'A',
|
||||
'B',
|
||||
'C',
|
||||
'D',
|
||||
'E',
|
||||
'F',
|
||||
'G',
|
||||
'H',
|
||||
'I',
|
||||
'J',
|
||||
'K',
|
||||
'L',
|
||||
'M',
|
||||
'N',
|
||||
'O',
|
||||
'P',
|
||||
'Q',
|
||||
'R',
|
||||
'S',
|
||||
'T',
|
||||
'U',
|
||||
'V',
|
||||
'W',
|
||||
'X',
|
||||
'Y',
|
||||
'Z',
|
||||
'a',
|
||||
'b',
|
||||
'c',
|
||||
'd',
|
||||
'e',
|
||||
'f',
|
||||
'g',
|
||||
'h',
|
||||
'i',
|
||||
'j',
|
||||
'k',
|
||||
'l',
|
||||
'm',
|
||||
'n',
|
||||
'o',
|
||||
'p',
|
||||
'q',
|
||||
'r',
|
||||
's',
|
||||
't',
|
||||
'u',
|
||||
'v',
|
||||
'w',
|
||||
'x',
|
||||
'y',
|
||||
'z',
|
||||
'#',
|
||||
'$',
|
||||
'%',
|
||||
'*',
|
||||
'+',
|
||||
',',
|
||||
'-',
|
||||
'.',
|
||||
':',
|
||||
';',
|
||||
'=',
|
||||
'?',
|
||||
'@',
|
||||
'[',
|
||||
']',
|
||||
'^',
|
||||
'_',
|
||||
'{',
|
||||
'|',
|
||||
'}',
|
||||
'~',
|
||||
];
|
||||
|
||||
const decode83 = (str) => {
|
||||
let value = 0;
|
||||
let c, digit;
|
||||
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
c = str[i];
|
||||
digit = digitCharacters.indexOf(c);
|
||||
value = value * 83 + digit;
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
const decodeRGB = int => ({
|
||||
r: Math.max(0, (int >> 16)),
|
||||
g: Math.max(0, (int >> 8) & 255),
|
||||
b: Math.max(0, (int & 255)),
|
||||
});
|
||||
|
||||
export default @injectIntl
|
||||
class MediaModal extends ImmutablePureComponent {
|
||||
|
||||
static propTypes = {
|
||||
media: ImmutablePropTypes.list.isRequired,
|
||||
status: ImmutablePropTypes.map,
|
||||
statusId: PropTypes.string,
|
||||
index: PropTypes.number.isRequired,
|
||||
onClose: PropTypes.func.isRequired,
|
||||
intl: PropTypes.object.isRequired,
|
||||
onChangeBackgroundColor: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
static contextTypes = {
|
||||
@ -67,6 +174,7 @@ class MediaModal extends ImmutablePureComponent {
|
||||
|
||||
handleChangeIndex = (e) => {
|
||||
const index = Number(e.currentTarget.getAttribute('data-index'));
|
||||
|
||||
this.setState({
|
||||
index: index % this.props.media.size,
|
||||
zoomButtonHidden: true,
|
||||
@ -100,6 +208,25 @@ class MediaModal extends ImmutablePureComponent {
|
||||
this.props.onClose();
|
||||
});
|
||||
}
|
||||
|
||||
this._sendBackgroundColor();
|
||||
}
|
||||
|
||||
componentDidUpdate (prevProps, prevState) {
|
||||
if (prevState.index !== this.state.index) {
|
||||
this._sendBackgroundColor();
|
||||
}
|
||||
}
|
||||
|
||||
_sendBackgroundColor () {
|
||||
const { media, onChangeBackgroundColor } = this.props;
|
||||
const index = this.getIndex();
|
||||
const blurhash = media.getIn([index, 'blurhash']);
|
||||
|
||||
if (blurhash) {
|
||||
const backgroundColor = decodeRGB(decode83(blurhash.slice(2, 6)));
|
||||
onChangeBackgroundColor(backgroundColor);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
@ -112,6 +239,8 @@ class MediaModal extends ImmutablePureComponent {
|
||||
this.context.router.history.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
this.props.onChangeBackgroundColor(null);
|
||||
}
|
||||
|
||||
getIndex () {
|
||||
@ -127,30 +256,19 @@ class MediaModal extends ImmutablePureComponent {
|
||||
handleStatusClick = e => {
|
||||
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
||||
e.preventDefault();
|
||||
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
|
||||
this.context.router.history.push(`/statuses/${this.props.statusId}`);
|
||||
}
|
||||
}
|
||||
|
||||
render () {
|
||||
const { media, status, intl, onClose } = this.props;
|
||||
const { media, statusId, intl, onClose } = this.props;
|
||||
const { navigationHidden } = this.state;
|
||||
|
||||
const index = this.getIndex();
|
||||
let pagination = [];
|
||||
|
||||
const leftNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><Icon id='chevron-left' fixedWidth /></button>;
|
||||
const rightNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><Icon id='chevron-right' fixedWidth /></button>;
|
||||
|
||||
if (media.size > 1) {
|
||||
pagination = media.map((item, i) => {
|
||||
const classes = ['media-modal__button'];
|
||||
if (i === index) {
|
||||
classes.push('media-modal__button--active');
|
||||
}
|
||||
return (<li className='media-modal__page-dot' key={i}><button tabIndex='0' className={classes.join(' ')} onClick={this.handleChangeIndex} data-index={i}>{i + 1}</button></li>);
|
||||
});
|
||||
}
|
||||
|
||||
const content = media.map((image) => {
|
||||
const width = image.getIn(['meta', 'original', 'width']) || null;
|
||||
const height = image.getIn(['meta', 'original', 'height']) || null;
|
||||
@ -218,13 +336,19 @@ class MediaModal extends ImmutablePureComponent {
|
||||
'media-modal__navigation--hidden': navigationHidden,
|
||||
});
|
||||
|
||||
let pagination;
|
||||
|
||||
if (media.size > 1) {
|
||||
pagination = media.map((item, i) => (
|
||||
<button key={i} className={classNames('media-modal__page-dot', { active: i === index })} data-index={i} onClick={this.handleChangeIndex}>
|
||||
{i + 1}
|
||||
</button>
|
||||
));
|
||||
}
|
||||
|
||||
return (
|
||||
<div className='modal-root__modal media-modal'>
|
||||
<div
|
||||
className='media-modal__closer'
|
||||
role='presentation'
|
||||
onClick={onClose}
|
||||
>
|
||||
<div className='media-modal__closer' role='presentation' onClick={onClose} >
|
||||
<ReactSwipeableViews
|
||||
style={swipeableViewsStyle}
|
||||
containerStyle={containerStyle}
|
||||
@ -243,15 +367,10 @@ class MediaModal extends ImmutablePureComponent {
|
||||
{leftNav}
|
||||
{rightNav}
|
||||
|
||||
{status && (
|
||||
<div className={classNames('media-modal__meta', { 'media-modal__meta--shifted': media.size > 1 })}>
|
||||
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<ul className='media-modal__pagination'>
|
||||
{pagination}
|
||||
</ul>
|
||||
<div className='media-modal__overlay'>
|
||||
{pagination && <ul className='media-modal__pagination'>{pagination}</ul>}
|
||||
{statusId && <Footer statusId={statusId} withOpenButton onClose={onClose} />}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
@ -45,6 +45,10 @@ export default class ModalRoot extends React.PureComponent {
|
||||
onClose: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
state = {
|
||||
backgroundColor: null,
|
||||
};
|
||||
|
||||
getSnapshotBeforeUpdate () {
|
||||
return { visible: !!this.props.type };
|
||||
}
|
||||
@ -59,6 +63,10 @@ export default class ModalRoot extends React.PureComponent {
|
||||
}
|
||||
}
|
||||
|
||||
setBackgroundColor = color => {
|
||||
this.setState({ backgroundColor: color });
|
||||
}
|
||||
|
||||
renderLoading = modalId => () => {
|
||||
return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? <ModalLoading /> : null;
|
||||
}
|
||||
@ -71,13 +79,14 @@ export default class ModalRoot extends React.PureComponent {
|
||||
|
||||
render () {
|
||||
const { type, props, onClose } = this.props;
|
||||
const { backgroundColor } = this.state;
|
||||
const visible = !!type;
|
||||
|
||||
return (
|
||||
<Base onClose={onClose}>
|
||||
<Base backgroundColor={backgroundColor} onClose={onClose}>
|
||||
{visible && (
|
||||
<BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading(type)} error={this.renderError} renderDelay={200}>
|
||||
{(SpecificComponent) => <SpecificComponent {...props} onClose={onClose} />}
|
||||
{(SpecificComponent) => <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={onClose} />}
|
||||
</BundleContainer>
|
||||
)}
|
||||
</Base>
|
||||
|
@ -3,9 +3,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import PropTypes from 'prop-types';
|
||||
import Video from 'mastodon/features/video';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import classNames from 'classnames';
|
||||
import Icon from 'mastodon/components/icon';
|
||||
|
||||
export const previewState = 'previewVideoModal';
|
||||
|
||||
@ -13,7 +10,7 @@ export default class VideoModal extends ImmutablePureComponent {
|
||||
|
||||
static propTypes = {
|
||||
media: ImmutablePropTypes.map.isRequired,
|
||||
status: ImmutablePropTypes.map,
|
||||
statusId: PropTypes.string,
|
||||
options: PropTypes.shape({
|
||||
startTime: PropTypes.number,
|
||||
autoPlay: PropTypes.bool,
|
||||
@ -48,15 +45,8 @@ export default class VideoModal extends ImmutablePureComponent {
|
||||
}
|
||||
}
|
||||
|
||||
handleStatusClick = e => {
|
||||
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
||||
e.preventDefault();
|
||||
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
|
||||
}
|
||||
}
|
||||
|
||||
render () {
|
||||
const { media, status, onClose } = this.props;
|
||||
const { media, onClose } = this.props;
|
||||
const options = this.props.options || {};
|
||||
|
||||
return (
|
||||
@ -75,12 +65,6 @@ export default class VideoModal extends ImmutablePureComponent {
|
||||
alt={media.get('description')}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{status && (
|
||||
<div className={classNames('media-modal__meta')}>
|
||||
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -118,7 +118,6 @@ class Video extends React.PureComponent {
|
||||
deployPictureInPicture: PropTypes.func,
|
||||
intl: PropTypes.object.isRequired,
|
||||
blurhash: PropTypes.string,
|
||||
link: PropTypes.node,
|
||||
autoPlay: PropTypes.bool,
|
||||
volume: PropTypes.number,
|
||||
muted: PropTypes.bool,
|
||||
@ -534,7 +533,7 @@ class Video extends React.PureComponent {
|
||||
}
|
||||
|
||||
render () {
|
||||
const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, link, editable, blurhash } = this.props;
|
||||
const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, editable, blurhash } = this.props;
|
||||
const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
|
||||
const progress = Math.min((currentTime / duration) * 100, 100);
|
||||
const playerStyle = {};
|
||||
@ -648,8 +647,6 @@ class Video extends React.PureComponent {
|
||||
<span className='video-player__time-total'>{formatTime(Math.floor(duration))}</span>
|
||||
</span>
|
||||
)}
|
||||
|
||||
{link && <span className='video-player__link'>{link}</span>}
|
||||
</div>
|
||||
|
||||
<div className='video-player__buttons right'>
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"account.account_note_header": "Note",
|
||||
"account.account_note_header": "Poznámka",
|
||||
"account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů",
|
||||
"account.badges.bot": "Robot",
|
||||
"account.badges.group": "Skupina",
|
||||
@ -326,14 +326,14 @@
|
||||
"notifications.column_settings.reblog": "Boosty:",
|
||||
"notifications.column_settings.show": "Zobrazit ve sloupci",
|
||||
"notifications.column_settings.sound": "Přehrát zvuk",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.status": "Nové tooty:",
|
||||
"notifications.filter.all": "Vše",
|
||||
"notifications.filter.boosts": "Boosty",
|
||||
"notifications.filter.favourites": "Oblíbení",
|
||||
"notifications.filter.follows": "Sledování",
|
||||
"notifications.filter.mentions": "Zmínky",
|
||||
"notifications.filter.polls": "Výsledky anket",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.filter.statuses": "Aktuality od lidí, které sledujete",
|
||||
"notifications.group": "{count} oznámení",
|
||||
"notifications.mark_as_read": "Mark every notification as read",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
@ -458,7 +458,7 @@
|
||||
"upload_form.audio_description": "Popis pro sluchově postižené",
|
||||
"upload_form.description": "Popis pro zrakově postižené",
|
||||
"upload_form.edit": "Upravit",
|
||||
"upload_form.thumbnail": "Change thumbnail",
|
||||
"upload_form.thumbnail": "Změnit miniaturu",
|
||||
"upload_form.undo": "Smazat",
|
||||
"upload_form.video_description": "Popis pro sluchově či zrakově postižené",
|
||||
"upload_modal.analyzing_picture": "Analyzuji obrázek…",
|
||||
|
@ -2388,6 +2388,10 @@
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Close",
|
||||
"id": "lightbox.close"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Never miss a thing",
|
||||
"id": "notifications_permission_banner.title"
|
||||
@ -2478,6 +2482,15 @@
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/picture_in_picture/components/footer.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
"defaultMessage": "Close",
|
||||
"id": "lightbox.close"
|
||||
}
|
||||
],
|
||||
"path": "app/javascript/mastodon/features/picture_in_picture/components/header.json"
|
||||
},
|
||||
{
|
||||
"descriptors": [
|
||||
{
|
||||
|
@ -236,7 +236,7 @@
|
||||
"keyboard_shortcuts.hotkey": "Rapidklavo",
|
||||
"keyboard_shortcuts.legend": "montri ĉi tiun noton",
|
||||
"keyboard_shortcuts.local": "malfermi la lokan tempolinion",
|
||||
"keyboard_shortcuts.mention": "por mencii la aŭtoron",
|
||||
"keyboard_shortcuts.mention": "mencii la aŭtoron",
|
||||
"keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj",
|
||||
"keyboard_shortcuts.my_profile": "malfermi vian profilon",
|
||||
"keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj",
|
||||
@ -246,7 +246,7 @@
|
||||
"keyboard_shortcuts.reply": "respondi",
|
||||
"keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado",
|
||||
"keyboard_shortcuts.search": "enfokusigi la serĉilon",
|
||||
"keyboard_shortcuts.spoilers": "to show/hide CW field",
|
||||
"keyboard_shortcuts.spoilers": "montri/kaŝi la kampon de enhava averto",
|
||||
"keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»",
|
||||
"keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn",
|
||||
@ -326,7 +326,7 @@
|
||||
"notifications.column_settings.reblog": "Diskonigoj:",
|
||||
"notifications.column_settings.show": "Montri en kolumno",
|
||||
"notifications.column_settings.sound": "Eligi sonon",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.status": "Novaj mesaĝoj:",
|
||||
"notifications.filter.all": "Ĉiuj",
|
||||
"notifications.filter.boosts": "Diskonigoj",
|
||||
"notifications.filter.favourites": "Stelumoj",
|
||||
|
@ -80,7 +80,7 @@
|
||||
"column_header.pin": "ثابتکردن",
|
||||
"column_header.show_settings": "نمایش تنظیمات",
|
||||
"column_header.unpin": "رهاکردن",
|
||||
"column_subheading.settings": "تنظیمات",
|
||||
"column_subheading.settings": "ساماندهی",
|
||||
"community.column_settings.local_only": "تنها بومی",
|
||||
"community.column_settings.media_only": "فقط رسانه",
|
||||
"community.column_settings.remote_only": "تنها دوردست",
|
||||
|
@ -99,7 +99,7 @@
|
||||
"compose_form.publish": "Pouet",
|
||||
"compose_form.publish_loud": "{publish} !",
|
||||
"compose_form.sensitive.hide": "Marquer le média comme sensible",
|
||||
"compose_form.sensitive.marked": "Média marqué comme sensible",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}",
|
||||
"compose_form.sensitive.unmarked": "Le média n’est pas marqué comme sensible",
|
||||
"compose_form.spoiler.marked": "Le texte est caché derrière un avertissement",
|
||||
"compose_form.spoiler.unmarked": "Le texte n’est pas caché",
|
||||
|
@ -73,7 +73,7 @@
|
||||
"column.notifications": "Notificacións",
|
||||
"column.pins": "Toots fixados",
|
||||
"column.public": "Cronoloxía federada",
|
||||
"column_back_button.label": "Voltar",
|
||||
"column_back_button.label": "Volver",
|
||||
"column_header.hide_settings": "Agochar axustes",
|
||||
"column_header.moveLeft_settings": "Mover columna cara a esquerda",
|
||||
"column_header.moveRight_settings": "Mover columna cara a dereita",
|
||||
@ -219,7 +219,7 @@
|
||||
"introduction.welcome.action": "Imos!",
|
||||
"introduction.welcome.headline": "Primeiros pasos",
|
||||
"introduction.welcome.text": "Benvida ó fediverso! Nun intre poderás difundir mensaxes e falar coas túas amizades nun grande número de servidores. Mais este servidor, {domain}, é especial—hospeda o teu perfil, por iso lémbra o seu nome.",
|
||||
"keyboard_shortcuts.back": "para voltar atrás",
|
||||
"keyboard_shortcuts.back": "para volver atrás",
|
||||
"keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas",
|
||||
"keyboard_shortcuts.boost": "promover",
|
||||
"keyboard_shortcuts.column": "para destacar un toot nunha das columnas",
|
||||
@ -336,10 +336,10 @@
|
||||
"notifications.filter.statuses": "Actualizacións de xente á que segues",
|
||||
"notifications.group": "{count} notificacións",
|
||||
"notifications.mark_as_read": "Marcar todas as notificacións como lidas",
|
||||
"notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso.",
|
||||
"notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso",
|
||||
"notifications.permission_denied_alert": "Non se poden activar as notificacións de escritorio, xa que o permiso para o navegador foi denegado previamente",
|
||||
"notifications_permission_banner.enable": "Activar notificacións de escritorio",
|
||||
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións crean as notificacións de escritorio a través da {icon} superior unha vez activadas.",
|
||||
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.",
|
||||
"notifications_permission_banner.title": "Non perder nada",
|
||||
"picture_in_picture.restore": "Devolver",
|
||||
"poll.closed": "Pechado",
|
||||
@ -411,7 +411,7 @@
|
||||
"status.pinned": "Toot fixado",
|
||||
"status.read_more": "Ler máis",
|
||||
"status.reblog": "Promover",
|
||||
"status.reblog_private": "Compartir á audiencia orixinal",
|
||||
"status.reblog_private": "Compartir coa audiencia orixinal",
|
||||
"status.reblogged_by": "{name} promoveu",
|
||||
"status.reblogs.empty": "Aínda ninguén promoveu este toot. Cando alguén o faga, amosarase aquí.",
|
||||
"status.redraft": "Eliminar e reescribir",
|
||||
|
@ -9,10 +9,10 @@
|
||||
"account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում",
|
||||
"account.cancel_follow_request": "չեղարկել հետեւելու հայցը",
|
||||
"account.direct": "Նամակ գրել @{name} -ին",
|
||||
"account.disable_notifications": "Stop notifying me when @{name} posts",
|
||||
"account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար",
|
||||
"account.domain_blocked": "Տիրոյթը արգելափակուած է",
|
||||
"account.edit_profile": "Խմբագրել անձնական էջը",
|
||||
"account.enable_notifications": "Notify me when @{name} posts",
|
||||
"account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին",
|
||||
"account.endorse": "Ցուցադրել անձնական էջում",
|
||||
"account.follow": "Հետեւել",
|
||||
"account.followers": "Հետեւողներ",
|
||||
@ -168,9 +168,9 @@
|
||||
"empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։",
|
||||
"empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։",
|
||||
"error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։",
|
||||
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
|
||||
"error.unexpected_crash.explanation_addons": "Այս էջի ճիշտ պատկերումը չի ստացում։ Խափանումը հաւանաբար առաջացել է դիտարկիչի յավելվածից կամ առցանց թարգմանիչից։",
|
||||
"error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։",
|
||||
"error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
|
||||
"error.unexpected_crash.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։",
|
||||
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
|
||||
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
|
||||
"follow_request.authorize": "Վավերացնել",
|
||||
@ -266,9 +266,9 @@
|
||||
"lists.edit.submit": "Փոխել վերնագիրը",
|
||||
"lists.new.create": "Ավելացնել ցանկ",
|
||||
"lists.new.title_placeholder": "Նոր ցանկի վերնագիր",
|
||||
"lists.replies_policy.all_replies": "Any followed user",
|
||||
"lists.replies_policy.list_replies": "Members of the list",
|
||||
"lists.replies_policy.no_replies": "No one",
|
||||
"lists.replies_policy.all_replies": "Ում հետևում եմ",
|
||||
"lists.replies_policy.list_replies": "Ցանկի անդամները",
|
||||
"lists.replies_policy.no_replies": "Ոչ ոք",
|
||||
"lists.replies_policy.title": "Show replies to:",
|
||||
"lists.search": "Փնտրել քո հետեւած մարդկանց մեջ",
|
||||
"lists.subheading": "Քո ցանկերը",
|
||||
@ -277,9 +277,9 @@
|
||||
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
|
||||
"missing_indicator.label": "Չգտնվեց",
|
||||
"missing_indicator.sublabel": "Պաշարը չի գտնւում",
|
||||
"mute_modal.duration": "Duration",
|
||||
"mute_modal.duration": "Տևողություն",
|
||||
"mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։",
|
||||
"mute_modal.indefinite": "Indefinite",
|
||||
"mute_modal.indefinite": "Անժամկետ",
|
||||
"navigation_bar.apps": "Դիւրակիր յաւելուածներ",
|
||||
"navigation_bar.blocks": "Արգելափակված օգտատերեր",
|
||||
"navigation_bar.bookmarks": "Էջանիշեր",
|
||||
@ -310,7 +310,7 @@
|
||||
"notification.own_poll": "Հարցումդ աւարտուեց",
|
||||
"notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։",
|
||||
"notification.reblog": "{name} տարածեց թութդ",
|
||||
"notification.status": "{name} just posted",
|
||||
"notification.status": "{name} հենց նոր թթեց",
|
||||
"notifications.clear": "Մաքրել ծանուցումները",
|
||||
"notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։",
|
||||
"notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ",
|
||||
@ -326,7 +326,7 @@
|
||||
"notifications.column_settings.reblog": "Տարածածներից՝",
|
||||
"notifications.column_settings.show": "Ցուցադրել սիւնում",
|
||||
"notifications.column_settings.sound": "Ձայն հանել",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.status": "Նոր թթեր։",
|
||||
"notifications.filter.all": "Բոլորը",
|
||||
"notifications.filter.boosts": "Տարածածները",
|
||||
"notifications.filter.favourites": "Հաւանածները",
|
||||
@ -335,10 +335,10 @@
|
||||
"notifications.filter.polls": "Հարցման արդիւնքները",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.group": "{count} ծանուցում",
|
||||
"notifications.mark_as_read": "Mark every notification as read",
|
||||
"notifications.mark_as_read": "Համարել բոլոր ծանուցումները ընթերցած",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
|
||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
|
||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||
"notifications_permission_banner.title": "Never miss a thing",
|
||||
"picture_in_picture.restore": "Put it back",
|
||||
|
@ -338,7 +338,7 @@
|
||||
"notifications.filter.follows": "フォロー",
|
||||
"notifications.filter.mentions": "返信",
|
||||
"notifications.filter.polls": "アンケート結果",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.filter.statuses": "フォローしている人の新着情報",
|
||||
"notifications.group": "{count} 件の通知",
|
||||
"notifications.mark_as_read": "すべて既読にする",
|
||||
"notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません",
|
||||
@ -362,7 +362,7 @@
|
||||
"privacy.private.short": "フォロワー限定",
|
||||
"privacy.public.long": "誰でも閲覧可、公開TLに表示",
|
||||
"privacy.public.short": "公開",
|
||||
"privacy.unlisted.long": "誰でも閲覧可、公開タイムラインに非表示",
|
||||
"privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示",
|
||||
"privacy.unlisted.short": "未収載",
|
||||
"refresh": "更新",
|
||||
"regeneration_indicator.label": "読み込み中…",
|
||||
|
@ -14,8 +14,8 @@
|
||||
"account.edit_profile": "Edit profile",
|
||||
"account.enable_notifications": "Notify me when @{name} posts",
|
||||
"account.endorse": "Feature on profile",
|
||||
"account.follow": "Follow",
|
||||
"account.followers": "Followers",
|
||||
"account.follow": "ಹಿಂಬಾಲಿಸಿ",
|
||||
"account.followers": "ಹಿಂಬಾಲಕರು",
|
||||
"account.followers.empty": "No one follows this user yet.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
|
||||
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
|
||||
@ -32,7 +32,7 @@
|
||||
"account.mute_notifications": "Mute notifications from @{name}",
|
||||
"account.muted": "Muted",
|
||||
"account.never_active": "Never",
|
||||
"account.posts": "Toots",
|
||||
"account.posts": "ಟೂಟ್ಗಳು",
|
||||
"account.posts_with_replies": "Toots and replies",
|
||||
"account.report": "Report @{name}",
|
||||
"account.requested": "Awaiting approval",
|
||||
@ -54,7 +54,7 @@
|
||||
"autosuggest_hashtag.per_week": "{count} per week",
|
||||
"boost_modal.combo": "You can press {combo} to skip this next time",
|
||||
"bundle_column_error.body": "Something went wrong while loading this component.",
|
||||
"bundle_column_error.retry": "Try again",
|
||||
"bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ",
|
||||
"bundle_column_error.title": "Network error",
|
||||
"bundle_modal_error.close": "Close",
|
||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
||||
|
@ -258,8 +258,8 @@
|
||||
"keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
|
||||
"keyboard_shortcuts.up": "aby przejść na górę listy",
|
||||
"lightbox.close": "Zamknij",
|
||||
"lightbox.compress": "Compress image view box",
|
||||
"lightbox.expand": "Expand image view box",
|
||||
"lightbox.compress": "Zmniejsz pole widoku obrazu",
|
||||
"lightbox.expand": "Rozwiń pole widoku obrazu",
|
||||
"lightbox.next": "Następne",
|
||||
"lightbox.previous": "Poprzednie",
|
||||
"lightbox.view_context": "Pokaż kontekst",
|
||||
|
@ -98,7 +98,7 @@
|
||||
"compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа",
|
||||
"compose_form.publish": "Запостить",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
"compose_form.sensitive.hide": "Пометить медиафайл как чувствительный",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Отметить медифайл как деликатный} other {Отметить медифайлы как деликатные}}",
|
||||
"compose_form.sensitive.marked": "Медиафайл отмечен как деликатный",
|
||||
"compose_form.sensitive.unmarked": "Медиафайл не отмечен как деликатный",
|
||||
"compose_form.spoiler.marked": "Текст скрыт за предупреждением",
|
||||
|
@ -6,18 +6,18 @@
|
||||
"account.block": "Bloca @{name}",
|
||||
"account.block_domain": "Bloca domìniu{domain}",
|
||||
"account.blocked": "Blocadu",
|
||||
"account.browse_more_on_origin_server": "Browse more on the original profile",
|
||||
"account.browse_more_on_origin_server": "Esplora de prus in su profilu originale",
|
||||
"account.cancel_follow_request": "Annulla rechesta de sighidura",
|
||||
"account.direct": "Messàgiu deretu a @{name}",
|
||||
"account.disable_notifications": "Stop notifying me when @{name} posts",
|
||||
"account.disable_notifications": "Acaba·la de mi notificare cando @{name} publicat carchi cosa",
|
||||
"account.domain_blocked": "Domìniu blocadu",
|
||||
"account.edit_profile": "Modìfica profilu",
|
||||
"account.enable_notifications": "Notify me when @{name} posts",
|
||||
"account.enable_notifications": "Notìfica·mi cando @{name} pùblicat carchi cosa",
|
||||
"account.endorse": "Cussìgia in su profilu tuo",
|
||||
"account.follow": "Sighi",
|
||||
"account.followers": "Sighiduras",
|
||||
"account.followers.empty": "Nemos sighit ancora custa persone.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Sighidore} other {{counter} Sighidores}}",
|
||||
"account.following_counter": "{count, plural, one {{counter} Sighidu} other {{counter} Sighidos}}",
|
||||
"account.follows.empty": "Custa persone non sighit ancora a nemos.",
|
||||
"account.follows_you": "Ti sighit",
|
||||
@ -38,14 +38,14 @@
|
||||
"account.requested": "Incarca pro annullare sa rechesta de sighidura",
|
||||
"account.share": "Cumpartzi su profilu de @{name}",
|
||||
"account.show_reblogs": "Ammustra is cumpartziduras de @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}",
|
||||
"account.unblock": "Isbloca @{name}",
|
||||
"account.unblock_domain": "Isbloca su domìniu {domain}",
|
||||
"account.unendorse": "Non cussiges in su profilu",
|
||||
"account.unfollow": "Non sigas prus",
|
||||
"account.unmute": "Torra a ativare @{name}",
|
||||
"account.unmute_notifications": "Ativa notìficas pro @{name}",
|
||||
"account_note.placeholder": "Click to add a note",
|
||||
"account_note.placeholder": "Incarca pro agiùnghere una nota",
|
||||
"alert.rate_limited.message": "Torra·bi a proare a pustis de {retry_time, time, medium}.",
|
||||
"alert.rate_limited.title": "Màssimu de rechestas barigadu",
|
||||
"alert.unexpected.message": "B'at àpidu una faddina.",
|
||||
@ -81,9 +81,9 @@
|
||||
"column_header.show_settings": "Ammustra is cunfiguratziones",
|
||||
"column_header.unpin": "Boga dae pitzu",
|
||||
"column_subheading.settings": "Cunfiguratziones",
|
||||
"community.column_settings.local_only": "Local only",
|
||||
"community.column_settings.local_only": "Locale ebbia",
|
||||
"community.column_settings.media_only": "Multimediale isceti",
|
||||
"community.column_settings.remote_only": "Remote only",
|
||||
"community.column_settings.remote_only": "Remotu ebbia",
|
||||
"compose_form.direct_message_warning": "Custu tut at a èssere imbiadu isceti a is persones mentovadas.",
|
||||
"compose_form.direct_message_warning_learn_more": "Àteras informatziones",
|
||||
"compose_form.hashtag_warning": "Custu tut no at a èssere ammustradu in peruna eticheta, dae chi no est listadu.",
|
||||
@ -113,7 +113,7 @@
|
||||
"confirmations.delete_list.confirm": "Cantzella",
|
||||
"confirmations.delete_list.message": "Seguru chi boles cantzellare custa lista in manera permanente?",
|
||||
"confirmations.domain_block.confirm": "Cua totu su domìniu",
|
||||
"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.domain_block.message": "Ses seguru a beru, ma a beru a beru, de bòlere blocare su {domain} intreu? In sa parte manna de is casos pagos blocos o silentziamentos de utentes sunt sufitzientes e preferìbiles. No as a bìdere cuntenutos dae custu domìniu in peruna lìnia de tempus pùblica o in is notìficas tuas. Is sighidores tuos dae cussu domìniu ant a èssere bogados.",
|
||||
"confirmations.logout.confirm": "Essi·nche",
|
||||
"confirmations.logout.message": "Seguru chi boles essire?",
|
||||
"confirmations.mute.confirm": "A sa muda",
|
||||
@ -168,15 +168,15 @@
|
||||
"empty_column.notifications": "Non tenes ancora peruna notìfica. Chistiona cun una persone pro cumintzare un'arresonada.",
|
||||
"empty_column.public": "Nudda inoghe. Iscrie calicuna cosa pùblica, o sighi àteras persones de àteros serbidores pro prenare custu ispàtziu",
|
||||
"error.unexpected_crash.explanation": "A càusa de una faddina in su còdighe nostru o unu problema de cumpatibilidade de su navigadore, custa pàgina diat pòdere no èssere ammustrada in manera curreta.",
|
||||
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
|
||||
"error.unexpected_crash.explanation_addons": "Custa pàgina diat pòdere no èssere ammustrada comente si tocat. Custa faddina est probàbile chi dipendat dae un'estensione de su navigadore o dae ainas automàticas de tradutzione.",
|
||||
"error.unexpected_crash.next_steps": "Proa de atualizare sa pàgina. Si custu non acontza su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.",
|
||||
"error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
|
||||
"error.unexpected_crash.next_steps_addons": "Proa a ddos disabilitare e a atualizare sa pàgina. Si custu non acontzat su problema, podes chircare de impreare Mastodon in unu navigadore diferente o in un'aplicatzione nativa.",
|
||||
"errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete",
|
||||
"errors.unexpected_crash.report_issue": "Signala unu problema",
|
||||
"follow_request.authorize": "Autoriza",
|
||||
"follow_request.reject": "Refuda",
|
||||
"follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.",
|
||||
"generic.saved": "Saved",
|
||||
"generic.saved": "Sarvadu",
|
||||
"getting_started.developers": "Iscuadra de isvilupu",
|
||||
"getting_started.directory": "Diretòriu de profilos",
|
||||
"getting_started.documentation": "Documentatzione",
|
||||
@ -246,7 +246,7 @@
|
||||
"keyboard_shortcuts.reply": "pro rispòndere",
|
||||
"keyboard_shortcuts.requests": "pro abèrrere sa lista de rechestas de sighidura",
|
||||
"keyboard_shortcuts.search": "pro atzentrare sa chirca",
|
||||
"keyboard_shortcuts.spoilers": "to show/hide CW field",
|
||||
"keyboard_shortcuts.spoilers": "pro ammustrare/cuare su campu AC",
|
||||
"keyboard_shortcuts.start": "pro abèrrere sa colunna \"Cumintza\"",
|
||||
"keyboard_shortcuts.toggle_hidden": "pro ammustrare o cuare testu de is AC",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "pro ammustrare o cuare mèdias",
|
||||
@ -254,8 +254,8 @@
|
||||
"keyboard_shortcuts.unfocus": "pro essire de s'àrea de cumpositzione de testu o de chirca",
|
||||
"keyboard_shortcuts.up": "pro mòere in susu in sa lista",
|
||||
"lightbox.close": "Serra",
|
||||
"lightbox.compress": "Compress image view box",
|
||||
"lightbox.expand": "Expand image view box",
|
||||
"lightbox.compress": "Cumprime sa casella de visualizatzione de is immàgines",
|
||||
"lightbox.expand": "Ismànnia sa casella de visualizatzione de is immàgines",
|
||||
"lightbox.next": "Sighi",
|
||||
"lightbox.previous": "Pretzedente",
|
||||
"lightbox.view_context": "Bide su cuntestu",
|
||||
@ -266,10 +266,10 @@
|
||||
"lists.edit.submit": "Muda su tìtulu",
|
||||
"lists.new.create": "Agiunghe lista",
|
||||
"lists.new.title_placeholder": "Lista noa",
|
||||
"lists.replies_policy.all_replies": "Any followed user",
|
||||
"lists.replies_policy.list_replies": "Members of the list",
|
||||
"lists.replies_policy.no_replies": "No one",
|
||||
"lists.replies_policy.title": "Show replies to:",
|
||||
"lists.replies_policy.all_replies": "Cale si siat utente sighidu",
|
||||
"lists.replies_policy.list_replies": "Membros de sa lista",
|
||||
"lists.replies_policy.no_replies": "Perunu",
|
||||
"lists.replies_policy.title": "Ammustra is rispostas a:",
|
||||
"lists.search": "Chircare intre sa gente chi ses sighende",
|
||||
"lists.subheading": "Is listas tuas",
|
||||
"load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
|
||||
@ -279,7 +279,7 @@
|
||||
"missing_indicator.sublabel": "Resursa no agatada",
|
||||
"mute_modal.duration": "Duration",
|
||||
"mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?",
|
||||
"mute_modal.indefinite": "Indefinite",
|
||||
"mute_modal.indefinite": "Indefinida",
|
||||
"navigation_bar.apps": "Aplicatziones mòbiles",
|
||||
"navigation_bar.blocks": "Persones blocadas",
|
||||
"navigation_bar.bookmarks": "Sinnalibros",
|
||||
@ -310,7 +310,7 @@
|
||||
"notification.own_poll": "Sondàgiu acabbadu",
|
||||
"notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu",
|
||||
"notification.reblog": "{name} at cumpartzidu s'istadu tuo",
|
||||
"notification.status": "{name} just posted",
|
||||
"notification.status": "{name} at publicadu cosa",
|
||||
"notifications.clear": "Lìmpia notìficas",
|
||||
"notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?",
|
||||
"notifications.column_settings.alert": "Notìficas de iscrivania",
|
||||
@ -326,19 +326,19 @@
|
||||
"notifications.column_settings.reblog": "Cumpartziduras:",
|
||||
"notifications.column_settings.show": "Ammustra in sa colunna",
|
||||
"notifications.column_settings.sound": "Reprodue unu sonu",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.status": "Tuts noos:",
|
||||
"notifications.filter.all": "Totus",
|
||||
"notifications.filter.boosts": "Cumpartziduras",
|
||||
"notifications.filter.favourites": "Preferidos",
|
||||
"notifications.filter.follows": "Sighende",
|
||||
"notifications.filter.mentions": "Mentovos",
|
||||
"notifications.filter.polls": "Resurtados dae su sondàgiu",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.filter.statuses": "Agiornamentos dae is persones chi sighis",
|
||||
"notifications.group": "{count} notìficas",
|
||||
"notifications.mark_as_read": "Mark every notification as read",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
|
||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||
"notifications.permission_denied": "Is notìficas de iscrivania non sunt a disponimentu pro neghe de rechestas de permissu chi sunt istadas dennegadas in antis",
|
||||
"notifications.permission_denied_alert": "Is notìficas de iscrivania non podent èssere abilitadas, ca su permissu de su navigadore est istadu dennegadu in antis",
|
||||
"notifications_permission_banner.enable": "Abìlita is notìficas de iscrivania",
|
||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||
"notifications_permission_banner.title": "Never miss a thing",
|
||||
"picture_in_picture.restore": "Put it back",
|
||||
|
@ -154,7 +154,7 @@
|
||||
"empty_column.blocks": "Henüz bir kullanıcıyı engellemediniz.",
|
||||
"empty_column.bookmarked_statuses": "Henüz yer imine eklediğiniz toot yok. Yer imine eklendiğinde burada görünecek.",
|
||||
"empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!",
|
||||
"empty_column.direct": "Henüz doğrudan mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.",
|
||||
"empty_column.direct": "Henüz direkt mesajınız yok. Bir tane gönderdiğinizde veya aldığınızda burada görünecektir.",
|
||||
"empty_column.domain_blocks": "Henüz hiçbir gizli alan adı yok.",
|
||||
"empty_column.favourited_statuses": "Hiç favori tootunuz yok. Favori olduğunda burada görünecek.",
|
||||
"empty_column.favourites": "Kimse bu tootu favorilerine eklememiş. Biri eklediğinde burada görünecek.",
|
||||
|
@ -18,13 +18,13 @@
|
||||
"account.followers": "Người theo dõi",
|
||||
"account.followers.empty": "Chưa có người theo dõi nào.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Người theo dõi} other {{counter} Người theo dõi}}",
|
||||
"account.following_counter": "{count, plural, one {{counter} Đang theo dõi} other {{counter} Đang theo dõi}}",
|
||||
"account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}",
|
||||
"account.follows.empty": "Người dùng này chưa theo dõi ai.",
|
||||
"account.follows_you": "Đang theo dõi bạn",
|
||||
"account.hide_reblogs": "Ẩn chia sẻ từ @{name}",
|
||||
"account.last_status": "Trực tuyến",
|
||||
"account.last_status": "Online",
|
||||
"account.link_verified_on": "Liên kết này đã được xác thực vào {date}",
|
||||
"account.locked_info": "Người dùng này thiết lập trạng thái ẩn. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.",
|
||||
"account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.",
|
||||
"account.media": "Bộ sưu tập",
|
||||
"account.mention": "Nhắc đến @{name}",
|
||||
"account.moved_to": "{name} đã dời sang:",
|
||||
@ -60,7 +60,7 @@
|
||||
"bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.",
|
||||
"bundle_modal_error.retry": "Thử lại",
|
||||
"column.blocks": "Người dùng đã chặn",
|
||||
"column.bookmarks": "Những tút bạn đã lưu",
|
||||
"column.bookmarks": "Để dành đọc lại",
|
||||
"column.community": "Máy chủ của bạn",
|
||||
"column.direct": "Tin nhắn của bạn",
|
||||
"column.directory": "Tìm người cùng sở thích",
|
||||
@ -72,7 +72,7 @@
|
||||
"column.mutes": "Người dùng đã ẩn",
|
||||
"column.notifications": "Thông báo",
|
||||
"column.pins": "Tút ghim",
|
||||
"column.public": "Từ những máy chủ khác",
|
||||
"column.public": "Mạng liên hợp",
|
||||
"column_back_button.label": "Quay lại",
|
||||
"column_header.hide_settings": "Ẩn bộ lọc",
|
||||
"column_header.moveLeft_settings": "Dời cột sang bên trái",
|
||||
@ -99,8 +99,8 @@
|
||||
"compose_form.publish": "Tút",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
"compose_form.sensitive.hide": "Nội dung nhạy cảm",
|
||||
"compose_form.sensitive.marked": "Nội dung đã đánh dấu nhạy cảm",
|
||||
"compose_form.sensitive.unmarked": "Nội dung không đánh dấu nhạy cảm",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Nội dung đã đánh dấu là nhạy cảm} other {Nội dung đã đánh dấu là nhạy cảm}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Nội dung này bình thường} other {Nội dung này bình thường}}",
|
||||
"compose_form.spoiler.marked": "Hủy nội dung ẩn",
|
||||
"compose_form.spoiler.unmarked": "Tạo nội dung ẩn",
|
||||
"compose_form.spoiler_placeholder": "Viết nội dung ẩn của bạn ở đây",
|
||||
@ -150,7 +150,7 @@
|
||||
"emoji_button.symbols": "Biểu tượng",
|
||||
"emoji_button.travel": "Du lịch",
|
||||
"empty_column.account_timeline": "Chưa có tút nào!",
|
||||
"empty_column.account_unavailable": "Tài khoản không còn nữa",
|
||||
"empty_column.account_unavailable": "Tài khoản bị đình chỉ",
|
||||
"empty_column.blocks": "Bạn chưa chặn bất cứ ai.",
|
||||
"empty_column.bookmarked_statuses": "Bạn chưa lưu tút nào. Nếu có, nó sẽ hiển thị ở đây.",
|
||||
"empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!",
|
||||
@ -159,7 +159,7 @@
|
||||
"empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.",
|
||||
"empty_column.favourites": "Chưa có ai thích tút này.",
|
||||
"empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào.",
|
||||
"empty_column.hashtag": "Chưa có bài đăng nào sử dụng hashtag này.",
|
||||
"empty_column.hashtag": "Chưa có bài đăng nào dùng hashtag này.",
|
||||
"empty_column.home": "Chưa có bất cứ gì! Hãy bắt đầu bằng cách tìm kiếm hoặc truy cập {public} để theo dõi những người bạn quan tâm.",
|
||||
"empty_column.home.public_timeline": "tút công khai",
|
||||
"empty_column.list": "Chưa có tút. Khi những người trong danh sách này đăng tút mới, chúng sẽ xuất hiện ở đây.",
|
||||
@ -246,7 +246,7 @@
|
||||
"keyboard_shortcuts.reply": "trả lời",
|
||||
"keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi",
|
||||
"keyboard_shortcuts.search": "mở tìm kiếm",
|
||||
"keyboard_shortcuts.spoilers": "Hiện/ẩn nội dung nhạy cảm",
|
||||
"keyboard_shortcuts.spoilers": "hiện/ẩn nội dung nhạy cảm",
|
||||
"keyboard_shortcuts.start": "mở mục \"Dành cho người mới\"",
|
||||
"keyboard_shortcuts.toggle_hidden": "ẩn/hiện văn bản bên dưới spoil",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "ẩn/hiện ảnh hoặc video",
|
||||
@ -273,8 +273,8 @@
|
||||
"lists.search": "Tìm kiếm những người mà bạn quan tâm",
|
||||
"lists.subheading": "Danh sách của bạn",
|
||||
"load_pending": "{count, plural, one {# tút mới} other {# tút mới}}",
|
||||
"loading_indicator.label": "Chờ xíu...",
|
||||
"media_gallery.toggle_visible": "Ẩn {number, plural, one {ảnh} other {ảnh}}",
|
||||
"loading_indicator.label": "Đang tải...",
|
||||
"media_gallery.toggle_visible": "Ẩn {number, plural, one {hình ảnh} other {hình ảnh}}",
|
||||
"missing_indicator.label": "Không tìm thấy",
|
||||
"missing_indicator.sublabel": "Nội dung này không còn tồn tại",
|
||||
"mute_modal.duration": "Thời hạn",
|
||||
@ -311,7 +311,7 @@
|
||||
"notification.poll": "Một cuộc bình chọn mà bạn tham gia đã kết thúc",
|
||||
"notification.reblog": "{name} chia sẻ tút của bạn",
|
||||
"notification.status": "{name} vừa đăng",
|
||||
"notifications.clear": "Làm trống thông báo",
|
||||
"notifications.clear": "Xóa hết thông báo",
|
||||
"notifications.clear_confirmation": "Bạn có chắc chắn muốn xóa vĩnh viễn tất cả thông báo của mình?",
|
||||
"notifications.column_settings.alert": "Thông báo trên máy tính",
|
||||
"notifications.column_settings.favourite": "Lượt thích:",
|
||||
@ -371,13 +371,13 @@
|
||||
"reply_indicator.cancel": "Hủy bỏ",
|
||||
"report.forward": "Chuyển đến {target}",
|
||||
"report.forward_hint": "Người dùng này ở máy chủ khác. Gửi một báo cáo ẩn danh tới máy chủ đó?",
|
||||
"report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo tài khoản này:",
|
||||
"report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo người dùng này:",
|
||||
"report.placeholder": "Bổ sung thêm",
|
||||
"report.submit": "Gửi đi",
|
||||
"report.target": "Báo cáo {target}",
|
||||
"search.placeholder": "Tìm kiếm",
|
||||
"search_popout.search_format": "Gợi ý",
|
||||
"search_popout.tips.full_text": "Nội dung trả về bao gồm những tút do bạn viết, yêu thích, đã chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.",
|
||||
"search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.",
|
||||
"search_popout.tips.hashtag": "hashtag",
|
||||
"search_popout.tips.status": "tút",
|
||||
"search_popout.tips.text": "Nội dung trả về là địa chỉ người dùng, tên hiển thị và hashtag",
|
||||
@ -419,14 +419,14 @@
|
||||
"status.reply": "Trả lời",
|
||||
"status.replyAll": "Trả lời tất cả",
|
||||
"status.report": "Báo cáo @{name}",
|
||||
"status.sensitive_warning": "Nội dung nhạy cảm",
|
||||
"status.sensitive_warning": "Nhạy cảm",
|
||||
"status.share": "Chia sẻ",
|
||||
"status.show_less": "Thu gọn",
|
||||
"status.show_less_all": "Thu gọn tất cả",
|
||||
"status.show_less_all": "Thu gọn toàn bộ",
|
||||
"status.show_more": "Mở rộng",
|
||||
"status.show_more_all": "Hiển thị tất cả",
|
||||
"status.show_thread": "Xem thêm",
|
||||
"status.uncached_media_warning": "N/A",
|
||||
"status.uncached_media_warning": "Giới hạn",
|
||||
"status.unmute_conversation": "Quan tâm",
|
||||
"status.unpin": "Bỏ ghim trên trang cá nhân",
|
||||
"suggestions.dismiss": "Tắt đề xuất",
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"account.account_note_header": "Note",
|
||||
"account.add_or_remove_from_list": "Add or Remove from lists",
|
||||
"account.badges.bot": "Bot",
|
||||
"account.account_note_header": "ⵍⵎⴷ ⵓⴳⴳⴰⵔ",
|
||||
"account.add_or_remove_from_list": "ⵔⵏⵓ ⵏⵖ ⵙⵉⵜⵜⵢ ⵙⴳ ⵜⵍⴳⴰⵎⵜ",
|
||||
"account.badges.bot": "ⴰⴱⵓⵜ",
|
||||
"account.badges.group": "ⵜⴰⵔⴰⴱⴱⵓⵜ",
|
||||
"account.block": "ⴳⴷⵍ @{name}",
|
||||
"account.block_domain": "Block domain {domain}",
|
||||
"account.blocked": "Blocked",
|
||||
"account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ",
|
||||
"account.browse_more_on_origin_server": "Browse more on the original profile",
|
||||
"account.cancel_follow_request": "Cancel follow request",
|
||||
"account.cancel_follow_request": "ⵙⵔ ⵜⵓⵜⵔⴰ ⵏ ⵓⴹⴼⵕ",
|
||||
"account.direct": "Direct message @{name}",
|
||||
"account.disable_notifications": "Stop notifying me when @{name} posts",
|
||||
"account.domain_blocked": "Domain blocked",
|
||||
@ -25,7 +25,7 @@
|
||||
"account.last_status": "Last active",
|
||||
"account.link_verified_on": "Ownership of this link was checked on {date}",
|
||||
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
|
||||
"account.media": "Media",
|
||||
"account.media": "ⴰⵙⵏⵖⵎⵉⵙ",
|
||||
"account.mention": "Mention @{name}",
|
||||
"account.moved_to": "{name} has moved to:",
|
||||
"account.mute": "Mute @{name}",
|
||||
@ -70,7 +70,7 @@
|
||||
"column.home": "ⴰⵙⵏⵓⴱⴳ",
|
||||
"column.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ",
|
||||
"column.mutes": "Muted users",
|
||||
"column.notifications": "Notifications",
|
||||
"column.notifications": "ⵜⵉⵏⵖⵎⵉⵙⵉⵏ",
|
||||
"column.pins": "Pinned toot",
|
||||
"column.public": "Federated timeline",
|
||||
"column_back_button.label": "Back",
|
||||
@ -104,7 +104,7 @@
|
||||
"compose_form.spoiler.marked": "Text is hidden behind warning",
|
||||
"compose_form.spoiler.unmarked": "Text is not hidden",
|
||||
"compose_form.spoiler_placeholder": "Write your warning here",
|
||||
"confirmation_modal.cancel": "Cancel",
|
||||
"confirmation_modal.cancel": "ⵙⵔ",
|
||||
"confirmations.block.block_and_report": "Block & Report",
|
||||
"confirmations.block.confirm": "Block",
|
||||
"confirmations.block.message": "Are you sure you want to block {name}?",
|
||||
@ -183,7 +183,7 @@
|
||||
"getting_started.heading": "Getting started",
|
||||
"getting_started.invite": "Invite people",
|
||||
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
|
||||
"getting_started.security": "Security",
|
||||
"getting_started.security": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ",
|
||||
"getting_started.terms": "Terms of service",
|
||||
"hashtag.column_header.tag_mode.all": "and {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "or {additional}",
|
||||
@ -311,7 +311,7 @@
|
||||
"notification.poll": "A poll you have voted in has ended",
|
||||
"notification.reblog": "{name} boosted your status",
|
||||
"notification.status": "{name} just posted",
|
||||
"notifications.clear": "Clear notifications",
|
||||
"notifications.clear": "ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ",
|
||||
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
|
||||
"notifications.column_settings.alert": "Desktop notifications",
|
||||
"notifications.column_settings.favourite": "Favourites:",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"account.account_note_header": "筆記",
|
||||
"account.add_or_remove_from_list": "從名單中新增或移除",
|
||||
"account.add_or_remove_from_list": "從列表中新增或移除",
|
||||
"account.badges.bot": "機械人",
|
||||
"account.badges.group": "群組",
|
||||
"account.block": "封鎖 @{name}",
|
||||
@ -9,10 +9,10 @@
|
||||
"account.browse_more_on_origin_server": "在該服務器的個人檔案頁上瀏覽更多",
|
||||
"account.cancel_follow_request": "取消關注請求",
|
||||
"account.direct": "私訊 @{name}",
|
||||
"account.disable_notifications": "Stop notifying me when @{name} posts",
|
||||
"account.disable_notifications": "如果 @{name} 發文請不要再通知我",
|
||||
"account.domain_blocked": "服務站被隱藏",
|
||||
"account.edit_profile": "修改個人資料",
|
||||
"account.enable_notifications": "Notify me when @{name} posts",
|
||||
"account.enable_notifications": "如果 @{name} 發文請通知我",
|
||||
"account.endorse": "在個人資料推薦對方",
|
||||
"account.follow": "關注",
|
||||
"account.followers": "關注的人",
|
||||
@ -168,9 +168,9 @@
|
||||
"empty_column.notifications": "你沒有任何通知紀錄,快向其他用戶搭訕吧。",
|
||||
"empty_column.public": "跨站時間軸暫時沒有內容!快寫一些公共的文章,或者關注另一些服務站的用戶吧!你和本站、友站的交流,將決定這裏出現的內容。",
|
||||
"error.unexpected_crash.explanation": "由於發生系統故障或瀏覽器相容性問題,故無法正常顯示頁面。",
|
||||
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
|
||||
"error.unexpected_crash.explanation_addons": "此頁面無法被正確顯示,這可能是由於瀏覽器的附加元件或網頁自動翻譯工具造成的。",
|
||||
"error.unexpected_crash.next_steps": "請嘗試重新整理頁面。如果狀況沒有進展,你可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
|
||||
"error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
|
||||
"error.unexpected_crash.next_steps_addons": "請嘗試停止使用這些附加元件然後重新載入頁面。如果問題沒有解決,你仍然可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
|
||||
"errors.unexpected_crash.copy_stacktrace": "複製到剪貼簿",
|
||||
"errors.unexpected_crash.report_issue": "舉報問題",
|
||||
"follow_request.authorize": "批准",
|
||||
@ -254,10 +254,10 @@
|
||||
"keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
|
||||
"keyboard_shortcuts.up": "在列表往上移動",
|
||||
"lightbox.close": "關閉",
|
||||
"lightbox.compress": "Compress image view box",
|
||||
"lightbox.expand": "Expand image view box",
|
||||
"lightbox.next": "繼續",
|
||||
"lightbox.previous": "回退",
|
||||
"lightbox.compress": "縮小檢視",
|
||||
"lightbox.expand": "擴大檢視",
|
||||
"lightbox.next": "下一頁",
|
||||
"lightbox.previous": "上一頁",
|
||||
"lightbox.view_context": "檢視內文",
|
||||
"lists.account.add": "新增到列表",
|
||||
"lists.account.remove": "從列表刪除",
|
||||
@ -266,10 +266,10 @@
|
||||
"lists.edit.submit": "變更標題",
|
||||
"lists.new.create": "新增列表",
|
||||
"lists.new.title_placeholder": "新列表標題",
|
||||
"lists.replies_policy.all_replies": "Any followed user",
|
||||
"lists.replies_policy.list_replies": "Members of the list",
|
||||
"lists.replies_policy.no_replies": "No one",
|
||||
"lists.replies_policy.title": "Show replies to:",
|
||||
"lists.replies_policy.all_replies": "任何關注的用戶",
|
||||
"lists.replies_policy.list_replies": "列表中的用戶",
|
||||
"lists.replies_policy.no_replies": "沒有人",
|
||||
"lists.replies_policy.title": "顯示回應文章︰",
|
||||
"lists.search": "從你關注的用戶中搜索",
|
||||
"lists.subheading": "列表",
|
||||
"load_pending": "{count, plural, other {# 個新項目}}",
|
||||
@ -277,9 +277,9 @@
|
||||
"media_gallery.toggle_visible": "打開或關上",
|
||||
"missing_indicator.label": "找不到內容",
|
||||
"missing_indicator.sublabel": "無法找到內容",
|
||||
"mute_modal.duration": "Duration",
|
||||
"mute_modal.duration": "時間",
|
||||
"mute_modal.hide_notifications": "隱藏來自這用戶的通知嗎?",
|
||||
"mute_modal.indefinite": "Indefinite",
|
||||
"mute_modal.indefinite": "沒期限",
|
||||
"navigation_bar.apps": "封鎖的使用者",
|
||||
"navigation_bar.blocks": "被你封鎖的用戶",
|
||||
"navigation_bar.bookmarks": "書籤",
|
||||
@ -310,7 +310,7 @@
|
||||
"notification.own_poll": "您的投票已結束",
|
||||
"notification.poll": "您投過的投票已經結束",
|
||||
"notification.reblog": "{name} 轉推你的文章",
|
||||
"notification.status": "{name} just posted",
|
||||
"notification.status": "{name} 剛剛發了嘟文",
|
||||
"notifications.clear": "清空通知紀錄",
|
||||
"notifications.clear_confirmation": "你確定要清空通知紀錄嗎?",
|
||||
"notifications.column_settings.alert": "顯示桌面通知",
|
||||
@ -326,22 +326,22 @@
|
||||
"notifications.column_settings.reblog": "轉推你的文章:",
|
||||
"notifications.column_settings.show": "在通知欄顯示",
|
||||
"notifications.column_settings.sound": "播放音效",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.status": "新的文章",
|
||||
"notifications.filter.all": "全部",
|
||||
"notifications.filter.boosts": "轉嘟",
|
||||
"notifications.filter.favourites": "最愛",
|
||||
"notifications.filter.follows": "關注的使用者",
|
||||
"notifications.filter.mentions": "提及",
|
||||
"notifications.filter.polls": "投票結果",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.filter.statuses": "已關注的用戶的最新動態",
|
||||
"notifications.group": "{count} 條通知",
|
||||
"notifications.mark_as_read": "Mark every notification as read",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
|
||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||
"notifications_permission_banner.title": "Never miss a thing",
|
||||
"picture_in_picture.restore": "Put it back",
|
||||
"notifications.mark_as_read": "標記所有通知為已讀",
|
||||
"notifications.permission_denied": "瀏覽器的桌面通知權限設定為拒絕,因此不可以啟用桌面通知",
|
||||
"notifications.permission_denied_alert": "瀏覽器的桌面通知權限設定為拒絕,因此不可以啟用桌面通知",
|
||||
"notifications_permission_banner.enable": "啟用桌面通知",
|
||||
"notifications_permission_banner.how_to_control": "啟用桌面通知可以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,你可以透過上面的 {icon} 按鈕準確控制哪些類型的互動會產生桌面通知。",
|
||||
"notifications_permission_banner.title": "不放過任何通知",
|
||||
"picture_in_picture.restore": "還原影片播放器",
|
||||
"poll.closed": "已關閉",
|
||||
"poll.refresh": "重新整理",
|
||||
"poll.total_people": "{count, plural, one {# 個投票} other {# 個投票}}",
|
||||
@ -468,7 +468,7 @@
|
||||
"upload_modal.detect_text": "從圖片偵測文字",
|
||||
"upload_modal.edit_media": "編輯媒體",
|
||||
"upload_modal.hint": "點擊或拖曳圓圈以選擇預覽縮圖。",
|
||||
"upload_modal.preparing_ocr": "Preparing OCR…",
|
||||
"upload_modal.preparing_ocr": "準備辨識圖片文字…",
|
||||
"upload_modal.preview_label": "預覽 ({ratio})",
|
||||
"upload_progress.label": "上載中……",
|
||||
"video.close": "關閉影片",
|
||||
|
@ -254,8 +254,8 @@
|
||||
"keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點",
|
||||
"keyboard_shortcuts.up": "往上移動名單項目",
|
||||
"lightbox.close": "關閉",
|
||||
"lightbox.compress": "Compress image view box",
|
||||
"lightbox.expand": "Expand image view box",
|
||||
"lightbox.compress": "折疊圖片檢視框",
|
||||
"lightbox.expand": "展開圖片檢視框",
|
||||
"lightbox.next": "下一步",
|
||||
"lightbox.previous": "上一步",
|
||||
"lightbox.view_context": "檢視內文",
|
||||
@ -280,7 +280,7 @@
|
||||
"mute_modal.duration": "持續時間",
|
||||
"mute_modal.hide_notifications": "隱藏來自這位使用者的通知?",
|
||||
"mute_modal.indefinite": "無期限",
|
||||
"navigation_bar.apps": "封鎖的使用者",
|
||||
"navigation_bar.apps": "行動應用程式",
|
||||
"navigation_bar.blocks": "封鎖使用者",
|
||||
"navigation_bar.bookmarks": "書籤",
|
||||
"navigation_bar.community_timeline": "本機時間軸",
|
||||
@ -335,12 +335,12 @@
|
||||
"notifications.filter.polls": "投票結果",
|
||||
"notifications.filter.statuses": "已跟隨使用者的最新動態",
|
||||
"notifications.group": "{count} 條通知",
|
||||
"notifications.mark_as_read": "Mark every notification as read",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
|
||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||
"notifications_permission_banner.title": "Never miss a thing",
|
||||
"notifications.mark_as_read": "將所有通知都標記為已讀",
|
||||
"notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用",
|
||||
"notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知",
|
||||
"notifications_permission_banner.enable": "啟用桌面通知",
|
||||
"notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,你可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。",
|
||||
"notifications_permission_banner.title": "不要錯過任何東西!",
|
||||
"picture_in_picture.restore": "還原",
|
||||
"poll.closed": "已關閉",
|
||||
"poll.refresh": "重新整理",
|
||||
|
File diff suppressed because one or more lines are too long
@ -1652,11 +1652,11 @@ a.account__display-name {
|
||||
}
|
||||
}
|
||||
|
||||
.star-icon.active {
|
||||
.icon-button.star-icon.active {
|
||||
color: $gold-star;
|
||||
}
|
||||
|
||||
.bookmark-icon.active {
|
||||
.icon-button.bookmark-icon.active {
|
||||
color: $red-bookmark;
|
||||
}
|
||||
|
||||
@ -3007,7 +3007,6 @@ button.icon-button i.fa-retweet {
|
||||
&::before {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
button.icon-button.active i.fa-retweet {
|
||||
@ -4487,16 +4486,19 @@ a.status-card.compact:hover {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
|
||||
.extended-video-player {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
&__close,
|
||||
&__zoom-button {
|
||||
color: rgba($white, 0.7);
|
||||
|
||||
video {
|
||||
max-width: $media-modal-media-max-width;
|
||||
max-height: $media-modal-media-max-height;
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
color: $white;
|
||||
background-color: rgba($white, 0.15);
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background-color: rgba($white, 0.3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4533,10 +4535,10 @@ a.status-card.compact:hover {
|
||||
}
|
||||
|
||||
.media-modal__nav {
|
||||
background: rgba($base-overlay-background, 0.5);
|
||||
background: transparent;
|
||||
box-sizing: border-box;
|
||||
border: 0;
|
||||
color: $primary-text-color;
|
||||
color: rgba($primary-text-color, 0.7);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -4547,6 +4549,12 @@ a.status-card.compact:hover {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
color: $primary-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
.media-modal__nav--left {
|
||||
@ -4557,58 +4565,86 @@ a.status-card.compact:hover {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.media-modal__pagination {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.media-modal__overlay {
|
||||
max-width: 600px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 20px;
|
||||
pointer-events: none;
|
||||
}
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
margin: 0 auto;
|
||||
|
||||
.media-modal__meta {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 20px;
|
||||
width: 100%;
|
||||
pointer-events: none;
|
||||
.picture-in-picture__footer {
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
padding: 20px 0;
|
||||
|
||||
&--shifted {
|
||||
bottom: 62px;
|
||||
}
|
||||
.icon-button {
|
||||
color: $white;
|
||||
|
||||
a {
|
||||
pointer-events: auto;
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
color: $ui-secondary-color;
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
color: $white;
|
||||
background-color: rgba($white, 0.15);
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
text-decoration: underline;
|
||||
&:focus {
|
||||
background-color: rgba($white, 0.3);
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: $highlight-text-color;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
background: rgba($highlight-text-color, 0.15);
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background: rgba($highlight-text-color, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
&.star-icon.active {
|
||||
color: $gold-star;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
background: rgba($gold-star, 0.15);
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background: rgba($gold-star, 0.3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.media-modal__page-dot {
|
||||
display: inline-block;
|
||||
.media-modal__pagination {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.media-modal__button {
|
||||
background-color: $primary-text-color;
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
border-radius: 6px;
|
||||
margin: 10px;
|
||||
.media-modal__page-dot {
|
||||
flex: 0 0 auto;
|
||||
background-color: $white;
|
||||
opacity: 0.4;
|
||||
height: 6px;
|
||||
width: 6px;
|
||||
border-radius: 50%;
|
||||
margin: 0 4px;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 0;
|
||||
}
|
||||
transition: opacity .2s ease-in-out;
|
||||
|
||||
.media-modal__button--active {
|
||||
background-color: $highlight-text-color;
|
||||
&.active {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.media-modal__close {
|
||||
|
52
app/lib/status_reach_finder.rb
Normal file
52
app/lib/status_reach_finder.rb
Normal file
@ -0,0 +1,52 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class StatusReachFinder
|
||||
def initialize(status)
|
||||
@status = status
|
||||
end
|
||||
|
||||
def inboxes
|
||||
Account.where(id: reached_account_ids).inboxes
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def reached_account_ids
|
||||
[
|
||||
replied_to_account_id,
|
||||
reblog_of_account_id,
|
||||
mentioned_account_ids,
|
||||
reblogs_account_ids,
|
||||
favourites_account_ids,
|
||||
replies_account_ids,
|
||||
].tap do |arr|
|
||||
arr.flatten!
|
||||
arr.compact!
|
||||
arr.uniq!
|
||||
end
|
||||
end
|
||||
|
||||
def replied_to_account_id
|
||||
@status.in_reply_to_account_id
|
||||
end
|
||||
|
||||
def reblog_of_account_id
|
||||
@status.reblog.account_id if @status.reblog?
|
||||
end
|
||||
|
||||
def mentioned_account_ids
|
||||
@status.mentions.pluck(:account_id)
|
||||
end
|
||||
|
||||
def reblogs_account_ids
|
||||
@status.reblogs.pluck(:account_id)
|
||||
end
|
||||
|
||||
def favourites_account_ids
|
||||
@status.favourites.pluck(:account_id)
|
||||
end
|
||||
|
||||
def replies_account_ids
|
||||
@status.replies.pluck(:account_id)
|
||||
end
|
||||
end
|
@ -15,7 +15,7 @@ module AccountMerging
|
||||
Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite,
|
||||
Follow, FollowRequest, Block, Mute, AccountIdentityProof,
|
||||
AccountModerationNote, AccountPin, AccountStat, ListAccount,
|
||||
PollVote, Mention
|
||||
PollVote, Mention, AccountDeletionRequest, AccountNote
|
||||
]
|
||||
|
||||
owned_classes.each do |klass|
|
||||
@ -28,7 +28,10 @@ module AccountMerging
|
||||
end
|
||||
end
|
||||
|
||||
target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin]
|
||||
target_classes = [
|
||||
Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin,
|
||||
AccountNote
|
||||
]
|
||||
|
||||
target_classes.each do |klass|
|
||||
klass.where(target_account_id: other_account.id).find_each do |record|
|
||||
@ -39,5 +42,10 @@ module AccountMerging
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Some follow relationships have moved, so the cache is stale
|
||||
Rails.cache.delete_matched("followers_hash:#{id}:*")
|
||||
Rails.cache.delete_matched("relationships:#{id}:*")
|
||||
Rails.cache.delete_matched("relationships:*:#{id}")
|
||||
end
|
||||
end
|
||||
|
@ -9,45 +9,48 @@ class RemoveStatusService < BaseService
|
||||
# @param [Hash] options
|
||||
# @option [Boolean] :redraft
|
||||
# @option [Boolean] :immediate
|
||||
# @option [Boolean] :original_removed
|
||||
# @option [Boolean] :original_removed
|
||||
def call(status, **options)
|
||||
@payload = Oj.dump(event: :delete, payload: status.id.to_s)
|
||||
@status = status
|
||||
@account = status.account
|
||||
@tags = status.tags.pluck(:name).to_a
|
||||
@mentions = status.active_mentions.includes(:account).to_a
|
||||
@reblogs = status.reblogs.includes(:account).to_a
|
||||
@options = options
|
||||
|
||||
RedisLock.acquire(lock_options) do |lock|
|
||||
if lock.acquired?
|
||||
remove_from_self if status.account.local?
|
||||
remove_from_self if @account.local?
|
||||
remove_from_followers
|
||||
remove_from_lists
|
||||
remove_from_affected
|
||||
remove_reblogs
|
||||
remove_from_hashtags
|
||||
remove_from_public
|
||||
remove_from_media if status.media_attachments.any?
|
||||
remove_from_direct if status.direct_visibility?
|
||||
remove_from_spam_check
|
||||
remove_media
|
||||
|
||||
# There is no reason to send out Undo activities when the
|
||||
# cause is that the original object has been removed, since
|
||||
# original object being removed implicitly removes reblogs
|
||||
# of it. The Delete activity of the original is forwarded
|
||||
# separately.
|
||||
if @account.local? && !@options[:original_removed]
|
||||
remove_from_remote_followers
|
||||
remove_from_remote_reach
|
||||
end
|
||||
|
||||
# Since reblogs don't mention anyone, don't get reblogged,
|
||||
# favourited and don't contain their own media attachments
|
||||
# or hashtags, this can be skipped
|
||||
unless @status.reblog?
|
||||
remove_from_mentions
|
||||
remove_reblogs
|
||||
remove_from_hashtags
|
||||
remove_from_public
|
||||
remove_from_media if @status.media_attachments.any?
|
||||
remove_from_direct if status.direct_visibility?
|
||||
remove_from_spam_check
|
||||
remove_media
|
||||
end
|
||||
|
||||
@status.destroy! if @options[:immediate] || !@status.reported?
|
||||
else
|
||||
raise Mastodon::RaceConditionError
|
||||
end
|
||||
end
|
||||
|
||||
# There is no reason to send out Undo activities when the
|
||||
# cause is that the original object has been removed, since
|
||||
# original object being removed implicitly removes reblogs
|
||||
# of it. The Delete activity of the original is forwarded
|
||||
# separately.
|
||||
return if !@account.local? || @options[:original_removed]
|
||||
|
||||
remove_from_remote_followers
|
||||
remove_from_remote_affected
|
||||
end
|
||||
|
||||
private
|
||||
@ -69,31 +72,35 @@ class RemoveStatusService < BaseService
|
||||
end
|
||||
end
|
||||
|
||||
def remove_from_affected
|
||||
@mentions.map(&:account).select(&:local?).each do |account|
|
||||
redis.publish("timeline:#{account.id}", @payload)
|
||||
def remove_from_mentions
|
||||
# For limited visibility statuses, the mentions that determine
|
||||
# who receives them in their home feed are a subset of followers
|
||||
# and therefore the delete is already handled by sending it to all
|
||||
# followers. Here we send a delete to actively mentioned accounts
|
||||
# that may not follow the account
|
||||
|
||||
@status.active_mentions.find_each do |mention|
|
||||
redis.publish("timeline:#{mention.account_id}", @payload)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_from_remote_affected
|
||||
def remove_from_remote_reach
|
||||
return if @status.reblog?
|
||||
|
||||
# People who got mentioned in the status, or who
|
||||
# reblogged it from someone else might not follow
|
||||
# the author and wouldn't normally receive the
|
||||
# delete notification - so here, we explicitly
|
||||
# send it to them
|
||||
|
||||
target_accounts = (@mentions.map(&:account).reject(&:local?) + @reblogs.map(&:account).reject(&:local?))
|
||||
target_accounts << @status.reblog.account if @status.reblog? && !@status.reblog.account.local?
|
||||
target_accounts.uniq!(&:id)
|
||||
status_reach_finder = StatusReachFinder.new(@status)
|
||||
|
||||
# ActivityPub
|
||||
ActivityPub::DeliveryWorker.push_bulk(target_accounts.select(&:activitypub?).uniq(&:preferred_inbox_url)) do |target_account|
|
||||
[signed_activity_json, @account.id, target_account.preferred_inbox_url]
|
||||
ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes) do |inbox_url|
|
||||
[signed_activity_json, @account.id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
||||
def remove_from_remote_followers
|
||||
# ActivityPub
|
||||
ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url|
|
||||
[signed_activity_json, @account.id, inbox_url]
|
||||
end
|
||||
@ -120,19 +127,19 @@ class RemoveStatusService < BaseService
|
||||
# because once original status is gone, reblogs will disappear
|
||||
# without us being able to do all the fancy stuff
|
||||
|
||||
@reblogs.each do |reblog|
|
||||
@status.reblogs.includes(:account).find_each do |reblog|
|
||||
RemoveStatusService.new.call(reblog, original_removed: true)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_from_hashtags
|
||||
@account.featured_tags.where(tag_id: @status.tags.pluck(:id)).each do |featured_tag|
|
||||
@account.featured_tags.where(tag_id: @status.tags.map(&:id)).each do |featured_tag|
|
||||
featured_tag.decrement(@status.id)
|
||||
end
|
||||
|
||||
return unless @status.public_visibility?
|
||||
|
||||
@tags.each do |hashtag|
|
||||
@status.tags.map(&:name).each do |hashtag|
|
||||
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", @payload)
|
||||
redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", @payload) if @status.local?
|
||||
end
|
||||
@ -142,22 +149,14 @@ class RemoveStatusService < BaseService
|
||||
return unless @status.public_visibility?
|
||||
|
||||
redis.publish('timeline:public', @payload)
|
||||
if @status.local?
|
||||
redis.publish('timeline:public:local', @payload)
|
||||
else
|
||||
redis.publish('timeline:public:remote', @payload)
|
||||
end
|
||||
redis.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', @payload)
|
||||
end
|
||||
|
||||
def remove_from_media
|
||||
return unless @status.public_visibility?
|
||||
|
||||
redis.publish('timeline:public:media', @payload)
|
||||
if @status.local?
|
||||
redis.publish('timeline:public:local:media', @payload)
|
||||
else
|
||||
redis.publish('timeline:public:remote:media', @payload)
|
||||
end
|
||||
redis.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', @payload)
|
||||
end
|
||||
|
||||
def remove_from_direct
|
||||
|
@ -22,7 +22,6 @@
|
||||
|
||||
.actions
|
||||
- resource_class.omniauth_providers.each do |provider|
|
||||
= link_to omniauth_authorize_path(resource_name, provider), class: "button button-#{provider}" do
|
||||
= t("auth.providers.#{provider}", default: provider.to_s.chomp("_oauth2").capitalize)
|
||||
= link_to t("auth.providers.#{provider}", default: provider.to_s.chomp("_oauth2").capitalize), omniauth_authorize_path(resource_name, provider), class: "button button-#{provider}", method: :post
|
||||
|
||||
.form-footer= render 'auth/shared/links'
|
||||
|
@ -1,3 +1,6 @@
|
||||
:ruby
|
||||
hide_show_thread ||= false
|
||||
|
||||
.status{ class: "status-#{status.visibility}" }
|
||||
.status__info
|
||||
= link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__relative-time u-url u-uid', target: stream_link_target, rel: 'noopener noreferrer' do
|
||||
@ -47,7 +50,7 @@
|
||||
- elsif status.preview_card
|
||||
= react_component :card, sensitive: sensitized?(status, current_account), 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json
|
||||
|
||||
- if !status.in_reply_to_id.nil? && status.in_reply_to_account_id == status.account.id
|
||||
- if !status.in_reply_to_id.nil? && status.in_reply_to_account_id == status.account.id && !hide_show_thread
|
||||
= link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__content__read-more-button', target: stream_link_target, rel: 'noopener noreferrer' do
|
||||
= t 'statuses.show_thread'
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
%span
|
||||
= t('stream_entries.pinned')
|
||||
|
||||
= render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, autoplay: autoplay
|
||||
= render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, autoplay: autoplay, hide_show_thread: is_predecessor || is_successor
|
||||
|
||||
- if include_threads
|
||||
- if @since_descendant_thread_id
|
||||
|
@ -1 +1,17 @@
|
||||
--- {}
|
||||
---
|
||||
ku:
|
||||
activerecord:
|
||||
attributes:
|
||||
poll:
|
||||
expires_at: وادەی کۆتایی
|
||||
options: هەڵبژاردنەکان
|
||||
errors:
|
||||
models:
|
||||
account:
|
||||
attributes:
|
||||
username:
|
||||
invalid: تەنها پیت، ژمارە و ژێرەوە
|
||||
status:
|
||||
attributes:
|
||||
reblog:
|
||||
taken: لە بار بوونی هەیە
|
||||
|
@ -842,6 +842,7 @@ ca:
|
||||
request: Sol·licita el teu arxiu
|
||||
size: Mida
|
||||
blocks: Persones que has blocat
|
||||
bookmarks: Marcadors
|
||||
csv: CSV
|
||||
domain_blocks: Bloquejos de dominis
|
||||
lists: Llistes
|
||||
@ -918,6 +919,7 @@ ca:
|
||||
success: Les dades s'han rebut correctament i es processaran en breu
|
||||
types:
|
||||
blocking: Llista de blocats
|
||||
bookmarks: Marcadors
|
||||
domain_blocking: Llistat de dominis bloquejats
|
||||
following: Llista de seguits
|
||||
muting: Llista de silenciats
|
||||
@ -1074,6 +1076,7 @@ ca:
|
||||
relationships:
|
||||
activity: Activitat del compte
|
||||
dormant: Inactiu
|
||||
follow_selected_followers: Segueix als seguidors seleccionats
|
||||
followers: Seguidors
|
||||
following: Seguint
|
||||
invited: Convidat
|
||||
|
@ -1074,6 +1074,7 @@ co:
|
||||
relationships:
|
||||
activity: Attività di u contu
|
||||
dormant: Inattivu
|
||||
follow_selected_followers: Abbunassi à l'abbunati selezziunati
|
||||
followers: Abbunati
|
||||
following: Abbunamenti
|
||||
invited: Invitatu
|
||||
|
@ -754,6 +754,7 @@ da:
|
||||
request: Anmod om dit arkiv
|
||||
size: Størrelse
|
||||
blocks: Du blokerer
|
||||
bookmarks: Bogmærker
|
||||
csv: CSV
|
||||
domain_blocks: Domæne blokeringer
|
||||
lists: Lister
|
||||
@ -816,6 +817,7 @@ da:
|
||||
success: Dine data blev succesfuldt uploaded og vil nu blive behandlet hurtigst muligt
|
||||
types:
|
||||
blocking: Blokeringsliste
|
||||
bookmarks: Bogmærker
|
||||
domain_blocking: Domæne blokeringsliste
|
||||
following: Følgningsliste
|
||||
muting: Liste over dæmpninger
|
||||
@ -941,6 +943,7 @@ da:
|
||||
unrecognized_emoji: er ikke en genkendt emoji
|
||||
relationships:
|
||||
activity: Aktivitet for konto
|
||||
follow_selected_followers: Følg valgte følgere
|
||||
followers: Følgere
|
||||
following: Følger
|
||||
invited: Inviteret
|
||||
|
@ -842,6 +842,7 @@ de:
|
||||
request: Dein Archiv anfragen
|
||||
size: Größe
|
||||
blocks: Du hast blockiert
|
||||
bookmarks: Lesezeichen
|
||||
csv: CSV
|
||||
domain_blocks: Domainblockaden
|
||||
lists: Listen
|
||||
@ -918,6 +919,7 @@ de:
|
||||
success: Deine Daten wurden erfolgreich hochgeladen und werden in Kürze verarbeitet
|
||||
types:
|
||||
blocking: Blockierliste
|
||||
bookmarks: Lesezeichen
|
||||
domain_blocking: Domain-Blockliste
|
||||
following: Folgeliste
|
||||
muting: Stummschaltungsliste
|
||||
@ -1074,6 +1076,7 @@ de:
|
||||
relationships:
|
||||
activity: Kontoaktivität
|
||||
dormant: Inaktiv
|
||||
follow_selected_followers: Ausgewählte Follower folgen
|
||||
followers: Folgende
|
||||
following: Folgt
|
||||
invited: Eingeladen
|
||||
|
@ -60,6 +60,19 @@ cs:
|
||||
title: Záložní kódy pro 2FA změněny
|
||||
unlock_instructions:
|
||||
subject: 'Mastodon: Instrukce pro odemčení účtu'
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: Následující bezpečnostní klíč byl přidán k vašemu účtu
|
||||
subject: 'Mastodon: Nový bezpečnostní klíč'
|
||||
title: Byl přidán nový bezpečnostní klíč
|
||||
deleted:
|
||||
explanation: Následující bezpečnostní klíč byl odstraněn z vašeho účtu
|
||||
subject: 'Mastodon: Bezpečnostní klíč byl smazán'
|
||||
title: Jeden z vašich bezpečnostních klíčů byl smazán
|
||||
webauthn_disabled:
|
||||
title: Bezpečnostní klíče zakázány
|
||||
webauthn_enabled:
|
||||
title: Bezpečnostní klíče povoleny
|
||||
omniauth_callbacks:
|
||||
failure: Nelze vás ověřit z %{kind}, protože „%{reason}“.
|
||||
success: Úspěšně ověřeno z účtu %{kind}.
|
||||
|
@ -1 +1,115 @@
|
||||
--- {}
|
||||
---
|
||||
es:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: Su direccion de email ha sido confirmada con exito.
|
||||
send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
|
||||
send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
|
||||
failure:
|
||||
already_authenticated: Usted ya está registrado.
|
||||
inactive: Su cuenta todavía no está activa.
|
||||
invalid: Inválido %{authentication_keys} o contraseña.
|
||||
last_attempt: Tiene un intento más antes de que su cuenta sea bloqueada.
|
||||
locked: Su cuenta está bloqueada.
|
||||
not_found_in_database: Inválido %{authentication_keys} o contraseña.
|
||||
pending: Su cuenta aun se encuentra bajo revisión.
|
||||
timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar.
|
||||
unauthenticated: Necesita iniciar sesión o registrarse antes de continuar.
|
||||
unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar.
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: Verificar dirección de correo electrónico
|
||||
action_with_app: Confirmar y regresar a %{app}
|
||||
explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estas a un clic de activarla. Si no fue usted, por favor ignore este correo electrónico.
|
||||
explanation_when_pending: Usted ha solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirme su dirección de correo electrónico, revisaremos su aplicación. No puede iniciar sesión hasta que su aplicación sea revisada. Si su solicitud está rechazada, sus datos serán eliminados, así que no será necesaria ninguna acción adicional por ti. Si no fuera usted, por favor ignore este correo electrónico.
|
||||
extra_html: Por favor revise <a href="%{terms_path}">las reglas de la instancia</a> y <a href="%{policy_path}">nuestros términos de servicio</a>.
|
||||
subject: 'Mastodon: Instrucciones de confirmación para %{instance}'
|
||||
title: Verificar dirección de correo electrónico
|
||||
email_changed:
|
||||
explanation: 'El correo electrónico para su cuenta esta siendo cambiada a:'
|
||||
extra: Si usted no ha cambiado su correo electrónico, es probable que alguien haya conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte al administrador de la instancia si usted no puede iniciar sesión.
|
||||
subject: 'Mastodon: Correo electrónico cambiado'
|
||||
title: Nueva dirección de correo electrónico
|
||||
password_change:
|
||||
explanation: La contraseña de su cuenta a sido cambiada.
|
||||
extra: Si usted no a cambiado su contraseña. es probable que alguien a conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte a el administrador de la instancia si usted esta bloqueado de su cuenta.
|
||||
subject: 'Mastodon: Contraseña cambiada'
|
||||
title: Contraseña cambiada
|
||||
reconfirmation_instructions:
|
||||
explanation: Confirme la nueva dirección para cambiar su coreo electrónico.
|
||||
extra: Si no iniciaste este cambio, por favor ignora este correo. Esta dirección de correo para la cuenta de Mastodon no cambiará hasta que accedas al vinculo arriba.
|
||||
subject: 'Mastodon: Confirme correo electrónico para %{instance}'
|
||||
title: Verifique dirección de correo electrónico
|
||||
reset_password_instructions:
|
||||
action: Cambiar contraseña
|
||||
explanation: Solicitaste una nueva contraseña para tu cuenta.
|
||||
extra: Si no solicitaste esto, por favor ignora este correo. Tu contraseña no cambiará hasta que tu accedas al vinculo arriba y crees una nueva.
|
||||
subject: 'Mastodon: Instrucciones para reiniciar contraseña'
|
||||
title: Reiniciar contraseña
|
||||
two_factor_disabled:
|
||||
explanation: La autenticación de dos factores para tu cuenta ha sido deshabilitada. Ahora puedes conectarte solamente usando la dirección de correo electrónico y la contraseña.
|
||||
subject: 'Mastodon: La autenticación de dos factores está deshabilitada'
|
||||
title: 2FA desactivada
|
||||
two_factor_enabled:
|
||||
explanation: La autenticación de dos factores para tu cuenta ha sido habilitada. Se requiere un token generado por la aplicación TOTP emparejada para ingresar.
|
||||
subject: 'Mastodon: La autenticación de dos factores está habilitada'
|
||||
title: 2FA activada
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: Los códigos de recuperación previos han sido invalidados y se generaron códigos nuevos.
|
||||
subject: 'Mastodon: Los códigos de recuperación de dos factores fueron regenerados'
|
||||
title: Códigos de recuperación 2FA cambiados
|
||||
unlock_instructions:
|
||||
subject: 'Mastodon: Instrucciones para desbloquear'
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: La siguiente clave de seguridad ha sido añadida a su cuenta
|
||||
subject: 'Mastodon: Nueva clave de seguridad'
|
||||
title: Se agregó una nueva clave de seguridad
|
||||
deleted:
|
||||
explanation: La siguiente clave de seguridad ha sido eliminada de su cuenta
|
||||
subject: 'Mastodon: Clave de seguridad eliminada'
|
||||
title: Una de sus claves de seguridad ha sido eliminada
|
||||
webauthn_disabled:
|
||||
explanation: La autenticación con claves de seguridad ha sido desactivada para tu cuenta. El inicio de sesión es ahora posible únicamente utilizando el token generado por la aplicación emparejada TOTP.
|
||||
subject: 'Mastodon: Autenticación con claves de seguridad desactivada'
|
||||
title: Claves de seguridad desactivadas
|
||||
webauthn_enabled:
|
||||
explanation: La autenticación con clave de seguridad ha sido habilitada para su cuenta. Su clave de seguridad ahora puede ser usada para iniciar sesión.
|
||||
subject: 'Mastodon: Autenticación con clave de seguridad activada'
|
||||
title: Claves de seguridad activadas
|
||||
omniauth_callbacks:
|
||||
failure: No podemos autentificarle desde %{kind} debido a "%{reason}".
|
||||
success: Autentificado con éxito desde la cuenta %{kind} .
|
||||
passwords:
|
||||
no_token: No puede acceder a esta página sin provenir desde el correo de reinicio de contraseña. Si viene desde el correo de reinicio de contraseña, por favor asegúrese que está utilizando la dirección completa proporcionada.
|
||||
send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo reiniciar su contraseña en pocos minutos.
|
||||
send_paranoid_instructions: Si su correo electrónico existe en nuestra base de datos, recibirá un enlace de recuperación de contraseña en su dirección de correo en pocos minutos.
|
||||
updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado.
|
||||
updated_not_active: Su contraseña ha sido cambiada con éxito.
|
||||
registrations:
|
||||
destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo."
|
||||
signed_up: "¡Bienvenido! Se ha registrado con éxito."
|
||||
signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía.
|
||||
signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada.
|
||||
signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada.
|
||||
signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta.
|
||||
update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo.
|
||||
updated: su cuenta ha sido actualizada con éxito.
|
||||
sessions:
|
||||
already_signed_out: Cerró sesión con éxito.
|
||||
signed_in: Se registró con éxito.
|
||||
signed_out: Cerró sesión con éxito.
|
||||
unlocks:
|
||||
send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo desbloquear su cuenta en pocos minutos.
|
||||
send_paranoid_instructions: Si su cuenta existe, recibirá un correo electrónico con instrucciones sobre cómo desbloquearla en pocos minutos.
|
||||
unlocked: Su cuenta ha sido desbloqueada con éxito. Por favor inicie sesión para continuar.
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: ya fue confirmado, por favor intente iniciar sesión
|
||||
confirmation_period_expired: necesita ser confirmado dentro de %{period}, por favor pida una nueva
|
||||
expired: ha expirado, por favor pida una nueva
|
||||
not_found: no encontrado
|
||||
not_locked: no fue bloqueada
|
||||
not_saved:
|
||||
one: '1 error prohibió este %{resource} de ser guardado:'
|
||||
other: "%{count} errores prohibieron este %{resource} de ser guardado:"
|
||||
|
@ -19,7 +19,7 @@ gl:
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: Verificar o enderezo de email
|
||||
action_with_app: Confirmar e voltar a %{app}
|
||||
action_with_app: Confirmar e volver a %{app}
|
||||
explanation: Creaches unha conta en %{host} con este enderezo de email. Estás a un clic de activala. Se non foches ti o que fixeches este rexisto, por favor ignora esta mensaxe.
|
||||
explanation_when_pending: Solicitaches un convite para %{host} con este enderezo de email. Logo de que confirmes o teu enderezo de email, imos revisar a túa inscrición. Podes iniciar sesión para mudar os teus datos ou eliminar a túa conta, mais non poderás aceder á meirande parte das funcións até que a túa conta sexa aprobada. Se a túa inscrición for rexeitada, os teus datos serán eliminados, polo que non será necesaria calquera acción adicional da túa parte. Se non solicitaches este convite, por favor, ignora este correo.
|
||||
extra_html: Por favor, le <a href="%{terms_path}">as regras do servidor</a> e os <a href="%{policy_path}">nosos termos do servizo</a>.
|
||||
|
@ -76,7 +76,7 @@ ja:
|
||||
webauthn_enabled:
|
||||
explanation: あなたのアカウントでセキュリティキー認証が有効になりました。セキュリティキーをログインに使用できるようになりました。
|
||||
subject: 'Mastodon: セキュリティキー認証が有効になりました'
|
||||
title: セキュリティキーは無効になっています
|
||||
title: セキュリティキーは有効になっています
|
||||
omniauth_callbacks:
|
||||
failure: "%{reason}によって%{kind}からのアクセスを認証できませんでした。"
|
||||
success: "%{kind}からのアクセスは正常に認証されました。"
|
||||
|
@ -1 +1,115 @@
|
||||
--- {}
|
||||
---
|
||||
ku:
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: ناونیشانی ئیمەیڵەکەت بە سەرکەوتوویی پشتڕاستکرایەوە.
|
||||
send_instructions: ئیمەیڵێکت بۆ دەنێردرێت لەگەڵ ڕێنمایی بۆ چۆنیەتی دڵنیابوون لە ناونیشانی ئیمەیلەکەت لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت چاولێبکە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
send_paranoid_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، ئیمەیڵێکت پێدەگات لەگەڵ ڕێنماییەکانی چۆنیەتی دڵنیابوون لە ناونیشانی ئیمەیلەکەت لە چەند خولەکێکدا. تکایە بۆخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
failure:
|
||||
already_authenticated: تۆ پێشتر چوونە ژوورەوەت کردووە.
|
||||
inactive: هەژمارەکەت هێشتا کارا نەکراوە.
|
||||
invalid: "%{authentication_keys} یان نهێنوشە نادروستە."
|
||||
last_attempt: تۆ یەک هەوڵیدیکەت ماوە پێش ئەوەی ئەژمێرەکەت قوفڵ بێت.
|
||||
locked: هەژمارەکت داخراوە.
|
||||
not_found_in_database: "%{authentication_keys} یان نهێنوشە نادروستە."
|
||||
pending: هەژمێرەکەت هێشتا لەژێر پێداچوونەوەدایە.
|
||||
timeout: کۆبوونەوەکەت بەسەرچووە. تکایە دووبارە بچۆ ژوورەوە بۆ بەردەوام بوون.
|
||||
unauthenticated: پێویستە بچیتە ژوورەوە یان بچیتە ناو چوونە ناو پێش بەردەوام بوون.
|
||||
unconfirmed: دەبێت ناونیشانی ئیمەیڵەکەت پشتڕاست بکەیتەوە پێش بەردەوام بوون.
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
action: ناونیشانی ئیمەیڵ ساخ بکەرەوە
|
||||
action_with_app: پشتڕاستی بکەوە و بگەڕێوە بۆ %{app}
|
||||
explanation: ئەژمێرێکت دروست کردووە لەسەر %{host} بەم ناونیشانی ئیمەیڵە. تۆ یەک کرتە دووریت لە کاراکردنی. ئەگەر ئەمە تۆ نەبووی، تکایە ئەم ئیمەیڵە فەرامۆش بکە.
|
||||
explanation_when_pending: تۆ داوای بانگهێشتت کرد بۆ %{host} بەم ناونیشانی ئیمەیڵە. هەر کە دڵنیایی لە ناونیشانی ئیمەیڵەکەت دەکەیت، ئێمە پێداچوونەوە دەکەین بە بەرنامەکەتدا. دەتوانیت بچیت بۆ چوونە ژوورەوە بۆ گۆڕینی ووردەکاریەکانت یان سڕینەوەی هەژمارەکەت، بەڵام ناتوانیت دەستگەیشتنت هەبێت بە زۆربەی ئەرکەکان تا ئەژمێرەکەت پەسەند ناکرێت. ئەگەر کاربەرنامەکەت ڕەتکرایەوە، داتاکەت لادەبرێت، بۆیە پێویست بە کاری زیاتر لە تۆ ناکرێت. ئەگەر ئەمە تۆ نەبووی، تکایە ئەم ئیمەیڵە فەرامۆش بکە.
|
||||
extra_html: تکایە تێڕوانە لە <a href="%{terms_path}"> ڕێساکانی ڕاژەکار</a> و <a href="%{policy_path}"> مەرجەکانی خزمەتگوزاری</a>.
|
||||
subject: 'ماستۆدۆن: ڕێنماییەکانی پشتڕاستکردنەوە بۆ %{instance}'
|
||||
title: ناونیشانی ئیمەیڵ ساخ بکەرەوە
|
||||
email_changed:
|
||||
explanation: 'ناونیشانی ئیمەیڵەکەی ئەژمێرەکەت دەگۆڕدرێت بۆ:'
|
||||
extra: ئەگەر ئیمەیلەکەت نەگۆڕیت، لەوانەیە کەسێک دەستگەیشتنی بۆ هەژمارەکەت بەدەست بێت. تکایە تێپەڕوشەکەت بگۆڕە دەستبەجێ یان پەیوەندی بکە بە بەڕێوەبەری ڕاژەوە ئەگەر تۆ لە هەژمارەکەت داخرایت.
|
||||
subject: 'ماستۆدۆن: ئیمەیڵ گۆڕا'
|
||||
title: ناونیشانی ئیمەیڵی نوێ
|
||||
password_change:
|
||||
explanation: تێپەڕوشە بۆ هەژمارەکەت گۆڕاوە.
|
||||
extra: ئەگەر تێپەڕوشەکەت نەگۆڕی، وا دیارە کەسێک دەستگەیشتنی بۆ هەژمارەکەت بەدەست بێت. تکایە تێپەڕوسيکەت بگۆڕە دەستبەجێ یان پەیوەندی بکە بە بەڕێوەبەری ڕاژە ئەگەر تۆ لە هەژمارەکەت داخرایت.
|
||||
subject: 'ماستۆدۆن: تێپەڕوشە گۆڕدرا'
|
||||
title: تێپەڕوشە گۆڕدرا
|
||||
reconfirmation_instructions:
|
||||
explanation: دڵنیابوون لە ناونیشانی نوێ بۆ گۆڕینی ئیمەیڵەکەت.
|
||||
extra: ئەگەر ئەم گۆڕانکاریە لەلایەن تۆوە دەست پێنەکراوە، تکایە ئەم ئیمەیڵە فەرامۆش بکە. ناونیشانی ئیمەیڵ بۆ هەژمێری ماستۆدۆن ناگۆڕێ هەتا ئەو کاتەی دەستپێگەیشتنی ئەم لینکەت لە سەرەوە نیە.
|
||||
subject: 'ماستۆدۆن: دووپاتی ئیمەیل بۆ %{instance}'
|
||||
title: ناونیشانی ئیمەیڵ ساخ بکەرەوە
|
||||
reset_password_instructions:
|
||||
action: گۆڕینی تێپەڕوشە
|
||||
explanation: تۆ تیپەڕوشەی نوێت داوا کرد بۆ هەژمارەکەت.
|
||||
extra: ئەگەر ئەم داواکاریەت نەکرد، تکایە ئەم ئیمەیڵە فەرامۆش بکە. تێپەڕوشەکەت ناگۆڕێ هەتا نەچیتە ناو لینکی سەرەوە و دانەیەکی نوێ دروست بکەیت.
|
||||
subject: 'ماستۆدۆن: رێکردنەوەی رێنماییەکانی تێپەڕوشە'
|
||||
title: گەڕانەوەی تێپەڕوشە
|
||||
two_factor_disabled:
|
||||
explanation: سەلماندنی دوو-فاکتەر بۆ هەژمارەکەت کە لە کارخراوە. چوونەژوورەوە ئێستا دەکرێت تەنها ناونیشانی ئیمەیڵ و تێپەڕوشەکەت بەکاربهێنی.
|
||||
subject: 'ماستۆدۆن: سەلماندنی دوو-فاکتەری ناچالاک کراوە'
|
||||
title: 2FA ناچالاک کرا
|
||||
two_factor_enabled:
|
||||
explanation: سەلماندنی دوو-فاکتەر بۆ هەژمارەکەت چالاک کراوە. ئاماژەیەک کە لەلایەن نەرمەکالایTOTP جووتکراو دروست کراوە پێویستە بە چوونە ژوورەوە.
|
||||
subject: 'ماستۆدۆن: سەلماندنی دوو-فاکتەری چالاک کراوە'
|
||||
title: 2FA چالاک کرا
|
||||
two_factor_recovery_codes_changed:
|
||||
explanation: کۆدەکانی چاککردنەوەی پێشوو هەڵوەشێنرانەوە و، نوێکان دروست بوون.
|
||||
subject: 'ماستۆدۆن: کۆدەکانی گەڕانەوەی دوو فاکتەر، دووبارە دروست دەکرێتەوە'
|
||||
title: 2FA کۆدی چاککردنەوە گۆڕا
|
||||
unlock_instructions:
|
||||
subject: 'ماستۆدۆن: رێنماییەکان بکەرەوە'
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: کلیلی ئاسایشی خوارەوە زیادکرا بۆ هەژمارەکەت
|
||||
subject: 'ماستۆدۆن: کلیلی ئاسایشی نوێ'
|
||||
title: کلیلی پاراستنی نوێ زیادکرا
|
||||
deleted:
|
||||
explanation: کلیلی ئاسایشی خوارەوە لە هەژمارەکەت سڕایەوە
|
||||
subject: 'ماستۆدۆن: کلیلی پاراستن سڕایەوە'
|
||||
title: کلیلە کانی پاراستنی یەکێک لە ئێوە سڕایەوە
|
||||
webauthn_disabled:
|
||||
explanation: سەلماندن بە کلیلەپارێزراوەکان لە کارخراوە بۆ هەژمارەکەت. چوونەژوورەوە ئێستا دەکرێت تەنها ئەو نیشانەیە بەکاربێنیت کە لەلایەن نەرمەکالایTOTP دروست کراوە.
|
||||
subject: 'ماستۆدۆن: سەلماندن لەگەڵ کلیلە پاسایشی ناچالاک کراوە'
|
||||
title: کلیلە پارستنەکان ناچالاک کراون
|
||||
webauthn_enabled:
|
||||
explanation: سەلماندنی کلیلی ئاسایش چالاک کراوە بۆ هەژمارەکەت. ئێستا کلیلی پاراستن دەتوانرێت بۆ چوونە ژوورەوە بەکار بێت.
|
||||
subject: 'ماستۆدۆن: سەلماندنی کلیلی پاراستن چالاک کراوە'
|
||||
title: کلیلە کانی پاراستن چالاک کرا
|
||||
omniauth_callbacks:
|
||||
failure: نەیتوانی ڕەسەنایە تی %{kind} بتەوبکات لەبەرئەوەی "%{reason}".
|
||||
success: سەرکەوتووانە لە هەژماری %{kind} سەلمێنرا.
|
||||
passwords:
|
||||
no_token: ناتوانیت دەستگەیشتنت هەبێت بەم لاپەڕەیە بەبێ ئەوەی لە ئیمەیڵێکی گەڕانەوەی تێپەڕوشەت بێت. ئەگەر لە ئیمەیڵێکیگەڕانەوەی تێپەڕوشە هاتوویت، تکایە دڵنیابە لەوەی کە URLی تەواوت بەکارهێناوە کە دابینکراوە.
|
||||
send_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، لە چەند خولەکێکی کەمدا لینکی هێنانەوەی تێپەڕوشە لە ناونیشانی ئیمەیلەکەت پێ دەگات. تکایە بوخچەی سپامەکەت بکەرەوە، ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
send_paranoid_instructions: ئەگەر ناونیشانی ئیمەیڵەکەت لە بنکەی زانیارێکانماندا هەبێت، لە چەند خولەکێکی کەمدا لینکی هێنانەوەی تێپەڕوشە لە ناونیشانی ئیمەیلەکەت پێ دەگات. تکایە بوخچەی سپامەکەت بکەرەوە، ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
updated: تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدرا. تۆ ئێستاچوویتە ژوورەوە.
|
||||
updated_not_active: تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدرا.
|
||||
registrations:
|
||||
destroyed: خوات لەگەڵ! ئەژمێرەکەت بە سەرکەوتوویی هەڵوەشێنرایەوە. هیوادارین بەزوویی بتبینینەوە.
|
||||
signed_up: بەخێربێیت! تۆ بە سەرکەوتوویی تۆمار کرای.
|
||||
signed_up_but_inactive: تۆ بە سەرکەوتوویی تۆمارکرای. هەرچۆنێک بێت، نەمانتوانی چوونە ژوورەوەت بۆ بکەین لەبەرئەوەی هێشتا هەژمارەکەت کارا نەکراوە.
|
||||
signed_up_but_locked: تۆ بە سەرکەوتوویی تۆمارکرای. هەرچۆنێک بێت، نەمانتوانی چوونە ژوورەوەت بۆ بکەین لەبەرئەوەی هێشتا هەژمارەکەت قوفڵ کراوە.
|
||||
signed_up_but_pending: نامەیەک بە لینکی دووپاتکردنەوە نێردراوە بۆ ناونیشانی ئیمەیڵەکەت. دوای ئەوەی تۆ کرتە لەسەر لینکەکە دەکەیت، ئێمە پێداچوونەوە دەکەین بە بەرنامەکەتدا. ئاگادار دەکرێیت ئەگەر پەسەند کرا.
|
||||
signed_up_but_unconfirmed: نامەیەک بە لینکی دووپاتکردنەوە نێردراوە بۆ ناونیشانی ئیمەیڵەکەت. تکایە دوای لینکەکە بکەوە بۆ کاراکردنی هەژمارەکەت. تکایە بوخچەی سپامەکەت بکەرەوە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
update_needs_confirmation: تۆ ئەژمێرەکەت بە سەرکەوتوویی نوێکردەوە، بەڵام پێویستە ئیمەیڵە نوێکەت بسەلمێنین. تکایە ئیمەیڵەکەت بپشکنە و دوای بەستەری دڵنیابوونەوە بکەوە بۆ دڵنیابوون لە ناونیشانی ئیمەیڵە نوێکەت. تکایە بوخچەی سپامەکەت بکەرەوە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
updated: هەژمارەکەت بە سەرکەوتوویی نوێکرایەوە.
|
||||
sessions:
|
||||
already_signed_out: چوونە دەرەوە بە سەرکەوتوویی ئەنجام بوو.
|
||||
signed_in: بە سەرکەوتوویی چوونە ژوورەوە.
|
||||
signed_out: چوونە دەرەوە بە سەرکەوتوویی ئەنجام بوو.
|
||||
unlocks:
|
||||
send_instructions: ئیمەیڵێکت بۆ دەنێردرێت لەگەڵ ڕێنمایی بۆ چۆنیەتی کردنەوەی هەژمارەکەت لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
send_paranoid_instructions: ئەگەر هەژمارەکەت بوونی هەبێت، ئیمەیڵێکت پێدەگات لەگەڵ ڕێنمایی چۆنیەتی کردنەوەی لە چەند خولەکێکدا. تکایە بوخچەی سپامەکەت بپشکنە ئەگەر ئەم ئیمەیڵەت پێنەدرا.
|
||||
unlocked: هەژمارەکەت بە سەرکەوتوویی لە قوفڵ لاچوو. تکایە بچۆ ژوورەوە بۆ بەردەوام بوون.
|
||||
errors:
|
||||
messages:
|
||||
already_confirmed: پێشتر پشتڕاست کرایەوە، تکایە هەوڵ دەدە بچۆ ژوورەوە
|
||||
confirmation_period_expired: پێویستە لە نێو %{period} دا پشتڕاست بکرێتەوە، تکایە داوای دانەیەکی نوێ بکە
|
||||
expired: بەسەرچووە، تکایە داوایەکی نوێ بکە
|
||||
not_found: نەدۆزرایەوە
|
||||
not_locked: دانەخرابوو
|
||||
not_saved:
|
||||
one: '١ هەڵە قەدەغەکرا ئەم %{resource} لە تۆمارکردن:'
|
||||
other: "%{count} هەڵەی قەدەغەکرد کە %{resource} لە پاشکەوتکردن:"
|
||||
|
@ -60,6 +60,21 @@ nn:
|
||||
title: 2FA-gjenopprettingskodane er endra
|
||||
unlock_instructions:
|
||||
subject: 'Mastodon: Instruksjonar for å opne kontoen igjen'
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: Følgende sikkerhetsnøkkel har blitt lagt til i kontoen din
|
||||
subject: 'Mastodon: Ny sikkerhetsnøkkel'
|
||||
title: En ny sikkerhetsnøkkel har blitt lagt til
|
||||
deleted:
|
||||
explanation: Følgende sikkerhetsnøkkel har blitt slettet fra kontoen din
|
||||
subject: 'Mastodon: Sikkerhetsnøkkel slettet'
|
||||
title: En av sikkerhetsnøklene dine har blitt slettet
|
||||
webauthn_disabled:
|
||||
subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av'
|
||||
title: Sikkerhetsnøkler deaktivert
|
||||
webauthn_enabled:
|
||||
subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på'
|
||||
title: Sikkerhetsnøkler aktivert
|
||||
omniauth_callbacks:
|
||||
failure: Du kunne ikkje verte autentisert frå %{kind} av di "%{reason}".
|
||||
success: Autentisert frå %{kind}-konto.
|
||||
|
@ -81,7 +81,7 @@ vi:
|
||||
failure: Không thể xác thực bạn từ %{kind} bởi vì "%{reason}".
|
||||
success: Xác thực thành công từ tài khoản %{kind}.
|
||||
passwords:
|
||||
no_token: Bạn chỉ có thể truy cập trang này khi chuyển tiếp từ email phục hồi mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã sử dụng chính xác URL được cung cấp.
|
||||
no_token: Bạn chỉ có thể truy cập trang này khi nhận được email phục hồi mật khẩu. Nếu vẫn không được, vui lòng chắc chắn rằng bạn đã dùng chính xác URL được cung cấp.
|
||||
send_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này.
|
||||
send_paranoid_instructions: Nếu địa chỉ email của bạn tồn tại trong cơ sở dữ liệu của chúng tôi, bạn sẽ nhận được liên kết khôi phục mật khẩu tại địa chỉ email của bạn sau vài phút. Xin kiểm tra thư mục thư rác nếu như bạn không thấy email này.
|
||||
updated: Mật khẩu của bạn đã được thay đổi thành công. Hiện tại bạn đã đăng nhập.
|
||||
|
@ -60,6 +60,23 @@ zh-HK:
|
||||
title: 雙重認證恢復碼已更改
|
||||
unlock_instructions:
|
||||
subject: 'Mastodon: 解除用戶鎖定'
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: 以下的安全鑰匙已經加進你的帳號
|
||||
subject: 'Mastodon: 新的安全鑰匙'
|
||||
title: 已經加入一個新的安全鑰匙
|
||||
deleted:
|
||||
explanation: 以下的安全鑰匙已經從你的帳號中移除了
|
||||
subject: 'Mastodon: 安全鑰匙已移除'
|
||||
title: 你其中的一個安全鑰匙已經被移除了
|
||||
webauthn_disabled:
|
||||
explanation: 你的帳號的安全鑰匙身份驗證已經停用。你只可以用過去已經配對好的基於時間一次性密碼程式生成的密碼來登錄。
|
||||
subject: 'Mastodon: 安全鑰匙身份驗證已經停用'
|
||||
title: 已啟用安全鑰匙
|
||||
webauthn_enabled:
|
||||
explanation: 安全鑰匙身份驗證已啟用。你的安全鑰匙現在可以用來登錄。
|
||||
subject: 'Mastodon: 安全鑰匙身份驗證已啟用'
|
||||
title: 已啟用安全鑰匙
|
||||
omniauth_callbacks:
|
||||
failure: 無法以 %{kind} 登入你的用戶,原因是︰「%{reason}」。
|
||||
success: 成功以 %{kind} 登入你的用戶。
|
||||
|
@ -116,22 +116,22 @@ eo:
|
||||
title: OAuth-a rajtigo bezonata
|
||||
scopes:
|
||||
admin:read: legu ĉiujn datumojn en la servilo
|
||||
admin:read:accounts: legas senteman informacion de ĉiuj kontoj
|
||||
admin:read:reports: legas konfidencajn informojn de ĉiuj signaloj kaj signalitaj kontoj
|
||||
admin:write: modifu ĉiujn datumojn en la servilo
|
||||
admin:read:accounts: legi konfidencajn informojn de ĉiuj kontoj
|
||||
admin:read:reports: legi konfidencajn informojn de ĉiuj signaloj kaj signalitaj kontoj
|
||||
admin:write: modifi ĉiujn datumojn en la servilo
|
||||
admin:write:accounts: plenumi agojn de kontrolo sur kontoj
|
||||
admin:write:reports: plenumi agojn de kontrolo sur signaloj
|
||||
follow: ŝanĝi rilatojn al aliaj kontoj
|
||||
push: ricevi viajn puŝ-sciigojn
|
||||
read: legi ĉiujn datumojn de via konto
|
||||
read:accounts: vidi la informojn de la konto
|
||||
read:blocks: vidi viajn blokojn
|
||||
read:accounts: vidi la informojn de la kontoj
|
||||
read:blocks: vidi viajn blokadojn
|
||||
read:bookmarks: vidi viajn legosignojn
|
||||
read:favourites: vidi viajn stelumojn
|
||||
read:filters: vidi viajn filtrilojn
|
||||
read:follows: vidi viajn sekvatojn
|
||||
read:lists: vidi viajn listojn
|
||||
read:mutes: vidi viajn silentigojn
|
||||
read:mutes: vidi viajn silentigadojn
|
||||
read:notifications: vidi viajn sciigojn
|
||||
read:reports: vidi viajn signalojn
|
||||
read:search: serĉi vianome
|
||||
@ -140,7 +140,7 @@ eo:
|
||||
write:accounts: ŝanĝi vian profilon
|
||||
write:blocks: bloki kontojn kaj domajnojn
|
||||
write:bookmarks: aldoni mesaĝojn al la legosignoj
|
||||
write:favourites: stelumitaj mesaĝoj
|
||||
write:favourites: stelumi mesaĝojn
|
||||
write:filters: krei filtrilojn
|
||||
write:follows: sekvi homojn
|
||||
write:lists: krei listojn
|
||||
|
@ -1 +1,151 @@
|
||||
--- {}
|
||||
---
|
||||
ku:
|
||||
activerecord:
|
||||
attributes:
|
||||
doorkeeper/application:
|
||||
name: ناوی بەرنامە
|
||||
redirect_uri: URI گۆڕانی شوێن
|
||||
scopes: بوارەکان
|
||||
website: نەرمەکالای ماڵپەڕ
|
||||
errors:
|
||||
models:
|
||||
doorkeeper/application:
|
||||
attributes:
|
||||
redirect_uri:
|
||||
fragment_present: ناتوانێت پارچەیەک لەخۆوە بگری.
|
||||
invalid_uri: پێویستە URI دروست بێت.
|
||||
relative_uri: پێویستە URI ی ڕەها بێت.
|
||||
secured_uri: پێویستە HTTPS/SSL URI بێت.
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
authorize: ڕێگەپێدان
|
||||
cancel: هەڵوەشاندنەوه
|
||||
destroy: لەناوبردن
|
||||
edit: دەستکاری
|
||||
submit: ناردن
|
||||
confirmations:
|
||||
destroy: دڵنیای?
|
||||
edit:
|
||||
title: دەستکاری کردنی بەرنامە
|
||||
form:
|
||||
error: تەحح! بزانە شتێکت لە نێو فۆرمەکە بە هەڵە نەنووسیوە
|
||||
help:
|
||||
native_redirect_uri: بۆ تاقیکردنەوەی ناوخۆیی %{native_redirect_uri} بەکاربەرە،
|
||||
redirect_uri: بەکارهێنانی یەک هێڵ بۆ هەر URI
|
||||
scopes: دۆمەینەکان جیاببکەن بە بۆشاییەکان. بۆ بەکارهێنانی دۆمەینی گریمانەیی چۆڵی بەجێبهێڵە.
|
||||
index:
|
||||
application: نەرمەکال
|
||||
callback_url: Callback نیشانی
|
||||
delete: سڕینەوە
|
||||
empty: هیچ بەرنامەیەکت نیە.
|
||||
name: ناو
|
||||
new: بەرنامەی نوێ
|
||||
scopes: دۆمەینەکان
|
||||
show: نیشاندان
|
||||
title: بەرنامەی تۆ
|
||||
new:
|
||||
title: بەرنامەی نوێ
|
||||
show:
|
||||
actions: کارەکان
|
||||
application_id: کلیلی ڕاژەخواز
|
||||
callback_urls: Callback نیشانەکانی
|
||||
scopes: دۆمەینەکان
|
||||
secret: نهێنی ڕاژەخواز
|
||||
title: 'بەرنامە: %{name}'
|
||||
authorizations:
|
||||
buttons:
|
||||
authorize: ڕێپێدراو
|
||||
deny: نکۆڵی لێبکە
|
||||
error:
|
||||
title: هەڵەیەک ڕوویدا
|
||||
new:
|
||||
able_to: دەتوانێت
|
||||
prompt: بەکارهێنانی %{client_name} داوای چوونە ژوورەوە بۆ هەژمارەکەت دەکات
|
||||
title: ڕێپێدان پێویستە
|
||||
show:
|
||||
title: کۆپیکردنی کۆدی ئەم رێپێدانە و لکاندنی بە بەرنامەکە.
|
||||
authorized_applications:
|
||||
buttons:
|
||||
revoke: بەتاڵی بکە
|
||||
confirmations:
|
||||
revoke: ئایا دڵنیایت?
|
||||
index:
|
||||
application: نەرمەکال
|
||||
created_at: دهسهڵاتپێدراو
|
||||
date_format: "%Y-%m-%d %H:%M:%S"
|
||||
scopes: بوارەکان
|
||||
title: بەرنامە ڕێگەپێدراوەکانت
|
||||
errors:
|
||||
messages:
|
||||
access_denied: خاوەنی سەرچاوە یان سێرڤەری ڕێپێدان داواکاریەکەی ڕەت کردەوە.
|
||||
credential_flow_not_configured: لێشاوی بڕواپێدانی تێپەڕەوشەی خاوەن سەرچاوە شکستی هێنا بەهۆی Doorkeeper.configure.resource_owner_from_credentials شێوەبەندی نەکراو.
|
||||
invalid_client: سەلماندنی کڕیار سەرکەوتوو نەبوو بەهۆی کڕیاری نەناسراوەوە، هیچ ڕەسەنایەتی سەلماندنێکی کلایەنت لەخۆوە نەدەگرێت، یان شێوازی سەلماندنی پەسەند نەکراو.
|
||||
invalid_grant: بەخشین مۆڵەتی دابینکراو نایاساییە، بەسەرچووە، هەڵوەشاندنەوەیە، ناگونجێلەگەڵ ئاراستەی URI بەکارهاتوو لە داواکاری ڕێپێدان، یان دەرچووە بۆ کڕیارێکی تر.
|
||||
invalid_redirect_uri: Uri دووبارە ئاڕاستەکردنەوەکە لەخۆدەگرێت دروست نیە.
|
||||
invalid_request: داواکاریەکە پارامیتەری داواکراوی بزرە، بەهای پارامیتەری پشتگیری نەکراو لەخۆ دەگرێت، یان بە پێچەوانەوە نادروستە.
|
||||
invalid_resource_owner: بڕواپێدانەکانی خاوەنی سەرچاوەی دابینکراو دروست نیە، یان ناتوانرێت خاوەنی سەرچاوە بدۆزرێتەوە
|
||||
invalid_scope: بواری داواکراو نادروستە، نەناسراو، یان تێکچووە.
|
||||
invalid_token:
|
||||
expired: نیشانەی چوونەژورەوە بەسەرچووە
|
||||
revoked: کۆدی دەستپێگەیشتن بەتاڵ بووەتەوە
|
||||
unknown: دەستپێگەیشتن بە کۆدی چوونەژوور باوڕپێنەکراوە
|
||||
resource_owner_authenticator_not_configured: خاوەنی سەرچاوە بەهۆی Doorkeeper.configure.resource_owner_authenticator کۆنفیگنەکردن سەرکەوتوو نەبوو.
|
||||
server_error: ڕاژەکاری ڕێپێدان تووشی مەرجێکی چاوەڕوان نەکراو بوو کە رێگری دەکا لە جێبەجێ کردنی داواکاریەکە.
|
||||
temporarily_unavailable: ڕاژەکاری ڕێپێدان لە ئێستادا ناتوانێت داواکاریەکە چارەسەر بکات لەبەر بارکردنی کاتی یان چاککردنەوەی سێرڤەرەکە.
|
||||
unauthorized_client: ڕاژەخوازەکە دەسەڵاتی ئەوەی نییە ئەم داواکاریە بە بەکارهێنانی ئەم شێوازە بدات.
|
||||
unsupported_grant_type: جۆری بەخشینە مۆڵەتپێدانەکە لەلایەن ڕاژەکاری مۆڵەتەوە پەسەند ناکرێت.
|
||||
unsupported_response_type: ڕاژەکاری ڕێگەپێدان پشتگیری ئەم جۆرە وەڵامە ناکات.
|
||||
flash:
|
||||
applications:
|
||||
create:
|
||||
notice: بەرنامە دروستکرا.
|
||||
destroy:
|
||||
notice: بەرنامە سڕایەوە.
|
||||
update:
|
||||
notice: بەرنامە بەڕۆژکرا.
|
||||
authorized_applications:
|
||||
destroy:
|
||||
notice: بەرنامە هەڵوەشێنڕا.
|
||||
layouts:
|
||||
admin:
|
||||
nav:
|
||||
applications: بەرنامەکان
|
||||
oauth2_provider: OAuth2 Provider
|
||||
application:
|
||||
title: داوای ڕێپێدانی OAuth
|
||||
scopes:
|
||||
admin:read: خوێندنەوەی هەموو داتاکان لەسەر ڕاژەکارەکە
|
||||
admin:read:accounts: زانیاری هەستیاری هەموو هەژمارەکان بخوێنەوە
|
||||
admin:read:reports: زانیاری هەستیاری هەموو گوزارشت و هەژمارە گوزارشتکراوەکان بخوێنەوە
|
||||
admin:write: دەستکاری هەموو داتاکان بکە لەسەر ڕاژەکار
|
||||
admin:write:accounts: ئەنجامدانی کاری میانڕەوی لەسەر هەژمارەکان
|
||||
admin:write:reports: ئەنجامدانی کاری میانڕەوی لەسەر گوزارشتەکان
|
||||
follow: دەستکاریکردنی پەیوەندییەکانی هەژمارەی بەکارهێنەر
|
||||
push: وەرگرتنی ئاگانامەکانی پاڵنان
|
||||
read: هەموو دراوەکانی هەژمارەکەت بخوێنەوە
|
||||
read:accounts: بینینی زانیاری هەژمارەکان
|
||||
read:blocks: بینینی بلۆکەکانت
|
||||
read:bookmarks: نیشانەکان ببینە
|
||||
read:favourites: بینینی دڵخوازەکانت
|
||||
read:filters: بینینی پاڵافتنەکانت
|
||||
read:follows: سەیری شوێنکەوتەکانت بکە
|
||||
read:lists: بینینی لیستەکانت
|
||||
read:mutes: بێدەنگەکانت ببینە
|
||||
read:notifications: ئاگانامەکانت ببینە
|
||||
read:reports: سەیری گوزارشەکانت بکە
|
||||
read:search: گەڕان لە جیاتی تۆ
|
||||
read:statuses: بینینی هەموو بارودۆخەکان
|
||||
write: دەستکاری هەموو داتاکانی هەژمارەکەت بکە
|
||||
write:accounts: دەستکاری پرۆفایلەکەت بکە
|
||||
write:blocks: بلۆک کردنی هەژمارەکەی دۆمەینەکان
|
||||
write:bookmarks: بارەکانی نیشانکەر
|
||||
write:favourites: دۆخی دڵخوازەکان
|
||||
write:filters: پاڵێوەر دروست بکە
|
||||
write:follows: دوای خەڵک بکەوە
|
||||
write:lists: دروستکردنی لیستەکان
|
||||
write:media: پەڕگەی میدیا باربکە
|
||||
write:mutes: بێدەنگکردنی خەڵک و گفتوگۆکان
|
||||
write:notifications: ئاگانامەکانت بسڕیەوە
|
||||
write:reports: گوزارشتکردنی کەسانی تر
|
||||
write:statuses: بڵاوکردنەوەی بارودۆخەکان
|
||||
|
@ -15,7 +15,7 @@ vi:
|
||||
fragment_present: không thể chứa một mảnh.
|
||||
invalid_uri: phải là một URI hợp lệ.
|
||||
relative_uri: phải là một URI tuyệt đối.
|
||||
secured_uri: phải sử dụng giao thức HTTPS / SSL.
|
||||
secured_uri: phải là giao thức HTTPS/SSL.
|
||||
doorkeeper:
|
||||
applications:
|
||||
buttons:
|
||||
@ -31,9 +31,9 @@ vi:
|
||||
form:
|
||||
error: Rất tiếc! Hãy kiểm tra thông tin của bạn bởi vì nó có lỗi
|
||||
help:
|
||||
native_redirect_uri: Sử dụng %{native_redirect_uri} khi kiểm tra nội bộ
|
||||
redirect_uri: Sử dụng mỗi dòng chỉ một URL
|
||||
scopes: Phạm vi riêng biệt với không gian. Để trống để sử dụng phạm vi mặc định.
|
||||
native_redirect_uri: Dùng %{native_redirect_uri} khi kiểm tra nội bộ
|
||||
redirect_uri: Mỗi dòng chỉ một URL
|
||||
scopes: Tách phạm vi ra bằng dấu cách. Bỏ trống để dùng phạm vi mặc định.
|
||||
index:
|
||||
application: Ứng dụng
|
||||
callback_url: Gọi lại URL
|
||||
@ -81,7 +81,7 @@ vi:
|
||||
access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials không thành công do Doorkeeper.configure.resource_owner_from_credentials không được định cấu hình.
|
||||
invalid_client: Xác thực ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ.
|
||||
invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị thu hồi hoặc không khớp với tài khoản đã cung cấp.
|
||||
invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị thu hồi hoặc không khớp với tài khoản đã cấp phép. Hoặc xung đột với ứng dụng khác.
|
||||
invalid_redirect_uri: URL chuyển hướng không hợp lệ.
|
||||
invalid_request: Yêu cầu thiếu tham số bắt buộc, bao gồm giá trị tham số không được hỗ trợ hoặc không đúng định dạng.
|
||||
invalid_resource_owner: Thông tin xác thực chủ sở hữu tài nguyên được cung cấp không hợp lệ hoặc không thể tìm thấy chủ sở hữu tài nguyên
|
||||
@ -119,8 +119,8 @@ vi:
|
||||
admin:read:accounts: đọc thông tin nhạy cảm của tất cả các tài khoản
|
||||
admin:read:reports: đọc thông tin của các báo cáo và các tài khoản bị báo cáo
|
||||
admin:write: sửa đổi tất cả dữ liệu trên máy chủ
|
||||
admin:write:accounts: thực hiện hành động kiểm duyệt trên tài khoản
|
||||
admin:write:reports: thực hiện hành động kiểm duyệt với các báo cáo
|
||||
admin:write:accounts: áp đặt hành động kiểm duyệt trên tài khoản
|
||||
admin:write:reports: áp đặt kiểm duyệt với các báo cáo
|
||||
follow: sửa đổi các mối quan hệ tài khoản
|
||||
push: nhận thông báo đẩy của bạn
|
||||
read: đọc tất cả dữ liệu tài khoản của bạn
|
||||
|
@ -40,3 +40,6 @@ zgh:
|
||||
created_at: ⵜⴻⵜⵜⵓⵙⵓⵔⴳ
|
||||
date_format: "%d-%m-%Y %H:%M:%S"
|
||||
title: ⵜⵉⵙⵏⵙⵉⵡⵉⵏ ⵏⵏⴽ ⵉⵜⵜⵓⵙⵓⵔⴷⵏ
|
||||
scopes:
|
||||
read:notifications: ⵥⵕ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵏⵏⴽ
|
||||
write:notifications: ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵏⵏⴽ
|
||||
|
@ -766,7 +766,7 @@ eo:
|
||||
filters:
|
||||
contexts:
|
||||
account: Profiloj
|
||||
home: Hejma templinio
|
||||
home: Hejmo kaj listoj
|
||||
notifications: Sciigoj
|
||||
public: Publika templinio
|
||||
thread: Konversacioj
|
||||
@ -958,6 +958,7 @@ eo:
|
||||
relationships:
|
||||
activity: Konta aktiveco
|
||||
dormant: Dormanta
|
||||
follow_selected_followers: Forigu selektitajn sekvantojn
|
||||
followers: Sekvantoj
|
||||
following: Sekvatoj
|
||||
invited: Invitita
|
||||
@ -1088,8 +1089,8 @@ eo:
|
||||
other: "%{count} voĉdonoj"
|
||||
vote: Voĉdoni
|
||||
show_more: Malfoldi
|
||||
show_newer: Neniam montru
|
||||
show_older: Montru pli malnova
|
||||
show_newer: Montri pli novajn
|
||||
show_older: Montri pli malnovajn
|
||||
show_thread: Montri la fadenon
|
||||
sign_in_to_participate: Ensaluti por partopreni en la konversacio
|
||||
title: "%{name}: “%{quote}”"
|
||||
@ -1167,7 +1168,7 @@ eo:
|
||||
tips: Konsiloj
|
||||
title: Bonvenon, %{name}!
|
||||
users:
|
||||
follow_limit_reached: Vi ne povas sekvi pli da %{limit} homojn
|
||||
follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j)
|
||||
invalid_email: La retadreso estas nevalida
|
||||
invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo
|
||||
otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email}
|
||||
|
@ -842,6 +842,7 @@ es-AR:
|
||||
request: Solicitá tu archivo historial
|
||||
size: Tamaño
|
||||
blocks: Cuentas que bloqueaste
|
||||
bookmarks: Marcadores
|
||||
csv: CSV
|
||||
domain_blocks: Dominios bloqueados
|
||||
lists: Listas
|
||||
@ -855,7 +856,7 @@ es-AR:
|
||||
filters:
|
||||
contexts:
|
||||
account: Perfiles
|
||||
home: Línea temporal principal
|
||||
home: Inicio y listas
|
||||
notifications: Notificaciones
|
||||
public: Líneas temporales públicas
|
||||
thread: Conversaciones
|
||||
@ -918,6 +919,7 @@ es-AR:
|
||||
success: Tus datos se subieron exitosamente y serán procesados en brevedad
|
||||
types:
|
||||
blocking: Lista de bloqueados
|
||||
bookmarks: Marcadores
|
||||
domain_blocking: Lista de dominios bloqueados
|
||||
following: Lista de seguidos
|
||||
muting: Lista de silenciados
|
||||
@ -1074,6 +1076,7 @@ es-AR:
|
||||
relationships:
|
||||
activity: Actividad de la cuenta
|
||||
dormant: Inactivas
|
||||
follow_selected_followers: Seguir a los seguidores seleccionados
|
||||
followers: Seguidores
|
||||
following: Siguiendo
|
||||
invited: Invitado
|
||||
|
@ -842,6 +842,7 @@ es:
|
||||
request: Solicitar tu archivo
|
||||
size: Tamaño
|
||||
blocks: Personas que has bloqueado
|
||||
bookmarks: Marcadores
|
||||
csv: CSV
|
||||
domain_blocks: Bloqueos de dominios
|
||||
lists: Listas
|
||||
@ -918,6 +919,7 @@ es:
|
||||
success: Sus datos se han cargado correctamente y serán procesados en brevedad
|
||||
types:
|
||||
blocking: Lista de bloqueados
|
||||
bookmarks: Marcadores
|
||||
domain_blocking: Lista de dominios bloqueados
|
||||
following: Lista de seguidos
|
||||
muting: Lista de silenciados
|
||||
@ -1074,6 +1076,7 @@ es:
|
||||
relationships:
|
||||
activity: Actividad de la cuenta
|
||||
dormant: Inactivo
|
||||
follow_selected_followers: Seguir a los seguidores seleccionados
|
||||
followers: Seguidores
|
||||
following: Siguiendo
|
||||
invited: Invitado
|
||||
|
@ -839,6 +839,7 @@ fa:
|
||||
request: درخواست بایگانی دادههایتان
|
||||
size: اندازه
|
||||
blocks: حسابهای مسدودشده
|
||||
bookmarks: نشانکها
|
||||
csv: CSV
|
||||
domain_blocks: دامینهای مسدودشده
|
||||
lists: فهرستها
|
||||
@ -915,6 +916,7 @@ fa:
|
||||
success: دادههای شما با موفقیت بارگذاری شد و به زودی پردازش میشود
|
||||
types:
|
||||
blocking: فهرست مسدودشدهها
|
||||
bookmarks: نشانکها
|
||||
domain_blocking: فهرست دامینهای مسدودشده
|
||||
following: فهرست پیگیریها
|
||||
muting: فهرست بیصداشدهها
|
||||
|
@ -35,7 +35,7 @@ fr:
|
||||
status_count_before: Ayant publié
|
||||
tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles
|
||||
terms: Conditions d’utilisation
|
||||
unavailable_content: Contenu non disponible
|
||||
unavailable_content: Serveurs modérés
|
||||
unavailable_content_description:
|
||||
domain: Serveur
|
||||
reason: Motif
|
||||
@ -568,7 +568,7 @@ fr:
|
||||
desc_html: Noms des domaines que ce serveur a découvert dans le fediverse
|
||||
title: Publier la liste des serveurs découverts
|
||||
preview_sensitive_media:
|
||||
desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible
|
||||
desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles
|
||||
title: Montrer les médias sensibles dans les prévisualisations OpenGraph
|
||||
profile_directory:
|
||||
desc_html: Permettre aux utilisateur·ice·s d’être découvert·e·s
|
||||
@ -842,6 +842,7 @@ fr:
|
||||
request: Demandez vos archives
|
||||
size: Taille
|
||||
blocks: Vous bloquez
|
||||
bookmarks: Signets
|
||||
csv: CSV
|
||||
domain_blocks: Bloqueurs de domaine
|
||||
lists: Listes
|
||||
@ -855,7 +856,7 @@ fr:
|
||||
filters:
|
||||
contexts:
|
||||
account: Profils
|
||||
home: Accueil
|
||||
home: Accueil et listes
|
||||
notifications: Notifications
|
||||
public: Fils publics
|
||||
thread: Conversations
|
||||
@ -918,6 +919,7 @@ fr:
|
||||
success: Vos données ont été importées avec succès et seront traitées en temps et en heure
|
||||
types:
|
||||
blocking: Liste de comptes bloqués
|
||||
bookmarks: Signets
|
||||
domain_blocking: Liste des serveurs bloqués
|
||||
following: Liste d’utilisateur·rice·s suivi·e·s
|
||||
muting: Liste d’utilisateur·rice·s que vous masquez
|
||||
@ -1074,6 +1076,7 @@ fr:
|
||||
relationships:
|
||||
activity: Activité du compte
|
||||
dormant: Dormant
|
||||
follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s
|
||||
followers: Abonné·e·s
|
||||
following: Abonnements
|
||||
invited: Invité·e
|
||||
@ -1209,8 +1212,8 @@ fr:
|
||||
other: "%{count} votes"
|
||||
vote: Voter
|
||||
show_more: Déplier
|
||||
show_newer: Afficher les plus récents
|
||||
show_older: Afficher les plus ancien
|
||||
show_newer: Plus récents
|
||||
show_older: Plus anciens
|
||||
show_thread: Afficher le fil de discussion
|
||||
sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
|
||||
title: '%{name} : "%{quote}"'
|
||||
@ -1362,7 +1365,7 @@ fr:
|
||||
title:
|
||||
disable: Compte gelé
|
||||
none: Avertissement
|
||||
sensitive: Votre média a été marqué comme sensible
|
||||
sensitive: Vos médias ont été marqués comme sensibles
|
||||
silence: Compte limité
|
||||
suspend: Compte suspendu
|
||||
welcome:
|
||||
|
@ -628,7 +628,7 @@ gl:
|
||||
delete: Eliminar o ficheiro subido
|
||||
destroyed_msg: Eliminado correctamente o subido!
|
||||
statuses:
|
||||
back_to_account: Voltar a páxina da conta
|
||||
back_to_account: Volver a páxina da conta
|
||||
batch:
|
||||
delete: Eliminar
|
||||
nsfw_off: Marcar como non sensible
|
||||
@ -737,7 +737,7 @@ gl:
|
||||
saml: SAML
|
||||
register: Rexistro
|
||||
registration_closed: "%{instance} non está a aceptar novas usuarias"
|
||||
resend_confirmation: Voltar a enviar intruccións de confirmación
|
||||
resend_confirmation: Reenviar as intruccións de confirmación
|
||||
reset_password: Restablecer contrasinal
|
||||
security: Seguranza
|
||||
set_new_password: Estabelecer novo contrasinal
|
||||
@ -842,6 +842,7 @@ gl:
|
||||
request: Solicite o ficheiro
|
||||
size: Tamaño
|
||||
blocks: Bloqueos
|
||||
bookmarks: Marcadores
|
||||
csv: CSV
|
||||
domain_blocks: Bloqueos de dominio
|
||||
lists: Listaxes
|
||||
@ -918,6 +919,7 @@ gl:
|
||||
success: Os seus datos foron correctamente subidos e serán procesados ao momento
|
||||
types:
|
||||
blocking: Lista de bloqueo
|
||||
bookmarks: Marcadores
|
||||
domain_blocking: Lista de bloqueo de dominios
|
||||
following: Lista de seguimento
|
||||
muting: Lista de usuarias acaladas
|
||||
@ -978,7 +980,7 @@ gl:
|
||||
warning:
|
||||
backreference_required: Tes que configurar primeiro a nova conta para referenciar hacia esta
|
||||
before: 'Antes de seguir, por favor lé estas notas con atención:'
|
||||
cooldown: Tras a migración existe un período de calma durante o cal non poderás voltar a migrar de novo
|
||||
cooldown: Tras a migración existe un período de calma durante o cal non poderás volver a migrar de novo
|
||||
disabled_account: Tras o cambio a túa conta actual non será totalmente usable, pero terás acceso a exportar os datos e tamén a reactivación.
|
||||
followers: Esta acción moverá todas as túas seguidoras desde a conta actual a nova conta
|
||||
only_redirect_html: De xeito alternativo, podes <a href="%{path}">simplemente por unha redirección no perfil</a>.
|
||||
@ -1074,6 +1076,7 @@ gl:
|
||||
relationships:
|
||||
activity: Actividade da conta
|
||||
dormant: En repouso
|
||||
follow_selected_followers: Seguir seguidoras seleccionadas
|
||||
followers: Seguidoras
|
||||
following: Seguindo
|
||||
invited: Convidado
|
||||
@ -1155,7 +1158,7 @@ gl:
|
||||
aliases: Alcumes da conta
|
||||
appearance: Aparencia
|
||||
authorized_apps: Apps autorizadas
|
||||
back: Voltar a Mastodon
|
||||
back: Volver a Mastodon
|
||||
delete: Eliminación da conta
|
||||
development: Desenvolvemento
|
||||
edit_profile: Editar perfil
|
||||
@ -1223,19 +1226,19 @@ gl:
|
||||
unlisted_long: Visible para calquera, pero non listado en liñas de tempo públicas
|
||||
stream_entries:
|
||||
pinned: Mensaxe fixada
|
||||
reblogged: promovida
|
||||
reblogged: comparteu
|
||||
sensitive_content: Contido sensible
|
||||
tags:
|
||||
does_not_match_previous_name: non concorda co nome anterior
|
||||
terms:
|
||||
body_html: |
|
||||
<h2>Intimidade</h2>
|
||||
<h2>Privacidade</h2>
|
||||
<h3 id="collect">Qué información recollemos?</h3>
|
||||
|
||||
<ul>
|
||||
<li><em>Información básica da conta</em>: Se se rexistra en este servidor, pediráselle un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderá introducir información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran publicamente.</li>
|
||||
<li><em>Publicacións, seguimento e outra información pública</em>: O listado das persoas que segue é un listado público, o mesmo acontece coas súas seguidoras. Cando evía unha mensaxe, a data e hora gárdanse así como o aplicativo que utilizou para enviar a mensaxe. As publicacións poderían conter ficheiros de medios anexos, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destaca unha publicación no seu perfil tamén é pública. As publicacións son enviadas as súas seguidoras, en algúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando elemina unha publicación tamén se envía as súas seguidoras. A acción de voltar a publicar ou marcar como favorita outra publicación sempre é pública.</li>
|
||||
<li><em>Mensaxes directas e só para seguidoras</em>: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas as súas seguidoras e as usuarias que son mencionadas en elas, e as mensaxes directas entréganse só as usuarias mencionadas en elas. En algúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo sincero para limitar o acceso a esas publicacións só as persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as súas seguidoras. Nos axustes pode activar a opción de aprovar ou rexeitar novas seguidoras de xeito manual. <em>Teña en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes.</em>, e as destinatarias poderían facer capturas de pantalla, copiar e voltar a compartir as mensaxes. <em>Non comparta información comprometida en Mastodon.</em></li>
|
||||
<li><em>Publicacións, seguimento e outra información pública</em>: O listado das persoas que segue é un listado público, o mesmo acontece coas súas seguidoras. Cando evía unha mensaxe, a data e hora gárdanse así como o aplicativo que utilizou para enviar a mensaxe. As publicacións poderían conter ficheiros de medios anexos, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destaca unha publicación no seu perfil tamén é pública. As publicacións son enviadas as súas seguidoras, en algúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando elemina unha publicación tamén se envía as súas seguidoras. A acción de volver a publicar ou marcar como favorita outra publicación sempre é pública.</li>
|
||||
<li><em>Mensaxes directas e só para seguidoras</em>: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas as súas seguidoras e as usuarias que son mencionadas en elas, e as mensaxes directas entréganse só as usuarias mencionadas en elas. En algúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo sincero para limitar o acceso a esas publicacións só as persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as súas seguidoras. Nos axustes pode activar a opción de aprovar ou rexeitar novas seguidoras de xeito manual. <em>Teña en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes.</em>, e as destinatarias poderían facer capturas de pantalla, copiar e volver a compartir as mensaxes. <em>Non comparta información comprometida en Mastodon.</em></li>
|
||||
<li><em>IPs e outros metadatos</em>: Cando se conecta, gravamos o IP desde onde se conecta, así como o nome do aplicativo desde onde o fai. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.</li>
|
||||
</ul>
|
||||
|
||||
|
@ -842,6 +842,7 @@ hu:
|
||||
request: Archív kérése
|
||||
size: Méret
|
||||
blocks: Tiltólistádon
|
||||
bookmarks: Könyvjelzők
|
||||
csv: CSV
|
||||
domain_blocks: Tiltott domainjeid
|
||||
lists: Listáid
|
||||
@ -918,6 +919,7 @@ hu:
|
||||
success: Adataidat sikeresen feltöltöttük és feldolgozásukat megkezdtük
|
||||
types:
|
||||
blocking: Letiltottak listája
|
||||
bookmarks: Könyvjelzők
|
||||
domain_blocking: Letiltott domainek listája
|
||||
following: Követettjeid listája
|
||||
muting: Némított felhasználók listája
|
||||
@ -1074,6 +1076,7 @@ hu:
|
||||
relationships:
|
||||
activity: Fiók aktivitás
|
||||
dormant: Elhagyott
|
||||
follow_selected_followers: Kiválasztott követők bekövetése
|
||||
followers: Követők
|
||||
following: Követve
|
||||
invited: Meghívva
|
||||
|
@ -105,6 +105,7 @@ hy:
|
||||
confirm: Հաստատել
|
||||
confirmed: Հաստատված է
|
||||
confirming: Հաստատում
|
||||
delete: Ջնջել տվյալները
|
||||
deleted: Ջնջված է
|
||||
demote: Աստիճանազրկել
|
||||
disable: Անջատել
|
||||
@ -194,13 +195,17 @@ hy:
|
||||
create_account_warning: Ստեղծել զգուշացում
|
||||
create_announcement: Ստեղծել յայտարարութիւն
|
||||
create_email_domain_block: Ստեղծել էլ․ հասցէի դոմէյնի արգելափակում
|
||||
create_ip_block: Ստեղծել IP կանոն
|
||||
destroy_announcement: Ջնջել յայտարարութիւնը
|
||||
destroy_domain_allow: Ջնջել դոմէնի թոյլտուութիւնը
|
||||
destroy_domain_block: Ապաարգելափակել դոմէնը
|
||||
destroy_email_domain_block: Ապաարգելափակել էլ․ հասցէի դոմէնը
|
||||
destroy_ip_block: Ջնջել IP կանոնը
|
||||
destroy_status: Ջնջել գրառումը
|
||||
disable_2fa_user: Անջատել 2FA
|
||||
disable_custom_emoji: Անջատել սեփական էմոջիները
|
||||
disable_user: Ապաակտիւացնել օգտատիրոջը
|
||||
enable_custom_emoji: Միացնել սեփական էմոջիները
|
||||
enable_user: Ակտիւացնել օգտատիրոջը
|
||||
memorialize_account: Յիշել հաշիւը
|
||||
promote_user: Աջակցել օգտատիրոջը
|
||||
@ -214,6 +219,7 @@ hy:
|
||||
unsilence_account: Լսել հաշուին
|
||||
unsuspend_account: Ապակասեցնել հաշիւը
|
||||
update_announcement: Թարմացնել յայտարարութիւնը
|
||||
update_custom_emoji: Թարմացնել սեփական էմոջիները
|
||||
update_status: Թարմացնել գրառումը
|
||||
actions:
|
||||
assigned_to_self_report: "%{name} բողոքել է %{target} իրենց համար"
|
||||
@ -347,6 +353,7 @@ hy:
|
||||
title: Մոդերացիա
|
||||
private_comment: Փակ մեկնաբանութիւն
|
||||
public_comment: Հրապարակային մեկնաբանութիւն
|
||||
title: Դաշնություն
|
||||
total_blocked_by_us: Մենք արգելափակել ենք
|
||||
total_followed_by_them: Նրանք հետեւում են
|
||||
total_followed_by_us: Մենք հետեւում ենք
|
||||
@ -360,6 +367,19 @@ hy:
|
||||
expired: Սպառուած
|
||||
title: Զտիչ
|
||||
title: Հրաւէրներ
|
||||
ip_blocks:
|
||||
add_new: Ստեղծել կանոն
|
||||
delete: Ջնջել
|
||||
expires_in:
|
||||
'1209600': 2 շաբաթ
|
||||
'15778476': 6 ամիս
|
||||
'2629746': 1 ամիս
|
||||
'31556952': 1 տարի
|
||||
'86400': 1 օր
|
||||
'94670856': 3 տարի
|
||||
new:
|
||||
title: Ստեղծել նոր IP կանոն
|
||||
title: IP կանոններ
|
||||
pending_accounts:
|
||||
title: Սպասող հաշիւներ (%{count})
|
||||
relationships:
|
||||
@ -402,6 +422,8 @@ hy:
|
||||
settings:
|
||||
contact_information:
|
||||
username: Կոնտակտի ծածկանուն
|
||||
custom_css:
|
||||
title: Սեփական CSS
|
||||
domain_blocks:
|
||||
all: Բոլորին
|
||||
disabled: Ոչ մէկին
|
||||
@ -468,6 +490,7 @@ hy:
|
||||
new_report:
|
||||
subject: Նոր բողոք %{instance}ի համար(#%{id})
|
||||
appearance:
|
||||
advanced_web_interface: Սյունակավոր ինտերֆեյս
|
||||
animations_and_accessibility: Անիմացիաներ եւ հասանելիութիւն
|
||||
discovery: Բացայայտում
|
||||
localization:
|
||||
@ -523,6 +546,7 @@ hy:
|
||||
date:
|
||||
formats:
|
||||
default: "%b %d, %Y"
|
||||
with_month_name: "%d %B %Y"
|
||||
datetime:
|
||||
distance_in_words:
|
||||
about_x_hours: "%{count}ժ"
|
||||
@ -568,6 +592,7 @@ hy:
|
||||
request: Պահանջել քո արքիւը
|
||||
size: Չափը
|
||||
blocks: Արգելափակել
|
||||
bookmarks: Էջանիշեր
|
||||
csv: CSV
|
||||
domain_blocks: Տիրոյթի արգելափակումներ
|
||||
lists: Ցանկեր
|
||||
@ -580,6 +605,7 @@ hy:
|
||||
account: Պրոֆիլներ
|
||||
home: Տեղական հոսք
|
||||
notifications: Ծանուցումներ
|
||||
public: Հանրային հոսքեր
|
||||
thread: Զրոյցներ
|
||||
edit:
|
||||
title: Խմբագրել զտիչը
|
||||
@ -595,6 +621,7 @@ hy:
|
||||
trending_now: Այժմ արդիական
|
||||
generic:
|
||||
all: Բոլորը
|
||||
changes_saved_msg: Փոփոխութիւնները յաջող պահուած են
|
||||
copy: Պատճենել
|
||||
delete: Ջնջել
|
||||
order_by: Դասաւորել ըստ
|
||||
@ -617,9 +644,12 @@ hy:
|
||||
overwrite: Վերագրել
|
||||
types:
|
||||
blocking: Արգելափակումների ցուցակ
|
||||
bookmarks: Էջանիշեր
|
||||
domain_blocking: Տիրոյթի արգելափակումների ցուցակ
|
||||
upload: Վերբեռնել
|
||||
invites:
|
||||
delete: Ապաակտիւացնել
|
||||
expired: Ժամկետանց
|
||||
expires_in:
|
||||
'1800': 30 րոպե
|
||||
'21600': 6 ժամ
|
||||
@ -629,7 +659,13 @@ hy:
|
||||
'86400': 1 օր
|
||||
expires_in_prompt: Երբեք
|
||||
generate: Գեներացնել հրաւէրի յղում
|
||||
max_uses:
|
||||
one: "%{count} կիրառում"
|
||||
other: "%{count} կիրառում"
|
||||
max_uses_prompt: Սահմանափակում չկայ
|
||||
table:
|
||||
expires_at: Սպառւում է
|
||||
uses: Կիրառում
|
||||
title: Հրաւիրել մարդկանց
|
||||
media_attachments:
|
||||
validations:
|
||||
@ -639,6 +675,7 @@ hy:
|
||||
errors:
|
||||
not_found: չգտնուեց
|
||||
past_migrations: Նախոդ միգրացիաները
|
||||
proceed_with_move: Տեղափոխել հետեւորդներին
|
||||
warning:
|
||||
followers: Այս քայլով քո բոլոր հետեւորդներին այս հաշուից կը տեղափոխես դէպի նորը
|
||||
moderation:
|
||||
@ -657,12 +694,16 @@ hy:
|
||||
number:
|
||||
human:
|
||||
decimal_units:
|
||||
format: "%n %u"
|
||||
units:
|
||||
billion: Մլր
|
||||
million: Մլն
|
||||
quadrillion: Քլր
|
||||
thousand: Հազ
|
||||
trillion: Տրլ
|
||||
otp_authentication:
|
||||
enable: Միացնել
|
||||
setup: Կարգաւորել
|
||||
pagination:
|
||||
newer: Ավելի նոր
|
||||
next: Հաջորդ
|
||||
@ -680,9 +721,14 @@ hy:
|
||||
last_active: Վերջին ակտիւութիւնը
|
||||
most_recent: Վերջին
|
||||
moved: Տեղափոխուած
|
||||
mutual: Փոխադարձ
|
||||
primary: Հիմնական
|
||||
relationship: Կապ
|
||||
remove_selected_domains: Հեռացնել բոլոր հետեւորդներին նշուած դոմեյններից
|
||||
remove_selected_followers: Հեռացնել նշուած հետեւորդներին
|
||||
status: Հաշուի կարգավիճակ
|
||||
sessions:
|
||||
activity: Վերջին թութը
|
||||
browser: Դիտարկիչ
|
||||
browsers:
|
||||
alipay: Alipay
|
||||
@ -719,14 +765,31 @@ hy:
|
||||
revoke: Չեղարկել
|
||||
settings:
|
||||
account: Հաշիվ
|
||||
appearance: Տեսք
|
||||
delete: Հաշուի ջնջում
|
||||
development: Ծրագրավորում
|
||||
edit_profile: Խմբագրել պրոֆիլը
|
||||
export: Տվյալների արտահանում
|
||||
import: Ներմուծել
|
||||
import_and_export: Ներմուծել և արտահանել
|
||||
migrate: Հաշուի տեղափոխում
|
||||
notifications: Ծանուցումներ
|
||||
preferences: Կարգավորումներ
|
||||
profile: Հաշիւ
|
||||
relationships: Հետեւումներ և հետեւորդներ
|
||||
two_factor_authentication: Երկքայլ նոյնականացում
|
||||
webauthn_authentication: Անվտանգութեան բանալիներ
|
||||
statuses:
|
||||
attached:
|
||||
audio:
|
||||
one: "%{count} ձայնագրութիւն"
|
||||
other: "%{count} ձայնագրութիւն"
|
||||
image:
|
||||
one: "%{count} նկար"
|
||||
other: "%{count} նկար"
|
||||
language_detection: Ինքնուրոյն ճանաչել լեզուն
|
||||
open_in_web: Բացել վէբում
|
||||
over_character_limit: "%{max} նիշի սահմանը գերազանցուած է"
|
||||
poll:
|
||||
total_people:
|
||||
one: "%{count} մարդ"
|
||||
@ -736,10 +799,16 @@ hy:
|
||||
other: "%{count} ձայներ"
|
||||
vote: Քուէարկել
|
||||
show_more: Աւելին
|
||||
show_thread: Բացել շղթան
|
||||
sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար
|
||||
title: '%{name}: "%{quote}"'
|
||||
visibilities:
|
||||
private: Միայն հետեւողներին
|
||||
private_long: Հասանելի միայն հետեւորդներին
|
||||
public: Հրապարակային
|
||||
public_long: Տեսանելի բոլորին
|
||||
unlisted: Ծածուկ
|
||||
unlisted_long: Տեսանելի է բոլորին, բայց չի յայտնւում հանրային հոսքերում
|
||||
stream_entries:
|
||||
pinned: Ամրացուած թութ
|
||||
reblogged: տարածուած
|
||||
@ -830,6 +899,7 @@ hy:
|
||||
|
||||
<p><strong>Ոչ պաշտօնական, ոչ իրաւական թարգմանութիւն</strong></p>
|
||||
themes:
|
||||
contrast: Mastodon (բարձր կոնտրաստով)
|
||||
default: Mastodon (Մուգ)
|
||||
mastodon-light: Mastodon (Լուսավոր)
|
||||
time:
|
||||
@ -837,13 +907,28 @@ hy:
|
||||
default: "%b %d, %Y, %H:%M"
|
||||
month: "%b %Y"
|
||||
two_factor_authentication:
|
||||
add: Ավելացնել
|
||||
disable: Անջատել
|
||||
disabled_success: Երկքայլ նոյնականացումը հաջողութեամբ անջուած է
|
||||
edit: Խմբագրել
|
||||
enabled: Երկքայլ նոյնականացումը միացուած է
|
||||
enabled_success: Երկքայլ նոյնականացումը հաջողութեամբ միացուած է
|
||||
generate_recovery_codes: Ստեղծել վերականգնման կոդեր
|
||||
lost_recovery_codes: Վերականգնման կոդերը հնարաւորութիւն են տալիս մուտք գործել հաշիւ՝ հեռախօսի կորստի դէպքում։ Եթէ կորցրել ես վերականգնման կոդերը, այստեղ կարող ես ստեղծել նորերը։ Նախկին վերականգման կոդերը կչեղարկվեն։
|
||||
methods: Երկքայլ նոյնականացում տարբերակներ
|
||||
otp: Նոյնականացման հավելված
|
||||
recovery_codes: Վերականգնման կոդեր
|
||||
recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են
|
||||
user_mailer:
|
||||
warning:
|
||||
title:
|
||||
none: Զգուշացում
|
||||
welcome:
|
||||
final_action: Սկսել թթել
|
||||
subject: Բարի գալուստ Մաստոդոն
|
||||
tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։
|
||||
tip_following: Դու հետեւում էս քո հանգոյցի ադմին(ներ)ին լռելայն։ Այլ հետաքրքիր անձանց գտնելու համար՝ թերթիր տեղական և դաշնային հոսքերը։
|
||||
tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի օգտատերի գրառումները։ Նրանք քո հանգոյցի հարևաններն են։
|
||||
tips: Հուշումներ
|
||||
users:
|
||||
blocked_email_provider: Սույն էլփոստի տրամադրողը արգելված է
|
||||
@ -855,3 +940,5 @@ hy:
|
||||
verification:
|
||||
explanation_html: Պիտակների յղումների հեղինակութիւնը կարելի է վաւերացնել։ Անհրաժեշտ է որ յղուած կայքը պարունակի յետադարձ յղում ձեր մաստադոնի էջին, որը <strong>պէտք է</strong> ունենայ <code>rel="me"</code> նիշքը։ Յղման բովանդակութիւնը կարևոր չէ։ Օրինակ՝
|
||||
verification: Ստուգում
|
||||
webauthn_credentials:
|
||||
delete: Ջնջել
|
||||
|
@ -834,6 +834,7 @@ id:
|
||||
request: Meminta arsip Anda
|
||||
size: Ukuran
|
||||
blocks: Anda blokir
|
||||
bookmarks: Markah
|
||||
csv: CSV
|
||||
domain_blocks: Blokir domain
|
||||
lists: Daftar
|
||||
@ -909,6 +910,7 @@ id:
|
||||
success: Data anda berhasil diupload dan akan diproses sesegera mungkin
|
||||
types:
|
||||
blocking: Daftar diblokir
|
||||
bookmarks: Markah
|
||||
domain_blocking: Daftar blokir domain
|
||||
following: Daftar diikuti
|
||||
muting: Daftar didiamkan
|
||||
@ -1062,6 +1064,7 @@ id:
|
||||
relationships:
|
||||
activity: Aktivitas akun
|
||||
dormant: Terbengkalai
|
||||
follow_selected_followers: Ikuti pengikut yang dipilih
|
||||
followers: Pengikut
|
||||
following: Mengikuti
|
||||
invited: Diundang
|
||||
|
@ -1074,6 +1074,7 @@ is:
|
||||
relationships:
|
||||
activity: Virkni aðgangs
|
||||
dormant: Sofandi
|
||||
follow_selected_followers: Fylgjast með völdum fylgjendum
|
||||
followers: Fylgjendur
|
||||
following: Fylgist með
|
||||
invited: Boðið
|
||||
|
@ -844,6 +844,7 @@ it:
|
||||
request: Chiedi il tuo archivio
|
||||
size: Dimensioni
|
||||
blocks: Stai bloccando
|
||||
bookmarks: Segnalibri
|
||||
csv: CSV
|
||||
domain_blocks: Blocchi di dominio
|
||||
lists: Liste
|
||||
@ -920,6 +921,7 @@ it:
|
||||
success: Le tue impostazioni sono state importate correttamente e verranno applicate in breve tempo
|
||||
types:
|
||||
blocking: Lista dei bloccati
|
||||
bookmarks: Segnalibri
|
||||
domain_blocking: Lista dei domini bloccati
|
||||
following: Lista dei seguiti
|
||||
muting: Lista dei silenziati
|
||||
@ -1076,6 +1078,7 @@ it:
|
||||
relationships:
|
||||
activity: Attività dell'account
|
||||
dormant: Dormiente
|
||||
follow_selected_followers: Segui i seguaci selezionati
|
||||
followers: Seguaci
|
||||
following: Seguiti
|
||||
invited: Invitato
|
||||
|
@ -183,7 +183,7 @@ ja:
|
||||
search_same_email_domain: 同じドメインのメールアドレスを使用しているユーザー
|
||||
search_same_ip: 同じ IP のユーザーを検索
|
||||
sensitive: 閲覧注意
|
||||
sensitized: 閲覧注意にする
|
||||
sensitized: 閲覧注意済み
|
||||
shared_inbox_url: Shared inbox URL
|
||||
show:
|
||||
created_reports: このアカウントで作られた通報
|
||||
@ -198,7 +198,7 @@ ja:
|
||||
time_in_queue: "%{time} 待ち"
|
||||
title: アカウント
|
||||
unconfirmed_email: 確認待ちのメールアドレス
|
||||
undo_sensitized: 機密情報から戻す
|
||||
undo_sensitized: 閲覧注意から戻す
|
||||
undo_silenced: サイレンスから戻す
|
||||
undo_suspension: 停止から戻す
|
||||
unsubscribe: 購読の解除
|
||||
@ -238,9 +238,11 @@ ja:
|
||||
reopen_report: 通報を再度開く
|
||||
reset_password_user: パスワードをリセット
|
||||
resolve_report: 通報を解決済みにする
|
||||
sensitive_account: アカウントのメディアを閲覧注意にマーク
|
||||
silence_account: アカウントをサイレンス
|
||||
suspend_account: アカウントを停止
|
||||
unassigned_report: 通報の担当を解除
|
||||
unsensitive_account: アカウントのメディアの閲覧注意マークを解除
|
||||
unsilence_account: アカウントのサイレンスを解除
|
||||
unsuspend_account: アカウントの停止を解除
|
||||
update_announcement: お知らせを更新
|
||||
@ -276,9 +278,11 @@ ja:
|
||||
reopen_report: "%{name} さんが通報 %{target} を再び開きました"
|
||||
reset_password_user: "%{name} さんが %{target} さんのパスワードをリセットしました"
|
||||
resolve_report: "%{name} さんが通報 %{target} を解決済みにしました"
|
||||
sensitive_account: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました"
|
||||
silence_account: "%{name} さんが %{target} さんをサイレンスにしました"
|
||||
suspend_account: "%{name} さんが %{target} さんを停止しました"
|
||||
unassigned_report: "%{name} さんが通報 %{target} の担当を外しました"
|
||||
unsensitive_account: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました"
|
||||
unsilence_account: "%{name} さんが %{target} さんのサイレンスを解除しました"
|
||||
unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
|
||||
update_announcement: "%{name} さんがお知らせ %{target} を更新しました"
|
||||
@ -825,6 +829,7 @@ ja:
|
||||
request: アーカイブをリクエスト
|
||||
size: 容量
|
||||
blocks: ブロック
|
||||
bookmarks: ブックマーク
|
||||
csv: CSV
|
||||
domain_blocks: 非表示にしたドメイン
|
||||
lists: リスト
|
||||
@ -900,6 +905,7 @@ ja:
|
||||
success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください
|
||||
types:
|
||||
blocking: ブロックしたアカウントリスト
|
||||
bookmarks: ブックマーク
|
||||
domain_blocking: 非表示にしたドメインリスト
|
||||
following: フォロー中のアカウントリスト
|
||||
muting: ミュートしたアカウントリスト
|
||||
@ -1020,6 +1026,7 @@ ja:
|
||||
otp_authentication:
|
||||
code_hint: 続行するには認証アプリで表示されたコードを入力してください
|
||||
description_html: "<strong>二要素認証</strong>を有効にすると、ログイン時に認証アプリからコードを入力する必要があります。"
|
||||
enable: 有効化
|
||||
instructions_html: "<strong>Google Authenticatorか、もしくはほかのTOTPアプリでこのQRコードをスキャンしてください。</strong>これ以降、ログインするときはそのアプリで生成されるコードが必要になります。"
|
||||
manual_instructions: 'QRコードがスキャンできず、手動での登録を希望の場合はこのシークレットコードを利用してください。:'
|
||||
setup: セットアップ
|
||||
@ -1052,6 +1059,7 @@ ja:
|
||||
relationships:
|
||||
activity: 活動
|
||||
dormant: 非アクティブ
|
||||
follow_selected_followers: 選択したフォロワーをフォロー
|
||||
followers: フォロワー
|
||||
following: フォロー中
|
||||
invited: 招待済み
|
||||
@ -1293,7 +1301,7 @@ ja:
|
||||
two_factor_authentication:
|
||||
add: 追加
|
||||
disable: 無効化
|
||||
disabled_success: 二要素認証が更新されました
|
||||
disabled_success: 二段階認証が無効になりました
|
||||
edit: 編集
|
||||
enabled: 二段階認証は有効になっています
|
||||
enabled_success: 二段階認証が有効になりました
|
||||
@ -1319,7 +1327,7 @@ ja:
|
||||
warning:
|
||||
explanation:
|
||||
disable: あなたのアカウントはログインが禁止され使用できなくなりました。しかしアカウントのデータはそのまま残っています。
|
||||
sensitive: アップロードされたメディアファイルとリンクされたメディアは閲覧注意として扱われます。
|
||||
sensitive: あなたのアップロードしたメディアファイルとリンク先のメディアは、閲覧注意として扱われます。
|
||||
silence: あなたのアカウントは制限されましたがそのまま使用できます。ただし既にフォローしている人はあなたのトゥートを見ることができますが、様々な公開タイムラインには表示されない場合があります。また他のユーザーは今後も手動であなたをフォローすることができます。
|
||||
suspend: あなたのアカウントは使用できなくなりプロフィールやその他データにアクセスできなくなりました。アカウントが完全に削除されるまではログインしてデータのエクスポートをリクエストできます。証拠隠滅を防ぐため一部のデータは削除されず残ります。
|
||||
get_in_touch: このメールに返信することで %{instance} のスタッフと連絡を取ることができます。
|
||||
@ -1328,13 +1336,13 @@ ja:
|
||||
subject:
|
||||
disable: あなたのアカウント %{acct} は凍結されました
|
||||
none: "%{acct} に対する警告"
|
||||
sensitive: あなたのアカウント %{acct} が投稿したメディアは閲覧注意にマークされました
|
||||
sensitive: あなたのアカウント %{acct} の投稿メディアは閲覧注意とマークされました
|
||||
silence: あなたのアカウント %{acct} はサイレンスにされました
|
||||
suspend: あなたのアカウント %{acct} は停止されました
|
||||
title:
|
||||
disable: アカウントが凍結されました
|
||||
none: 警告
|
||||
sensitive: あなたのメディアが閲覧注意に指定されました
|
||||
sensitive: あなたのメディアが閲覧注意とマークされました
|
||||
silence: アカウントがサイレンスにされました
|
||||
suspend: アカウントが停止されました
|
||||
welcome:
|
||||
|
@ -836,6 +836,7 @@ ko:
|
||||
request: 아카이브 요청하기
|
||||
size: 크기
|
||||
blocks: 차단
|
||||
bookmarks: 보관함
|
||||
csv: CSV
|
||||
domain_blocks: 도메인 차단
|
||||
lists: 리스트
|
||||
@ -911,6 +912,7 @@ ko:
|
||||
success: 파일이 정상적으로 업로드 되었으며, 현재 처리 중입니다
|
||||
types:
|
||||
blocking: 차단한 계정 목록
|
||||
bookmarks: 보관함
|
||||
domain_blocking: 도메인 차단 목록
|
||||
following: 팔로우 중인 계정 목록
|
||||
muting: 뮤트 중인 계정 목록
|
||||
@ -1064,6 +1066,7 @@ ko:
|
||||
relationships:
|
||||
activity: 계정 활동
|
||||
dormant: 휴면
|
||||
follow_selected_followers: 선택한 팔로워들을 팔로우
|
||||
followers: 팔로워
|
||||
following: 팔로잉
|
||||
invited: 초대됨
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -171,6 +171,8 @@ oc:
|
||||
user: Uitlizaire
|
||||
search: Cercar
|
||||
search_same_ip: Autres utilizaires amb la meteissa IP
|
||||
sensitive: Sensible
|
||||
sensitized: marcar coma sensible
|
||||
shared_inbox_url: URL de recepcion partejada
|
||||
show:
|
||||
created_reports: Senhalaments creats
|
||||
@ -183,6 +185,7 @@ oc:
|
||||
time_in_queue: En espèra a la fila %{time}
|
||||
title: Comptes
|
||||
unconfirmed_email: Adreça pas confirmada
|
||||
undo_sensitized: Desmarcar coma sensible
|
||||
undo_silenced: Levar lo silenci
|
||||
undo_suspension: Levar la suspension
|
||||
unsubscribe: Se desabonar
|
||||
@ -198,6 +201,7 @@ oc:
|
||||
create_account_warning: Crear un avertiment
|
||||
create_announcement: Crear una anóncia
|
||||
create_custom_emoji: Crear un emoji personalizat
|
||||
create_ip_block: Crear una règla IP
|
||||
demote_user: Retrogradar l’utilizaire
|
||||
destroy_announcement: Suprimir l’anóncia
|
||||
destroy_custom_emoji: Suprimir l’emoji personalizat
|
||||
@ -419,6 +423,8 @@ oc:
|
||||
title: Filtre
|
||||
title: Convits
|
||||
ip_blocks:
|
||||
add_new: Crear una règla
|
||||
delete: Suprimir
|
||||
expires_in:
|
||||
'1209600': 2 setmanas
|
||||
'15778476': 6 meses
|
||||
@ -426,6 +432,9 @@ oc:
|
||||
'31556952': 1 an
|
||||
'86400': 1 jorn
|
||||
'94670856': 3 ans
|
||||
new:
|
||||
title: Crear una règlas IP novèla
|
||||
title: Règlas IP
|
||||
pending_accounts:
|
||||
title: Comptes en espèra (%{count})
|
||||
relationships:
|
||||
@ -700,7 +709,8 @@ oc:
|
||||
prompt: Confirmatz lo senhal per dire de contunhar
|
||||
date:
|
||||
formats:
|
||||
default: "%d %B de %Y"
|
||||
default: "%e %B de %Y"
|
||||
with_month_name: "%e %B de %Y"
|
||||
datetime:
|
||||
distance_in_words:
|
||||
about_x_hours: "%{count} h"
|
||||
@ -1207,8 +1217,8 @@ oc:
|
||||
mastodon-light: Mastodon (Clar)
|
||||
time:
|
||||
formats:
|
||||
default: Lo %d %b de %Y a %Ho%M
|
||||
month: "%b de %Y"
|
||||
default: Lo %e %B de %Y a %Ho%M
|
||||
month: "%B de %Y"
|
||||
two_factor_authentication:
|
||||
disable: Desactivar
|
||||
enabled: Autentificacion en dos temps activada
|
||||
|
@ -196,6 +196,8 @@ pl:
|
||||
search: Szukaj
|
||||
search_same_email_domain: Inni użytkownicy z e-mail w tej domenie
|
||||
search_same_ip: Inni użytkownicy z tym samym IP
|
||||
sensitive: Wrażliwe
|
||||
sensitized: oznaczono jako wrażliwe
|
||||
shared_inbox_url: Adres udostępnianej skrzynki
|
||||
show:
|
||||
created_reports: Zgłoszenia tego użytkownika
|
||||
@ -210,6 +212,7 @@ pl:
|
||||
time_in_queue: Czekanie w kolejce %{time}
|
||||
title: Konta
|
||||
unconfirmed_email: Niepotwierdzony adres e-mail
|
||||
undo_sensitized: Cofnij oznaczenie
|
||||
undo_silenced: Cofnij wyciszenie
|
||||
undo_suspension: Cofnij zawieszenie
|
||||
unsilenced_msg: Pomyślnie zwolniono z ograniczeń konto %{username}
|
||||
@ -251,9 +254,11 @@ pl:
|
||||
reopen_report: Otwórz zgłoszenie ponownie
|
||||
reset_password_user: Resetuj hasło
|
||||
resolve_report: Rozwiąż zgłoszenie
|
||||
sensitive_account: Oznacz zawartość multimedialną swojego konta jako wrażliwą
|
||||
silence_account: Wycisz konto
|
||||
suspend_account: Zawieś konto
|
||||
unassigned_report: Cofnij przypisanie zgłoszenia
|
||||
unsensitive_account: Cofnij oznaczenie zawartości multimedialnej swojego konta jako wrażliwą
|
||||
unsilence_account: Cofnij wyciszenie konta
|
||||
unsuspend_account: Cofnij zawieszenie konta
|
||||
update_announcement: Aktualizuj ogłoszenie
|
||||
@ -289,9 +294,11 @@ pl:
|
||||
reopen_report: "%{name} otworzył(a) ponownie zgłoszenie %{target}"
|
||||
reset_password_user: "%{name} przywrócił(a) hasło użytkownikowi %{target}"
|
||||
resolve_report: "%{name} rozwiązał(a) zgłoszenie %{target}"
|
||||
sensitive_account: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą"
|
||||
silence_account: "%{name} wyciszył(a) konto %{target}"
|
||||
suspend_account: "%{name} zawiesił(a) konto %{target}"
|
||||
unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
|
||||
unsensitive_account: "%{name} cofnął(-ęła) oznaczenie zawartości multimedialnej %{target} jako wrażliwą"
|
||||
unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
|
||||
unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
|
||||
update_announcement: "%{name} zaktualizował(-a) ogłoszenie %{target}"
|
||||
@ -851,6 +858,7 @@ pl:
|
||||
request: Uzyskaj archiwum
|
||||
size: Rozmiar
|
||||
blocks: Zablokowani
|
||||
bookmarks: Zakładki
|
||||
csv: CSV
|
||||
domain_blocks: Blokady domen
|
||||
lists: Listy
|
||||
@ -929,6 +937,7 @@ pl:
|
||||
success: Twoje dane zostały załadowane i zostaną niebawem przetworzone
|
||||
types:
|
||||
blocking: Lista blokowanych
|
||||
bookmarks: Zakładki
|
||||
domain_blocking: Lista zablokowanych domen
|
||||
following: Lista śledzonych
|
||||
muting: Lista wyciszonych
|
||||
@ -1091,6 +1100,7 @@ pl:
|
||||
relationships:
|
||||
activity: Aktywność konta
|
||||
dormant: Uśpione
|
||||
follow_selected_followers: Zacznij śledzić wybranych śledzących
|
||||
followers: Śledzący
|
||||
following: Śledzeni
|
||||
invited: Zaproszeni
|
||||
@ -1238,6 +1248,8 @@ pl:
|
||||
other: "%{count} głosy"
|
||||
vote: Głosuj
|
||||
show_more: Pokaż więcej
|
||||
show_newer: Pokaż nowsze
|
||||
show_older: Pokaż starsze
|
||||
show_thread: Pokaż wątek
|
||||
sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji
|
||||
title: '%{name}: "%{quote}"'
|
||||
@ -1374,6 +1386,7 @@ pl:
|
||||
warning:
|
||||
explanation:
|
||||
disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane.
|
||||
sensitive: Wysyłane przez Ciebie pliki multimedialne i media z odnośników będą traktowane jako wrażliwe.
|
||||
silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić.
|
||||
suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię.
|
||||
get_in_touch: Możesz odpowiedzieć na ten e-mail aby pozostać w kontakcie z prowadzącymi %{instance}.
|
||||
@ -1382,11 +1395,13 @@ pl:
|
||||
subject:
|
||||
disable: Twoje konto %{acct} zostało wyłączone
|
||||
none: Ostrzeżenie dla %{acct}
|
||||
sensitive: Zawartość multimedialna publikowana przez Twoje konto %{acct} została oznaczona jako wrażliwa
|
||||
silence: Twoje konto %{acct} zostało ograniczone
|
||||
suspend: Twoje konto %{acct} zostało zawieszone
|
||||
title:
|
||||
disable: Konto wyłączone
|
||||
none: Ostrzeżenie
|
||||
sensitive: Twoja zawartość multimedialna została oznaczona jako wrażliwa
|
||||
silence: Konto ograniczone
|
||||
suspend: Konto zawieszone
|
||||
welcome:
|
||||
|
@ -188,6 +188,8 @@ pt-BR:
|
||||
search: Pesquisar
|
||||
search_same_email_domain: Outros usuários com o mesmo domínio de e-mail
|
||||
search_same_ip: Outros usuários com o mesmo IP
|
||||
sensitive: Sensíveis
|
||||
sensitized: marcadas como sensíveis
|
||||
shared_inbox_url: Link da caixa de entrada compartilhada
|
||||
show:
|
||||
created_reports: Denúncias desta conta
|
||||
@ -202,6 +204,7 @@ pt-BR:
|
||||
time_in_queue: Esperando na fila por %{time}
|
||||
title: Contas
|
||||
unconfirmed_email: E-mail não confirmado
|
||||
undo_sensitized: Desfazer sensível
|
||||
undo_silenced: Desfazer silêncio
|
||||
undo_suspension: Desbanir
|
||||
unsilenced_msg: Removidas com sucesso as limitações da conta de %{username}
|
||||
@ -243,9 +246,11 @@ pt-BR:
|
||||
reopen_report: Reabrir Relatório
|
||||
reset_password_user: Redefinir a senha
|
||||
resolve_report: Resolver Relatório
|
||||
sensitive_account: Marcar a mídia na sua conta como sensível
|
||||
silence_account: Silenciar conta
|
||||
suspend_account: Suspender Conta
|
||||
unassigned_report: Remover relatório
|
||||
unsensitive_account: Desmarcar a mídia na sua conta como sensível
|
||||
unsilence_account: Desfazer silenciar conta
|
||||
unsuspend_account: Remover suspensão de conta
|
||||
update_announcement: Editar anúncio
|
||||
@ -281,9 +286,11 @@ pt-BR:
|
||||
reopen_report: "%{name} reabriu a denúncia %{target}"
|
||||
reset_password_user: "%{name} redefiniu a senha do usuário %{target}"
|
||||
resolve_report: "%{name} resolveu a denúncia %{target}"
|
||||
sensitive_account: "%{name} marcou a mídia de %{target} como sensível"
|
||||
silence_account: "%{name} silenciou a conta de %{target}"
|
||||
suspend_account: "%{name} baniu a conta de %{target}"
|
||||
unassigned_report: "%{name} largou a denúncia %{target}"
|
||||
unsensitive_account: "%{name} desmarcou a mídia de %{target} como sensível"
|
||||
unsilence_account: "%{name} desativou o silêncio de %{target}"
|
||||
unsuspend_account: "%{name} removeu a suspensão da conta de %{target}"
|
||||
update_announcement: "%{name} atualizou o anúncio %{target}"
|
||||
@ -1067,6 +1074,7 @@ pt-BR:
|
||||
relationships:
|
||||
activity: Atividade da conta
|
||||
dormant: Inativo
|
||||
follow_selected_followers: Seguir os seguidores selecionados
|
||||
followers: Seguidores
|
||||
following: Seguindo
|
||||
invited: Convidado
|
||||
@ -1202,6 +1210,8 @@ pt-BR:
|
||||
other: "%{count} votos"
|
||||
vote: Votar
|
||||
show_more: Mostrar mais
|
||||
show_newer: Mostrar mais recentes
|
||||
show_older: Mostrar mais antigos
|
||||
show_thread: Mostrar conversa
|
||||
sign_in_to_participate: Entre para participar dessa conversa
|
||||
title: '%{name}: "%{quote}"'
|
||||
@ -1338,6 +1348,7 @@ pt-BR:
|
||||
warning:
|
||||
explanation:
|
||||
disable: Enquanto sua conta está congelada, seus dados de conta permanecem intactos, mas você não pode realizar nenhuma ação até que esteja destrancada.
|
||||
sensitive: Seus arquivos de mídia carregados e mídias vinculadas serão tratados como sensíveis.
|
||||
silence: Enquanto sua conta está silenciada, somente pessoas que já estão seguindo você poderão ver seus toots nessa instância, e você pode ser excluído de várias listas públicas. No entanto, outros ainda podem te seguir manualmente.
|
||||
suspend: Sua conta foi banida e todos os seus toots e mídias foram irreversivelmente excluídos desta instância e das instâncias dos seus seguidores.
|
||||
get_in_touch: Você pode responder a este e-mail para entrar em contato com a equipe de %{instance}.
|
||||
@ -1346,11 +1357,13 @@ pt-BR:
|
||||
subject:
|
||||
disable: Sua conta %{acct} foi bloqueada
|
||||
none: Aviso para %{acct}
|
||||
sensitive: Sua conta %{acct} de postagem de mídia foi marcada como sensível
|
||||
silence: Sua conta %{acct} foi silenciada
|
||||
suspend: Sua conta %{acct} foi banida
|
||||
title:
|
||||
disable: Conta bloqueada
|
||||
none: Aviso
|
||||
sensitive: Sua mídia foi marcada como sensível
|
||||
silence: Conta silenciada
|
||||
suspend: Conta banida
|
||||
welcome:
|
||||
|
@ -842,6 +842,7 @@ pt-PT:
|
||||
request: Pede o teu arquivo
|
||||
size: Tamanho
|
||||
blocks: Bloqueaste
|
||||
bookmarks: Itens Salvos
|
||||
csv: CSV
|
||||
domain_blocks: Bloqueios de domínio
|
||||
lists: Listas
|
||||
@ -918,6 +919,7 @@ pt-PT:
|
||||
success: Os teus dados foram enviados com sucesso e serão processados em breve
|
||||
types:
|
||||
blocking: Lista de bloqueio
|
||||
bookmarks: Itens salvos
|
||||
domain_blocking: Lista de domínios bloqueados
|
||||
following: Lista de pessoas que estás a seguir
|
||||
muting: Lista de utilizadores silenciados
|
||||
@ -1074,6 +1076,7 @@ pt-PT:
|
||||
relationships:
|
||||
activity: Atividade da conta
|
||||
dormant: Inativo
|
||||
follow_selected_followers: Seguir seguidores selecionados
|
||||
followers: Seguidores
|
||||
following: A seguir
|
||||
invited: Convidado
|
||||
|
@ -863,6 +863,7 @@ ru:
|
||||
request: Запросить ваш архив
|
||||
size: Размер
|
||||
blocks: Список блокировки
|
||||
bookmarks: Закладки
|
||||
csv: CSV
|
||||
domain_blocks: Доменные блокировки
|
||||
lists: Списки
|
||||
@ -941,6 +942,7 @@ ru:
|
||||
success: Ваши данные были успешно загружены и будут обработаны с должной скоростью
|
||||
types:
|
||||
blocking: Список блокировки
|
||||
bookmarks: Закладки
|
||||
domain_blocking: Список доменных блокировок
|
||||
following: Подписки
|
||||
muting: Список глушения
|
||||
@ -1103,6 +1105,7 @@ ru:
|
||||
relationships:
|
||||
activity: Активность учётной записи
|
||||
dormant: Заброшенная
|
||||
follow_selected_followers: Подписаться на выбранных подписчиков
|
||||
followers: Подписчики
|
||||
following: Подписки
|
||||
invited: Приглашённые
|
||||
|
@ -29,7 +29,7 @@ eo:
|
||||
phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo
|
||||
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
|
||||
setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj)
|
||||
setting_default_sensitive: Sentema komunikilo estas kaŝita defaŭlte kaj povas esti rivelita per alklako
|
||||
setting_default_sensitive: Tiklaj aŭdovidaĵoj estas defaŭlte kaŝita kaj povas esti malkiŝita per klako
|
||||
setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj
|
||||
setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn
|
||||
setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj
|
||||
|
@ -205,7 +205,7 @@ fr:
|
||||
recommended: Recommandé
|
||||
required:
|
||||
mark: "*"
|
||||
text: Champs requis
|
||||
text: champs requis
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Utilisez l'une de vos clés de sécurité pour vous connecter
|
||||
|
@ -65,6 +65,8 @@ hy:
|
||||
data: CSV ֆայլը ներմուծուել է Մաստոդոնի այլ սերուերից
|
||||
invite_request:
|
||||
text: Սա կօգնի մեզ ստուգել քո յաւելուածը
|
||||
ip_block:
|
||||
ip: Ներմուծէք IPv4 կամ IPv6 հասցէն։ Նաև կարող ես արգելափակել հասցէների միջակայքեր օգտագործելով CIDR սինտաքսը։ Զգոյշ եղիր՝ ինքդ քեզ չարգելափակես։
|
||||
sessions:
|
||||
otp: Մուտքագրիր երկքայլ նոյնականացման կոդը, որը գեներացուես ես քո բջջային յաւելուածի օգնութեամբ կամ օգտագործիր այս կոդերից կէկը՝
|
||||
tag:
|
||||
@ -168,6 +170,13 @@ hy:
|
||||
comment: Մեկնաբանություն
|
||||
invite_request:
|
||||
text: Ինչո՞ւ ես ցանկանում միանալ
|
||||
ip_block:
|
||||
comment: Մեկնաբանություն
|
||||
ip: IP
|
||||
severities:
|
||||
no_access: Մուտքը արգելել
|
||||
sign_up_requires_approval: Սահմանափակել գրանցումները
|
||||
severity: Կանոն
|
||||
notification_emails:
|
||||
digest: Ուղարկել դասակարգուած իմակներ
|
||||
favourite: Որեւէ մեկը հաւանեց գրառումդ
|
||||
|
@ -1 +1,211 @@
|
||||
--- {}
|
||||
---
|
||||
ku:
|
||||
simple_form:
|
||||
hints:
|
||||
account_alias:
|
||||
acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە
|
||||
account_migration:
|
||||
acct: دیاریکردنی username@domain ئەو هەژمارە کە دەتەوێت بیگوازیەوە لە
|
||||
account_warning_preset:
|
||||
text: دەتوانی ڕستەسازی ی توت بەکاربێنیت، وەک لینک، هاشتاگ و باسەکان
|
||||
title: ئارەزوومەندانە. دیار نیە بۆ وەرگر
|
||||
admin_account_action:
|
||||
include_statuses: بەکارهێنەرەکە دەبینێت کام توتی هۆکاری کرداری بەڕێوەبەر یان ئاگادارکردنەوە
|
||||
send_email_notification: بەکارهێنەر ڕوننکردەوەیەک دەبینێت کە تێدا دەزانێت چی بە سەر هەژمارەکەی هاتووە
|
||||
text_html: ئارزوومەندانە. دەتوانن وەک توتی ئاسایی بینووسن. دەتوانن بۆ کەمکردنەوەی کات <a href="%{path}">ئاگادارییەکان لە پێشەوە زیادبکەن</a>
|
||||
type_html: گەرکتە لەگەڵ هەژمارەی <strong>%{acct}</strong> چی بکەیت
|
||||
warning_preset_id: ئارەزوومەندانەیە. هێشتا دەتوانیت لە کۆتایی دەق شتێک زیاد بکەی
|
||||
announcement:
|
||||
all_day: کاتێک چاودێریکرا، تەنها بەروارەکانی مەودای کات پیشان دەدرێت
|
||||
ends_at: ئارەزوومەندانەیە. ئەم کاتە راگەیەنراوەکە بە شێوەیەکی خۆکارانە بڵاوناکرێتەوە
|
||||
scheduled_at: چۆڵ یبهێڵەوە بۆ بڵاوکردنەوەی دەستبەجێی بانگەوازەکە
|
||||
starts_at: ئارەزوومەندانەیە. لە حاڵەتی ڕاگەیاندنی تۆ بەستراو بە مەودایەکی کاتی دیاریکراو
|
||||
text: دەتوانیت ڕستەسازی توت بەکار بێنیت. تکایە بیر لەو بۆشاییە بکەوە کە بانگەوازەکە لەسەر شاشەی بەکارهێنەرەکە دەست نیشان دەکات
|
||||
defaults:
|
||||
autofollow: ئەو کەسانەی کە لە ڕێگەی بانگهێشتکردنەوە تۆمار دەکرێن بە خۆکارانە شوێنت دەکەون
|
||||
avatar: PNG, GIF یان JPG. لە زۆربەی %{size}. دەبێتە ئەندازەیەکی کەمکراوە بۆ %{dimensions}px
|
||||
bot: ئەم هەژمارە بەشێوەیەکی سەرەکی کردارە خۆکارانە ئەنجام دەدات و لەوانەیە چاودێری نەکرێت
|
||||
context: یەک یان چەند دەقێک کە پالافتنەکە جێبەجێ بکات
|
||||
current_password: بۆ مەبەستی پاراستن تکایە تێپەروشەی هەژمارەی ئێستاکەت بنووسە
|
||||
current_username: بۆ دڵنیابوون، تکایە ناوی بەکارهێنەری ئەم هەژمارەیە بنووسە
|
||||
digest: تەنیا دوای ماوەیەکی زۆر لە بێ چالاکیدەنێردرێت و تەنیا ئەگەر نامەیەکی کەسیت بۆ نووسرابێت
|
||||
discoverable: پێرستی هەڵبژاردەی بەکارهێنەران،تەنها ڕیگایەکی دیکەیە بۆ گەیشتنی بەکارهێنەری فرەتر بۆ هەژمارەکەت
|
||||
email: ئیمەیڵێکی پشتڕاستکردنەوەت بۆ دەنێردرێت
|
||||
fields: دەتوانیت تا ٤بڕگەت هەبێت کە وەک خشتەیەک لەسەر پرۆفایلەکەت پیشان بدرێت
|
||||
header: PNG, GIF یان JPG. لە زۆربەی %{size}. دەبێتە ئەندازەیەکی کەمکراوە بۆ %{dimensions}پیکسێڵ
|
||||
inbox_url: نیشانەی پەڕەی سەرەکی ئەو رێڵە کە هەرەکتە بەکاریببەیت ڕوونووس دەکات
|
||||
irreversible: توتە فلتەرکراوەکە بە شێوەیەکی نەگەڕاو فرەدەدرێن، تەنانەت ئەگەر فلتەردواتر لاببرێت
|
||||
locale: زمانی ڕووکاری بەکارهێنەر، ئیمەیلەکان و ئاگانامەکان
|
||||
locked: بە دەستی شوێنکەوتوانی خۆت پەسەند بکە
|
||||
password: بەلایەنی کەمەوە ٨ نووسە بەکاربهێنە
|
||||
phrase: سەربەخۆ لە بچکۆلی و گەورەیی پیتەکان، لەگەڵ دەقی ئەسڵی یان ئاگانامەکانی ناوەرۆکی توتەکان هاوئاهەنگ دەکرێت
|
||||
scopes: APIـیەکانی بەرنامەنووسی کە ئەم ماڵپەڕە دەستپێگەیشتنی لەگەڵیان هیە. ئەگەر بەرزترین ئاست هەڵبژێرن ئیتر نیاز بە بژاردەی ئاستی نزم نییە.
|
||||
setting_aggregate_reblogs: بۆ ئەو دووبارە توتانە کە بە نوێیی پێتان نیشان دراوە،دووبارە توتەکانی پێشتر زیاد مەکە(تەنها کاریگەری لەسەر توتەکانی ئەم دواییە هەیە)
|
||||
setting_default_sensitive: میدیای هەستیار لە بنەڕەت شاراوەیە و دەتوانرێت بە کلیکیک ئاشکرا بکرێت
|
||||
setting_display_media_default: شاردنەوەی ئەو میدیایانەی وەک هەستیار نیشانکراون
|
||||
setting_display_media_hide_all: هەمیشە میدیا بشارەوە
|
||||
setting_display_media_show_all: هەمیشە میدیا نیشان بدە
|
||||
setting_hide_network: کێ دوای دەکەویت و کێ دوای تۆ دەکەوێت لە پرۆفایلەکەت پیشان نادرێت
|
||||
setting_noindex: کاردەکاتە سەر پرۆفایل و لاپەڕە گشتیەکانت
|
||||
setting_show_application: بەرنامەیەک کە بە یارمەتیت توت دەکەیت، لە دیمەنی وردی توتەکان پیشان دەدرێت
|
||||
setting_use_blurhash: سێبەرەکان لە سەر بنەمای ڕەنگەکانی بەکارهاتوو لە وێنە داشاراوەکان دروست دەبن بەڵام وردەزانیاری وێنە تێیدا ڕوون نییە
|
||||
setting_use_pending_items: لەجیاتی ئەوەی بە خۆکارانە کێشان هەبێت لە نووسراوەکان بە کرتەیەک بەڕۆژبوونی پێرستی نووسراوەکان بشارەوە
|
||||
username: ناوی بەکارهێنەری ئێوە لەسەر %{domain} یەکتا دەبێت
|
||||
whole_word: کاتێک کلیلوشە بریتییە لە ژمارە و پیت، تنەها کاتێک پەیدا دەبێت کە لەگەڵ گشتی وشە لە نێو دەقەکە هاوئاهەنگ بێت، نە تەنها لەگەڵ بەشێک لە وشە
|
||||
domain_allow:
|
||||
domain: ئەم دۆمەینە دەتوانێت دراوە لە ئەم ڕاژە وەربگرێت و دراوەی ئەم دۆمەینە لێرە ڕێکدەخرین و پاشکەوت دەکرێن
|
||||
email_domain_block:
|
||||
domain: ئەمە دەکرێت ناوی دۆمەینەکە بێت کە لە ناونیشانی ئیمەیلدا دەرکەوێ، تۆماری MX کە دۆمەین چارەسەری دەکات یان IPی ڕاژەکە کە تۆماری MX چارەسەری دەکات. ئەوانە دەپشکنن لەسەر تۆمارکردنی بەکارهێنەر و تۆمارکردن ڕەت دەکرێت.
|
||||
with_dns_records: هەوڵێک بۆ چارەسەرکردنی تۆمارەکانی DNSی دۆمەین دراوە کە ئەنجامەکان بلۆک دەکرێت
|
||||
featured_tag:
|
||||
name: 'لەوانەیە بتەوێت یەکێک لەمانە بەکاربهێنیت:'
|
||||
form_challenge:
|
||||
current_password: تۆ دەچیتە ناو ناوچەی پارێزراو
|
||||
imports:
|
||||
data: فایلی CSV هەناردەکراوە لە ڕاژەیەکی تری ماستۆدۆن
|
||||
invite_request:
|
||||
text: ئەمە یارمەتیمان دەدات بۆ پێداچوونەوەی بەرنامەکەت
|
||||
ip_block:
|
||||
comment: دڵخوازە. لەبیرتە بۆچی ئەم یاسایەت زیاد کرد.
|
||||
expires_in: ناونیشانی IP سەرچاوەی سنوردارن، هەندێک جار هاوبەشکراون و زۆر جار دەستەکان دەگۆڕن. لەبەر ئەم هۆیە، بلۆکی IP بێ نەناسراو پێشنیار نەکراوە.
|
||||
ip: ناونیشانی IPv4 یان IPv6 تێبنووسە. دەتوانیت هەموو مەوداکان بلۆک بکەیت بە بەکارهێنانی داڕستانی CIDR. وریابە خۆت قفڵ مەکە!
|
||||
severities:
|
||||
no_access: بلۆککردنی گەیشتن بە هەموو سەرچاوەکان
|
||||
sign_up_requires_approval: نوێ ناوتۆمارکردن پێویستی بە ڕەزامەندی تۆیە
|
||||
severity: هەڵبژێرە چی ڕوودەدات لەگەڵ داواکاریەکانی ئەم IP
|
||||
sessions:
|
||||
otp: 'کۆدی دوو-فاکتۆر بنووسە کە لەلایەن ئەپی تەلەفۆنەکەتەوە دروست کراوە یان یەکێک لە کۆدەکانی هێنانەوەی خۆت بەکاربهێنە:'
|
||||
webauthn: ئەگەر کلیلی USB بێت دڵنیابە لە تێکردنی و ئەگەر پێویست بوو، لێیبدە.
|
||||
tag:
|
||||
name: ئێوە دەتوانن گەورەیی و بجکۆلیی پیتەکان دەستکاری بکەن تاکوو خوێنەوارتر دیاربن
|
||||
user:
|
||||
chosen_languages: کاتێک چاودێری کرا، تەنها توتەکان بە زمانە دیاریکراوەکان لە هێڵیکاتی گشتی پیشان دەدرێت
|
||||
labels:
|
||||
account:
|
||||
fields:
|
||||
name: ناونیشان
|
||||
value: ناوەڕۆک
|
||||
account_alias:
|
||||
acct: چارەسەرکردنی هەژمارە کۆنەکە
|
||||
account_migration:
|
||||
acct: چارەسەرکردنی هەژمارە نوێکە
|
||||
account_warning_preset:
|
||||
text: دەقی پێشوەختی ڕێکخستن
|
||||
title: سەردێڕ
|
||||
admin_account_action:
|
||||
include_statuses: لەخۆگرتنی توتەکانی گوزارشت لە ئیمەیل
|
||||
send_email_notification: بەکارهێنەر ئاگادار بکەوە بۆ هەر ئیمەیڵێک
|
||||
text: ئاگاداری تایبەتمەند
|
||||
type: کردار
|
||||
types:
|
||||
disable: بەستن
|
||||
none: ناردنی ئاگاداری
|
||||
silence: سنوور
|
||||
suspend: ڕاگرتن
|
||||
warning_preset_id: بەکاهێنانی ئاگاداری پێش وەختە
|
||||
announcement:
|
||||
all_day: ڕووداوی هەموو ڕۆژەکە
|
||||
ends_at: کۆتایی ڕووداو
|
||||
scheduled_at: بڵاوکراوەکە خشتە بکە
|
||||
starts_at: دەستپێکردنی ڕووداو
|
||||
text: بانگەواز
|
||||
defaults:
|
||||
autofollow: بانگهێشت کردن بۆ شوێنکەوتنی هەژمارەکەت
|
||||
avatar: وێنۆچکە
|
||||
bot: ئەمە هەژمارێکی ساختەیە
|
||||
chosen_languages: پاڵاوتنی زمانەکان
|
||||
confirm_new_password: پشتڕاستکردنەوەی تێپەڕوشەی نوێ
|
||||
confirm_password: پشتڕاستکردنەوەی تێپەڕوشە
|
||||
context: چوارچێوەی پاڵافتن
|
||||
current_password: تێپەروشەی ئێستا
|
||||
data: دراوه
|
||||
discoverable: ئەم هەژمێرە لە پێرستی بژاردەی بەکارهێنەران نیشان بدە
|
||||
display_name: ناوی پیشاندان
|
||||
email: ناونیشانی ئیمەیڵ
|
||||
expires_in: بەسەردەچێت پاش
|
||||
fields: مێتاداتای پرۆفایل
|
||||
header: سەرپەڕە
|
||||
inbox_url: بەستەری سندوقی گواستنەوەی
|
||||
irreversible: فرێدان لەجیاتی شاردنەوە
|
||||
locale: زمانی پەڕەی بەکارهێنەر
|
||||
locked: داخستنی هەژمارە
|
||||
max_uses: زۆرترین ژمارەی بەکاربەرەکان
|
||||
new_password: تێپەروشەی نوێ
|
||||
note: دەربارەی ئیوە
|
||||
otp_attempt: کۆدی دووقۆناغی هاتنەژوور
|
||||
password: تێپەڕوشە
|
||||
phrase: وشەکلیل یان دەستەواژە
|
||||
setting_advanced_layout: چالاککردنی ڕووکاری وێبی پێشکەوتوو
|
||||
setting_aggregate_reblogs: گرووپی توتەکان یەکبخە
|
||||
setting_auto_play_gif: خۆکاربەخشکردنی GIFــەکان
|
||||
setting_boost_modal: پیشاندانی دیالۆگی دووپاتکردنەوە پێش دوبارە توتاندن
|
||||
setting_crop_images: لە تووتی نەکراوە،وینەکان لە ئەندازی ۱٦×۹ ببڕە
|
||||
setting_default_language: زمانی نووسراوەکانتان
|
||||
setting_default_privacy: چوارچێوەی تایبەتێتی ئێوە
|
||||
setting_default_sensitive: هەمیشە نیشانکردنی میدیا وەک هەستیار
|
||||
setting_delete_modal: نیساندانی پەیامی پەسەند کردن پاش سڕینەوە
|
||||
setting_disable_swiping: جوڵەی سڕینەوە لە کاربخە
|
||||
setting_display_media: پیشاندانی میدیا
|
||||
setting_display_media_default: بنەڕەت
|
||||
setting_display_media_hide_all: شاردنەوەی هەموو
|
||||
setting_display_media_show_all: هەموو نیشان بدە
|
||||
setting_expand_spoilers: هەمیشە ئەو توتانەی کە بە ئاگادارکردنەوەکانی ناوەڕۆکەوە نیشانەکراون، پیسان بدە
|
||||
setting_hide_network: شاردنەوەی تۆڕەکەت
|
||||
setting_noindex: داوا لە مەکینەی گەڕان بۆ پیشاننەدان لە دەئەنجامی گەڕانەکان
|
||||
setting_reduce_motion: کەمکردنەوەی جوڵە لە ئەنیمەکان
|
||||
setting_show_application: ئاشکراکردنی ئەپەکان بۆ ناردنی توتەکان
|
||||
setting_system_font_ui: فۆنتی بنەڕەتی سیستەم بەکاربهێنە
|
||||
setting_theme: ڕووکاری ماڵپەڕ
|
||||
setting_trends: پیشاندانی نووسراوە بەرچاوکراوەی ئەمڕۆ
|
||||
setting_unfollow_modal: پیشاندانی پەیامی پەسەندکردن پێش شوێننەکەوتنی کەسێک
|
||||
setting_use_blurhash: بەجیاتی وینەی داشاراوە، سێبەری ڕەنگاوڕەنگ نیشان بدە
|
||||
setting_use_pending_items: دۆخی خاو
|
||||
severity: ئاستی گرنگی
|
||||
sign_in_token_attempt: کۆدی پاراستن
|
||||
type: جۆری هاوردەکردن
|
||||
username: ناوی بەکارهێنەر
|
||||
username_or_email: ناوی بەکاهێنەر یان ئیمەیڵ
|
||||
whole_word: هەموو وشەکە
|
||||
email_domain_block:
|
||||
with_dns_records: لەخۆگرتنی تۆمارەکانی MX و ئای پییەکانی دۆمەین
|
||||
featured_tag:
|
||||
name: هەشتاگ
|
||||
interactions:
|
||||
must_be_follower: قەپاتکردنی ئاگانامەکان بێجگە لە شوێنکەوتووان
|
||||
must_be_following: بەئاگانامەکان بلۆک بکە لە خەڵکێک کە پەیڕەویان ناکەیت
|
||||
must_be_following_dm: پەیامەکانی ڕاستەوخۆ بلۆک بکە لەو کەسانەی کە، پەیڕەوی ناکەن
|
||||
invite:
|
||||
comment: بۆچوون
|
||||
invite_request:
|
||||
text: بۆچی دەتەوێت بەشدار بیت?
|
||||
ip_block:
|
||||
comment: بۆچوون
|
||||
ip: IP
|
||||
severities:
|
||||
no_access: بلۆککردنی دهستپێگهیشتن
|
||||
sign_up_requires_approval: سنووردارکردنی چوونەناو
|
||||
severity: یاسا
|
||||
notification_emails:
|
||||
digest: کورتکردنی ئاگادارییکەن لەیەک ئیمەیل
|
||||
favourite: کەسێک دۆخی تۆی بەدڵ بوو
|
||||
follow: کەسێک دوای تۆ کەوت
|
||||
follow_request: کەسێک داوای کردووە کە بەدوات بکەوێت
|
||||
mention: کەسێک باسی کردووی
|
||||
pending_account: هەژمارەی نوێ پێویستی بە پێداچوونەوەهەیە
|
||||
reblog: کاتێک کەسێک نووسراوەی ئێوە دووبارە توت دەکاتەوە
|
||||
report: گوزارشتی نوێ پێشکەش کراوە
|
||||
trending_tag: کاتێک هاشتاگێکی پێدانەچوو هۆگری فرە بوو، ئیمەیلێک بنێرە
|
||||
tag:
|
||||
listable: ڕیگەبدە ئەم هاشتاگە لە پێرستی هەڵبژاردەی بەکارهێنەران و پەڕەی گەڕان نیشان بدرێت
|
||||
name: هەشتاگ
|
||||
trendable: ڕێگەبدە ئەم هەشتاگە لە نووسراوەی بەرچاوکراو نیسان بدرێت
|
||||
usable: ڕێگەبدە بە توتەکان بۆ بەکارهێنانی ئەم هەشتاگە
|
||||
'no': نە
|
||||
recommended: پێشنیارکراوە
|
||||
required:
|
||||
mark: "*"
|
||||
text: پێویستە
|
||||
title:
|
||||
sessions:
|
||||
webauthn: یەکێک لە کلیلەکانی پاراستن بەکاربهێنە بۆ چوونە ژوورەوە
|
||||
'yes': بەڵێ
|
||||
|
@ -67,6 +67,11 @@ oc:
|
||||
text: Aquò nos ajudarà per validar vòstra demanda
|
||||
ip_block:
|
||||
comment: Opcional. Remembratz-vos perque ajustèretz aquesta règla.
|
||||
expires_in: Las adreças IP son una ressorsa finida, son de còps partejadas e càmbian sovent de mans. Per aquesta rason, los blocatges d’IP sens fin son pas recomandats.
|
||||
ip: Dintratz una adreça IPv4 o IPv6. Podètz blocar de plajas entièras en utilizant la sintaxi CIDR. Agachatz de pas vos blocar defòra !
|
||||
severities:
|
||||
no_access: Blocar l’accès a totas las ressorsas
|
||||
sign_up_requires_approval: Las inscripcions novèlas requeriràn vòstra validacion
|
||||
severity: Causissètz que far amb las requèstas d’aquesta IP
|
||||
sessions:
|
||||
otp: 'Picatz lo còdi d’autentificacion en dos temps (Two factor code) de vòstra aplicacion mobil o utilizatz un de vòstres còdis de recuperacion :'
|
||||
|
@ -100,6 +100,7 @@ pl:
|
||||
types:
|
||||
disable: Wyłącz
|
||||
none: Nie rób niczego
|
||||
sensitive: Wrażliwe
|
||||
silence: Wycisz
|
||||
suspend: Zawieś i nieodwracalnie usuń dane konta
|
||||
warning_preset_id: Użyj szablonu ostrzeżenia
|
||||
|
@ -100,6 +100,7 @@ pt-BR:
|
||||
types:
|
||||
disable: Congelar
|
||||
none: Não fazer nada
|
||||
sensitive: Sensível
|
||||
silence: Silenciar
|
||||
suspend: Banir e excluir irreversivelmente dados da conta
|
||||
warning_preset_id: Usar um aviso pré-definido
|
||||
|
@ -7,12 +7,12 @@ vi:
|
||||
account_migration:
|
||||
acct: Nhập tên_người_dùng@máy chủ của tài khoản bạn muốn dời sang
|
||||
account_warning_preset:
|
||||
text: Bạn có thể sử dụng URL, hashtag và nhắc đến
|
||||
text: Bạn có thể dùng URL, hashtag và nhắc đến
|
||||
title: Tùy chọn. Không cho người nhận xem
|
||||
admin_account_action:
|
||||
include_statuses: Người dùng sẽ thấy các tút bị kiểm duyệt hoặc cảnh cáo
|
||||
include_statuses: Người dùng sẽ thấy các tút bị kiểm duyệt
|
||||
send_email_notification: Người dùng sẽ nhận được lời giải thích về những gì xảy ra với tài khoản của họ
|
||||
text_html: Tùy chọn. Bạn nên sử dụng <a href="%{path}">cảnh cáo cài sẵn</a> để tiết kiệm thời gian
|
||||
text_html: Tùy chọn. Bạn nên dùng <a href="%{path}">cảnh cáo cài sẵn</a> để tiết kiệm thời gian
|
||||
type_html: Chọn làm gì với <strong>%{acct}</strong>
|
||||
warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm ghi chú riêng
|
||||
announcement:
|
||||
@ -20,7 +20,7 @@ vi:
|
||||
ends_at: Tùy chọn. Thông báo sẽ tự động hủy vào lúc này
|
||||
scheduled_at: Để trống nếu muốn đăng thông báo ngay lập tức
|
||||
starts_at: Tùy chọn. Trong trường hợp thông báo của bạn đăng vào một khoảng thời gian cụ thể
|
||||
text: Bạn có thể sử dụng tút dạng cú pháp. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng
|
||||
text: Bạn có thể dùng URL, hashtag và nhắc đến. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng
|
||||
defaults:
|
||||
autofollow: Những người đăng ký sẽ tự động theo dõi bạn
|
||||
avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
|
||||
@ -33,11 +33,11 @@ vi:
|
||||
email: Bạn sẽ được gửi một email xác nhận
|
||||
fields: Được phép tạo tối đa 4 mục trên trang cá nhân của bạn
|
||||
header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
|
||||
inbox_url: Sao chép URL của relay mà bạn muốn sử dụng
|
||||
inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng
|
||||
irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc
|
||||
locale: Ngôn ngữ của giao diện, email và thông báo đẩy
|
||||
locked: Tự bạn sẽ phê duyệt người theo dõi
|
||||
password: Sử dụng ít nhất 8 ký tự
|
||||
password: Dùng ít nhất 8 ký tự
|
||||
phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút
|
||||
scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn quyền hạn cấp cao nhất, bạn không cần chọn từng phạm vi.
|
||||
setting_aggregate_reblogs: Nếu một tút đã được chia sẻ thì những lượt chia sẻ sau sẽ không hiển thị trên bảng tin nữa
|
||||
@ -58,7 +58,7 @@ vi:
|
||||
domain: Đây có thể là tên miền hoặc IP của dịch vụ email. Người dùng của những dịch vụ email này sẽ bị từ chối khi đăng ký.
|
||||
with_dns_records: Nếu DNS có vấn đề, nó sẽ bị đưa vào danh sách cấm
|
||||
featured_tag:
|
||||
name: 'Những hashtag khuyến nghị bạn sử dụng:'
|
||||
name: 'Những hashtag gợi ý cho bạn:'
|
||||
form_challenge:
|
||||
current_password: Biểu mẫu này an toàn
|
||||
imports:
|
||||
@ -67,14 +67,14 @@ vi:
|
||||
text: Điều này sẽ giúp chúng tôi phê duyệt đăng ký của bạn
|
||||
ip_block:
|
||||
comment: Tùy chọn. Hãy cho biết lý do bạn chặn IP này.
|
||||
expires_in: Có thể sẽ có nhiều người khác nhau sử dụng chung một địa chỉ IP. Vì vậy, bạn nên xem xét không nên chặn IP nào đó vĩnh viễn.
|
||||
expires_in: Có thể sẽ có nhiều người khác nhau dùng chung một địa chỉ IP. Vì vậy, bạn nên cân nhắc không nên chặn IP nào đó vĩnh viễn.
|
||||
ip: Nhập một địa chỉ IPv4 hoặc IPv6. Bạn cũng có thể chặn toàn bộ dãy IP bằng cú pháp CIDR. Hãy cẩn thận đừng chặn nhầm toàn bộ!
|
||||
severities:
|
||||
no_access: Chặn truy cập từ tất cả IP này
|
||||
sign_up_requires_approval: Bạn sẽ phê duyệt những đăng ký mới từ IP này
|
||||
severity: Chọn hành động nếu nhận được yêu cầu từ IP này
|
||||
sessions:
|
||||
otp: 'Nhập mã xác thực hai yếu tố được tạo bởi ứng dụng điện thoại của bạn hoặc sử dụng một trong các mã khôi phục của bạn:'
|
||||
otp: 'Nhập mã xác thực hai bước được tạo bởi ứng dụng điện thoại của bạn hoặc dùng một trong các mã khôi phục của bạn:'
|
||||
webauthn: Nếu đây là USB key, hãy cắm vào và thử xoay chiều.
|
||||
tag:
|
||||
name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn
|
||||
@ -99,11 +99,11 @@ vi:
|
||||
type: Hành động
|
||||
types:
|
||||
disable: Tạm khóa
|
||||
none: Gửi cảnh cáo
|
||||
none: Cấm upload
|
||||
sensitive: Nhạy cảm
|
||||
silence: Tạm ẩn
|
||||
suspend: Vô hiệu hóa
|
||||
warning_preset_id: Sử dụng cảnh cáo cài sẵn
|
||||
warning_preset_id: Dùng cảnh cáo cài sẵn
|
||||
announcement:
|
||||
all_day: Sự kiện diễn ra hằng ngày
|
||||
ends_at: Kết thúc sự kiện
|
||||
@ -130,7 +130,7 @@ vi:
|
||||
irreversible: Xóa bỏ vĩnh viễn
|
||||
locale: Ngôn ngữ
|
||||
locked: Đây là tài khoản riêng tư
|
||||
max_uses: Số lần sử dụng tối đa
|
||||
max_uses: Số lần dùng tối đa
|
||||
new_password: Mật khẩu mới
|
||||
note: Tiểu sử
|
||||
otp_attempt: Xác thực hai bước
|
||||
@ -155,7 +155,7 @@ vi:
|
||||
setting_noindex: Không xuất hiện trong công cụ tìm kiếm
|
||||
setting_reduce_motion: Giảm chuyển động ảnh GIF
|
||||
setting_show_application: Hiện ứng dụng đã dùng để đăng tút
|
||||
setting_system_font_ui: Sử dụng phông chữ mặc định của hệ thống
|
||||
setting_system_font_ui: Dùng phông chữ mặc định của hệ thống
|
||||
setting_theme: Giao diện
|
||||
setting_trends: Hiển thị xu hướng hôm nay
|
||||
setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy theo dõi ai đó
|
||||
@ -200,7 +200,7 @@ vi:
|
||||
listable: Cho phép hashtag này xuất hiện trong tìm kiếm và trên tiểu sử cá nhân
|
||||
name: Hashtag
|
||||
trendable: Cho phép hashtag này xuất hiện trong xu hướng
|
||||
usable: Cho phép sử dụng hashtag này trong tút
|
||||
usable: Cho phép dùng hashtag này trong tút
|
||||
'no': Tắt
|
||||
recommended: Khuyến nghị
|
||||
required:
|
||||
|
@ -168,6 +168,8 @@ zh-HK:
|
||||
comment: 備註
|
||||
invite_request:
|
||||
text: 加入的原因
|
||||
ip_block:
|
||||
ip: IP 地址
|
||||
notification_emails:
|
||||
digest: 定期電郵摘要
|
||||
favourite: 當有用戶喜歡你的文章時,發電郵通知
|
||||
|
@ -24,6 +24,7 @@ zh-TW:
|
||||
current_password: 因安全因素,請輸入目前帳戶的密碼
|
||||
current_username: 請輸入目前帳戶的使用者名稱以確認
|
||||
digest: 僅在你長時間未登入且在未登入期間收到私訊時傳送
|
||||
discoverable: 加入個人資料目錄能接觸更多閱聽眾
|
||||
email: 您將收到一封確認電子郵件
|
||||
fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目
|
||||
header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會按比例縮小成 %{dimensions} 像素
|
||||
|
@ -842,6 +842,7 @@ sq:
|
||||
request: Kërkoni arkivin tuaj
|
||||
size: Madhësi
|
||||
blocks: Bllokoni
|
||||
bookmarks: Faqerojtës
|
||||
csv: CSV
|
||||
domain_blocks: Bllokime përkatësish
|
||||
lists: Lista
|
||||
@ -918,6 +919,7 @@ sq:
|
||||
success: Të dhënat tuaja u ngarkuan me sukses dhe tani do të përpunohet në kohë
|
||||
types:
|
||||
blocking: Listë bllokimesh
|
||||
bookmarks: Faqerojtës
|
||||
domain_blocking: Listë bllokimesh përkatësish
|
||||
following: Listë ndjekjesh
|
||||
muting: Listë heshtimesh
|
||||
@ -1074,6 +1076,7 @@ sq:
|
||||
relationships:
|
||||
activity: Veprimtari llogarie
|
||||
dormant: Në gjumë
|
||||
follow_selected_followers: Ndiq ndjekësit e përzgjedhur
|
||||
followers: Ndjekës
|
||||
following: Ndjek
|
||||
invited: Të ftuar
|
||||
|
@ -642,6 +642,7 @@ sv:
|
||||
request: Efterfråga ditt arkiv
|
||||
size: Storlek
|
||||
blocks: Du blockerar
|
||||
bookmarks: Bokmärken
|
||||
csv: CSV
|
||||
lists: Listor
|
||||
mutes: Du tystar
|
||||
@ -678,6 +679,7 @@ sv:
|
||||
success: Dina uppgifter har laddats upp och kommer nu att behandlas snarast
|
||||
types:
|
||||
blocking: Lista av blockerade
|
||||
bookmarks: Bokmärken
|
||||
following: Lista av följare
|
||||
muting: Lista av nertystade
|
||||
upload: Ladda upp
|
||||
@ -766,6 +768,7 @@ sv:
|
||||
other: Annat
|
||||
relationships:
|
||||
activity: Kontoaktivitet
|
||||
follow_selected_followers: Följ valda personer
|
||||
followers: Följare
|
||||
following: Följer
|
||||
last_active: Senast aktiv
|
||||
|
@ -127,6 +127,7 @@ th:
|
||||
login_status: สถานะการเข้าสู่ระบบ
|
||||
media_attachments: ไฟล์แนบสื่อ
|
||||
memorialize: เปลี่ยนเป็นอนุสรณ์
|
||||
memorialized_msg: เปลี่ยน %{username} เป็นบัญชีอนุสรณ์สำเร็จ
|
||||
moderation:
|
||||
active: ใช้งานอยู่
|
||||
all: ทั้งหมด
|
||||
@ -150,6 +151,8 @@ th:
|
||||
reject_all: ปฏิเสธทั้งหมด
|
||||
remove_avatar: เอาภาพประจำตัวออก
|
||||
remove_header: เอาส่วนหัวออก
|
||||
removed_avatar_msg: เอาภาพประจำตัวของ %{username} ออกสำเร็จ
|
||||
removed_header_msg: เอาภาพส่วนหัวของ %{username} ออกสำเร็จ
|
||||
resend_confirmation:
|
||||
already_confirmed: ผู้ใช้นี้ได้รับการยืนยันอยู่แล้ว
|
||||
send: ส่งอีเมลยืนยันอีกครั้ง
|
||||
@ -750,6 +753,7 @@ th:
|
||||
request: ขอการเก็บถาวรของคุณ
|
||||
size: ขนาด
|
||||
blocks: คุณปิดกั้น
|
||||
bookmarks: ที่คั่นหน้า
|
||||
csv: CSV
|
||||
domain_blocks: การปิดกั้นโดเมน
|
||||
lists: รายการ
|
||||
@ -806,6 +810,7 @@ th:
|
||||
overwrite_long: แทนที่ระเบียนปัจจุบันด้วยระเบียนใหม่
|
||||
types:
|
||||
blocking: รายการปิดกั้น
|
||||
bookmarks: ที่คั่นหน้า
|
||||
domain_blocking: รายการปิดกั้นโดเมน
|
||||
following: รายการติดตาม
|
||||
muting: รายการซ่อน
|
||||
@ -920,6 +925,7 @@ th:
|
||||
relationships:
|
||||
activity: กิจกรรมบัญชี
|
||||
dormant: ไม่เคลื่อนไหว
|
||||
follow_selected_followers: ติดตามผู้ติดตามที่เลือก
|
||||
followers: ผู้ติดตาม
|
||||
following: กำลังติดตาม
|
||||
invited: เชิญแล้ว
|
||||
|
@ -35,7 +35,7 @@ tr:
|
||||
status_count_before: Şu ana kadar
|
||||
tagline: Arkadaşlarını takip et ve yenilerini keşfet
|
||||
terms: Kullanım şartları
|
||||
unavailable_content: Mevcut olmayan içerik
|
||||
unavailable_content: Denetlenen sunucular
|
||||
unavailable_content_description:
|
||||
domain: Sunucu
|
||||
reason: Sebep
|
||||
@ -52,16 +52,16 @@ tr:
|
||||
user_count_before: Kayıtlı
|
||||
what_is_mastodon: Mastodon nedir?
|
||||
accounts:
|
||||
choices_html: "%{name} seçimleri:"
|
||||
choices_html: "%{name} kişisinin seçimleri:"
|
||||
endorsements_hint: Takip ettiğiniz kişileri web arayüzünden onaylayabilirsiniz, burada görünecekler.
|
||||
featured_tags_hint: Burada görüntülenecek belirli etiketlere sahip olabilirsiniz.
|
||||
follow: Takip et
|
||||
followers:
|
||||
one: Takipçi
|
||||
other: Takipçi
|
||||
following: Takip ettikleri
|
||||
following: Takip edilenler
|
||||
joined: "%{date} tarihinde katıldı"
|
||||
last_active: son aktivite
|
||||
last_active: son etkinlik
|
||||
link_verified_on: Bu bağlantının mülkiyeti %{date} tarihinde kontrol edildi
|
||||
media: Medya
|
||||
moved_html: "%{name}, %{new_profile_link} adresine taşındı:"
|
||||
@ -77,7 +77,7 @@ tr:
|
||||
other: Toot
|
||||
posts_tab_heading: Tootlar
|
||||
posts_with_replies: Tootlar ve yanıtlar
|
||||
reserved_username: Kullanıcı adı saklıdır
|
||||
reserved_username: Kullanıcı adı rezerve edildi
|
||||
roles:
|
||||
admin: Yönetici
|
||||
bot: Bot
|
||||
@ -90,7 +90,7 @@ tr:
|
||||
action: Eylemi gerçekleştir
|
||||
title: "%{acct} üzerinde denetleme eylemi gerçekleştir"
|
||||
account_moderation_notes:
|
||||
create: Not bırakın
|
||||
create: Not bırak
|
||||
created_msg: Denetim notu başarıyla oluşturuldu!
|
||||
delete: Sil
|
||||
destroyed_msg: Denetim notu başarıyla yok edildi!
|
||||
@ -139,9 +139,9 @@ tr:
|
||||
local: Yerel
|
||||
remote: Uzaktan
|
||||
title: Konum
|
||||
login_status: Giriş durumu
|
||||
login_status: Oturum açma durumu
|
||||
media_attachments: Medya ekleri
|
||||
memorialize: Bir hatıraya dön
|
||||
memorialize: Anıta dönüştür
|
||||
memorialized: Anıtlaştırıldı
|
||||
memorialized_msg: "%{username} hesabı başarıyla anıt hesabına dönüştürüldü"
|
||||
moderation:
|
||||
@ -150,7 +150,7 @@ tr:
|
||||
pending: Bekliyor
|
||||
silenced: Susturulanlar
|
||||
suspended: Uzaklaştırılanlar
|
||||
title: Yönetim
|
||||
title: Denetim
|
||||
moderation_notes: Denetleme notları
|
||||
most_recent_activity: Son aktivite
|
||||
most_recent_ip: Son IP
|
||||
@ -218,7 +218,7 @@ tr:
|
||||
action_logs:
|
||||
action_types:
|
||||
assigned_to_self_report: Raporu Ata
|
||||
change_email_user: Kullanıcı için e-postayı değiştir
|
||||
change_email_user: Kullanıcı E-postasını Değiştir
|
||||
confirm_user: Kullanıcıyı Onayla
|
||||
create_account_warning: Uyarı Oluştur
|
||||
create_announcement: Duyuru Oluştur
|
||||
@ -235,14 +235,14 @@ tr:
|
||||
destroy_email_domain_block: E-posta alan adı engelini sil
|
||||
destroy_ip_block: IP kuralını sil
|
||||
destroy_status: Durumu Sil
|
||||
disable_2fa_user: 2 Adımlı Doğrulamayı Kapat
|
||||
disable_custom_emoji: Özel İfadeyi Engelle
|
||||
disable_user: Kullanıcıyı Engelle
|
||||
disable_2fa_user: 2AD Kapat
|
||||
disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak
|
||||
disable_user: Kullanıcıyı Devre Dışı Bırak
|
||||
enable_custom_emoji: Özel İfadeyi Etkinleştir
|
||||
enable_user: Kullanıcıyı Etkinleştir
|
||||
memorialize_account: Hesabı Hatırlat
|
||||
memorialize_account: Hesabı Anıtlaştır
|
||||
promote_user: Kullanıcıyı Yükselt
|
||||
remove_avatar_user: Avatarı Kaldır
|
||||
remove_avatar_user: Profil Resmini Kaldır
|
||||
reopen_report: Şikayeti Tekrar Aç
|
||||
reset_password_user: Parolayı Sıfırla
|
||||
resolve_report: Şikayeti Çöz
|
||||
@ -280,7 +280,7 @@ tr:
|
||||
disable_user: "%{name} %{target} kullanıcısı için oturum açmayı devre dışı bıraktı"
|
||||
enable_custom_emoji: "%{name} %{target} için emojiyi etkinleştirdi"
|
||||
enable_user: "%{name} %{target} için oturum açmayı etkinleştirdi"
|
||||
memorialize_account: "%{name} %{target}'in hesabını bir hatıra sayfasına dönüştürdü"
|
||||
memorialize_account: "%{name}, %{target} kişisinin hesabını anıt sayfasına dönüştürdü"
|
||||
promote_user: "%{name} %{target} kullanıcısını yükseltti"
|
||||
remove_avatar_user: "%{name} %{target}'in avatarını kaldırdı"
|
||||
reopen_report: "%{name} %{target} şikayetini yeniden açtı"
|
||||
@ -842,6 +842,7 @@ tr:
|
||||
request: Arşivinizi isteyin
|
||||
size: Boyut
|
||||
blocks: Engellediklerin
|
||||
bookmarks: Yer imleri
|
||||
csv: CSV
|
||||
domain_blocks: Alan adı engelleri
|
||||
lists: Listeler
|
||||
@ -918,6 +919,7 @@ tr:
|
||||
success: Verileriniz başarıyla yüklendi ve zaman içinde işlenecek
|
||||
types:
|
||||
blocking: Engellenenler listesi
|
||||
bookmarks: Yer imleri
|
||||
domain_blocking: Alan adı engelleme listesi
|
||||
following: Takip edilenler listesi
|
||||
muting: Susturulanlar listesi
|
||||
@ -1074,6 +1076,7 @@ tr:
|
||||
relationships:
|
||||
activity: Hesap etkinliği
|
||||
dormant: Uykuda
|
||||
follow_selected_followers: Seçili takipçileri takip et
|
||||
followers: Takipçiler
|
||||
following: Takip edilenler
|
||||
invited: Davet edildi
|
||||
|
File diff suppressed because one or more lines are too long
@ -2,6 +2,9 @@
|
||||
zgh:
|
||||
about:
|
||||
about_this: ⵖⴼ
|
||||
api: API
|
||||
contact: ⴰⵎⵢⴰⵡⴰⴹ
|
||||
learn_more: ⵙⵙⵏ ⵓⴳⴳⴰⵔ
|
||||
unavailable_content_description:
|
||||
domain: ⴰⵎⴰⴽⴽⴰⵢ
|
||||
what_is_mastodon: ⵎⴰ'ⵢⴷ ⵉⴳⴰⵏ ⵎⴰⵙⵜⵔⴷⵓⵎ?
|
||||
@ -9,6 +12,7 @@ zgh:
|
||||
follow: ⴹⴼⵕ
|
||||
never_active: ⵓⵙⴰⵔ
|
||||
roles:
|
||||
bot: ⴰⴱⵓⵜ
|
||||
group: ⵜⴰⵔⴰⴱⴱⵓⵜ
|
||||
admin:
|
||||
account_moderation_notes:
|
||||
@ -19,23 +23,36 @@ zgh:
|
||||
submit: ⵙⵏⴼⵍ ⵉⵎⴰⵢⵍ
|
||||
confirm: ⵙⵏⵜⵎ
|
||||
delete: ⴽⴽⵙ ⵉⴼⵙⴽⴰ
|
||||
deleted: ⵉⵜⵜⵡⴰⴽⴽⵙ
|
||||
domain: ⵉⴳⵔ
|
||||
edit: ⵙⵏⴼⵍ
|
||||
email: ⵉⵎⴰⵢⵍ
|
||||
email_status: ⴰⴷⴷⴰⴷ ⵏ ⵢⵉⵍⴰⵢⵍ
|
||||
location:
|
||||
all: ⵎⴰⵕⵕⴰ
|
||||
local: ⴰⴷⵖⴰⵔⴰⵏ
|
||||
moderation:
|
||||
all: ⵎⴰⵕⵕⴰ
|
||||
public: ⴰⴳⴷⵓⴷⴰⵏ
|
||||
reject: ⴰⴳⵢ
|
||||
roles:
|
||||
user: ⵓⵏⵙⵙⵓⵎⵔⵙ
|
||||
title: ⵉⵎⵉⴹⴰⵏⵏ
|
||||
web: ⵡⵉⴱ
|
||||
action_logs:
|
||||
action_types:
|
||||
update_status: ⵙⴷⵖⵉ ⴰⴷⴷⴰⴷ
|
||||
announcements:
|
||||
live: ⵓⵙⵔⵉⴷ
|
||||
custom_emojis:
|
||||
by_domain: ⵉⴳⵔ
|
||||
copy: ⵙⵏⵖⵍ
|
||||
delete: ⴽⴽⵙ
|
||||
emoji: ⵉⵎⵓⵊⵉ
|
||||
domain_blocks:
|
||||
domain: ⵉⴳⵔ
|
||||
email_domain_blocks:
|
||||
add_new: ⵔⵏⵓ ⴰⵎⴰⵢⵏⵓ
|
||||
delete: ⴽⴽⵙ
|
||||
instances:
|
||||
moderation:
|
||||
@ -123,4 +140,5 @@ zgh:
|
||||
settings:
|
||||
account: ⴰⵎⵉⴹⴰⵏ
|
||||
account_settings: ⵜⵉⵙⵖⴰⵍ ⵏ ⵓⵎⵉⴹⴰⵏ
|
||||
notifications: ⵜⵉⵏⵖⵎⵉⵙⵉⵏ
|
||||
profile: ⵉⴼⵔⵙ
|
||||
|
@ -834,6 +834,7 @@ zh-CN:
|
||||
request: 请求你的存档
|
||||
size: 大小
|
||||
blocks: 屏蔽的用户
|
||||
bookmarks: 书签
|
||||
csv: CSV
|
||||
domain_blocks: 域名屏蔽
|
||||
lists: 列表
|
||||
@ -909,6 +910,7 @@ zh-CN:
|
||||
success: 数据上传成功,正在处理中
|
||||
types:
|
||||
blocking: 屏蔽列表
|
||||
bookmarks: 书签
|
||||
domain_blocking: 域名屏蔽列表
|
||||
following: 关注列表
|
||||
muting: 隐藏列表
|
||||
@ -1062,6 +1064,7 @@ zh-CN:
|
||||
relationships:
|
||||
activity: 帐号活动
|
||||
dormant: 休眠
|
||||
follow_selected_followers: 关注选中的关注者
|
||||
followers: 关注者
|
||||
following: 正在关注
|
||||
invited: 已邀请
|
||||
|
@ -7,6 +7,7 @@ zh-HK:
|
||||
active_count_after: 活躍
|
||||
active_footnote: 每月活躍使用者 (MAU)
|
||||
administered_by: 管理者:
|
||||
api: API
|
||||
apps: 行動應用程式
|
||||
apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon
|
||||
browse_directory: 依興趣瀏覽個人資料目錄和過濾器
|
||||
@ -158,6 +159,8 @@ zh-HK:
|
||||
search: 搜索
|
||||
search_same_email_domain: 其他有同個電子郵件網域的使用者
|
||||
search_same_ip: 其他有同個 IP 的使用者
|
||||
sensitive: 敏感内容
|
||||
sensitized: 已標記為敏感內容
|
||||
shared_inbox_url: 公共收件箱(Shared Inbox)URL
|
||||
show:
|
||||
created_reports: 此用戶所提舉報的紀錄
|
||||
|
@ -625,6 +625,8 @@ zh-TW:
|
||||
lists: 列表
|
||||
mutes: 您靜音的使用者
|
||||
storage: 儲存空間大小
|
||||
featured_tags:
|
||||
hint_html: "<strong>推薦標籤是什麼?</strong> 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!"
|
||||
filters:
|
||||
index:
|
||||
empty: 您沒有過濾器。
|
||||
@ -767,6 +769,7 @@ zh-TW:
|
||||
development: 開發
|
||||
edit_profile: 編輯使用者資訊
|
||||
export: 匯出
|
||||
featured_tags: 推薦標籤
|
||||
import: 匯入
|
||||
migrate: 帳戶搬遷
|
||||
notifications: 通知
|
||||
@ -849,3 +852,6 @@ zh-TW:
|
||||
otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫
|
||||
seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。
|
||||
signed_in_as: 目前登入的帳戶:
|
||||
verification:
|
||||
explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式<strong>驗證您確實掌控該連結網頁的內容</strong>。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 <strong>必須</strong>包含<code>rel="me"</code>屬性。連結的顯示文字可自由發揮,以下為範例:
|
||||
verification: 驗證連結
|
||||
|
@ -47,7 +47,7 @@ module Mastodon
|
||||
ip_block ||= IpBlock.new(ip: address)
|
||||
|
||||
ip_block.severity = options[:severity]
|
||||
ip_block.comment = options[:comment]
|
||||
ip_block.comment = options[:comment] if options[:comment].present?
|
||||
ip_block.expires_in = options[:duration]
|
||||
|
||||
if ip_block.save
|
||||
|
@ -55,8 +55,8 @@ module Mastodon
|
||||
belongs_to :account, inverse_of: :account_stat
|
||||
end
|
||||
|
||||
# Dummy class, to make migration possible across version changes
|
||||
class Account < ApplicationRecord
|
||||
# Dummy class, to make migration possible across version changes
|
||||
has_one :user, inverse_of: :account
|
||||
has_one :account_stat, inverse_of: :account
|
||||
|
||||
@ -69,6 +69,49 @@ module Mastodon
|
||||
def acct
|
||||
local? ? username : "#{username}@#{domain}"
|
||||
end
|
||||
|
||||
# This is a duplicate of the AccountMerging concern because we need it to
|
||||
# be independent from code version.
|
||||
def merge_with!(other_account)
|
||||
# Since it's the same remote resource, the remote resource likely
|
||||
# already believes we are following/blocking, so it's safe to
|
||||
# re-attribute the relationships too. However, during the presence
|
||||
# of the index bug users could have *also* followed the reference
|
||||
# account already, therefore mass update will not work and we need
|
||||
# to check for (and skip past) uniqueness errors
|
||||
|
||||
owned_classes = [
|
||||
Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite,
|
||||
Follow, FollowRequest, Block, Mute, AccountIdentityProof,
|
||||
AccountModerationNote, AccountPin, AccountStat, ListAccount,
|
||||
PollVote, Mention
|
||||
]
|
||||
owned_classes << AccountDeletionRequest if ActiveRecord::Base.connection.table_exists?(:account_deletion_requests)
|
||||
owned_classes << AccountNote if ActiveRecord::Base.connection.table_exists?(:account_notes)
|
||||
|
||||
owned_classes.each do |klass|
|
||||
klass.where(account_id: other_account.id).find_each do |record|
|
||||
begin
|
||||
record.update_attribute(:account_id, id)
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
next
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin]
|
||||
target_classes << AccountNote if ActiveRecord::Base.connection.table_exists?(:account_notes)
|
||||
|
||||
target_classes.each do |klass|
|
||||
klass.where(target_account_id: other_account.id).find_each do |record|
|
||||
begin
|
||||
record.update_attribute(:target_account_id, id)
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
next
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class User < ApplicationRecord
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user