This commit is contained in:
tykayn 2019-09-29 11:28:21 +02:00
commit 7d0bde2763
133 changed files with 1884 additions and 2477 deletions

View File

@ -115,6 +115,20 @@ SMTP_FROM_ADDRESS=notifications@example.com
# S3_ENDPOINT= # S3_ENDPOINT=
# S3_SIGNATURE_VERSION= # S3_SIGNATURE_VERSION=
# Google Cloud Storage (optional)
# Use S3 compatible API. Since GCS does not support Multipart Upload,
# increase the value of S3_MULTIPART_THRESHOLD to disable Multipart Upload.
# The attachment host must allow cross origin request - see the description
# above.
# S3_ENABLED=true
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# S3_REGION=
# S3_PROTOCOL=https
# S3_HOSTNAME=storage.googleapis.com
# S3_ENDPOINT=https://storage.googleapis.com
# S3_MULTIPART_THRESHOLD=52428801 # 50.megabytes
# Swift (optional) # Swift (optional)
# The attachment host must allow cross origin request - see the description # The attachment host must allow cross origin request - see the description
# above. # above.

View File

@ -1 +1 @@
2.6.1 2.6.4

View File

@ -5,7 +5,173 @@ All notable changes to this project will be documented in this file.
## Unreleased ## Unreleased
TODO ### Added
- Add "not available" label to unloaded media attachments in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11715), [Gargron](https://github.com/tootsuite/mastodon/pull/11745))
- **Add profile directory to web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11688), [mayaeh](https://github.com/tootsuite/mastodon/pull/11872))
- Add profile directory opt-in federation
- Add profile directory REST API
- Add special alert for throttled requests in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11677))
- Add confirmation modal when logging out from the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11671))
- **Add audio player in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11644), [Gargron](https://github.com/tootsuite/mastodon/pull/11652), [Gargron](https://github.com/tootsuite/mastodon/pull/11654), [ThibG](https://github.com/tootsuite/mastodon/pull/11629))
- **Add autosuggestions for hashtags in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11422), [ThibG](https://github.com/tootsuite/mastodon/pull/11632), [Gargron](https://github.com/tootsuite/mastodon/pull/11764), [Gargron](https://github.com/tootsuite/mastodon/pull/11588), [Gargron](https://github.com/tootsuite/mastodon/pull/11442))
- **Add media editing modal with OCR tool in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11563), [Gargron](https://github.com/tootsuite/mastodon/pull/11566), [ThibG](https://github.com/tootsuite/mastodon/pull/11575), [ThibG](https://github.com/tootsuite/mastodon/pull/11576), [Gargron](https://github.com/tootsuite/mastodon/pull/11577), [Gargron](https://github.com/tootsuite/mastodon/pull/11573), [Gargron](https://github.com/tootsuite/mastodon/pull/11571))
- Add indicator of unread notifications to window title when web UI is out of focus ([Gargron](https://github.com/tootsuite/mastodon/pull/11560), [Gargron](https://github.com/tootsuite/mastodon/pull/11572))
- Add indicator for which options you voted for in a poll in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11195))
- **Add search results pagination to web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11409), [ThibG](https://github.com/tootsuite/mastodon/pull/11447))
- **Add option to disable real-time updates in web UI ("slow mode")** ([Gargron](https://github.com/tootsuite/mastodon/pull/9984), [ykzts](https://github.com/tootsuite/mastodon/pull/11880), [ThibG](https://github.com/tootsuite/mastodon/pull/11883), [Gargron](https://github.com/tootsuite/mastodon/pull/11898), [ThibG](https://github.com/tootsuite/mastodon/pull/11859))
- Add option to disable blurhash previews in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11188))
- Add native smooth scrolling when supported in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11207))
- Add search and sort functions to hashtag admin UI ([mayaeh](https://github.com/tootsuite/mastodon/pull/11829), [Gargron](https://github.com/tootsuite/mastodon/pull/11897), [mayaeh](https://github.com/tootsuite/mastodon/pull/11875))
- Add setting for default search engine indexing in admin UI ([brortao](https://github.com/tootsuite/mastodon/pull/11804))
- Add account bio to account view in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11473))
- **Add option to include reported statuses in warning e-mail from admin UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11639), [Gargron](https://github.com/tootsuite/mastodon/pull/11812), [Gargron](https://github.com/tootsuite/mastodon/pull/11741), [Gargron](https://github.com/tootsuite/mastodon/pull/11698), [mayaeh](https://github.com/tootsuite/mastodon/pull/11765))
- Add number of pending accounts and pending hashtags to dashboard in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11514))
- **Add account migration UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11846), [noellabo](https://github.com/tootsuite/mastodon/pull/11905), [noellabo](https://github.com/tootsuite/mastodon/pull/11907), [noellabo](https://github.com/tootsuite/mastodon/pull/11906), [noellabo](https://github.com/tootsuite/mastodon/pull/11902))
- **Add table of contents to about page** ([Gargron](https://github.com/tootsuite/mastodon/pull/11885), [ykzts](https://github.com/tootsuite/mastodon/pull/11941), [ykzts](https://github.com/tootsuite/mastodon/pull/11895), [Kjwon15](https://github.com/tootsuite/mastodon/pull/11916))
- **Add password challenge to 2FA settings, e-mail notifications** ([Gargron](https://github.com/tootsuite/mastodon/pull/11878))
- Add optional invite comments ([ThibG](https://github.com/tootsuite/mastodon/pull/10465))
- **Add optional public list of domain blocks with comments** ([ThibG](https://github.com/tootsuite/mastodon/pull/11298), [ThibG](https://github.com/tootsuite/mastodon/pull/11515), [Gargron](https://github.com/tootsuite/mastodon/pull/11908))
- Add an RSS feed for featured hashtags ([noellabo](https://github.com/tootsuite/mastodon/pull/10502))
- Add explanations to featured hashtags UI and profile ([Gargron](https://github.com/tootsuite/mastodon/pull/11586))
- **Add hashtag trends with admin and user settings** ([Gargron](https://github.com/tootsuite/mastodon/pull/11490), [Gargron](https://github.com/tootsuite/mastodon/pull/11502), [Gargron](https://github.com/tootsuite/mastodon/pull/11641), [Gargron](https://github.com/tootsuite/mastodon/pull/11594), [Gargron](https://github.com/tootsuite/mastodon/pull/11517), [mayaeh](https://github.com/tootsuite/mastodon/pull/11845), [Gargron](https://github.com/tootsuite/mastodon/pull/11774), [Gargron](https://github.com/tootsuite/mastodon/pull/11712), [Gargron](https://github.com/tootsuite/mastodon/pull/11791), [Gargron](https://github.com/tootsuite/mastodon/pull/11743), [Gargron](https://github.com/tootsuite/mastodon/pull/11740), [Gargron](https://github.com/tootsuite/mastodon/pull/11714), [ThibG](https://github.com/tootsuite/mastodon/pull/11631), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/11569), [Gargron](https://github.com/tootsuite/mastodon/pull/11524), [Gargron](https://github.com/tootsuite/mastodon/pull/11513))
- Add hashtag usage breakdown to admin UI
- Add batch actions for hashtags to admin UI
- Add trends to web UI
- Add trends to public pages
- Add user preference to hide trends
- Add admin setting to disable trends
- **Add categories for custom emojis** ([Gargron](https://github.com/tootsuite/mastodon/pull/11196), [Gargron](https://github.com/tootsuite/mastodon/pull/11793), [Gargron](https://github.com/tootsuite/mastodon/pull/11920), [highemerly](https://github.com/tootsuite/mastodon/pull/11876))
- Add custom emoji categories to emoji picker in web UI
- Add `category` to custom emojis in REST API
- Add batch actions for custom emojis in admin UI
- Add max image dimensions to error message ([raboof](https://github.com/tootsuite/mastodon/pull/11552))
- Add aac, m4a, 3gp, amr, wma to allowed audio formats ([Gargron](https://github.com/tootsuite/mastodon/pull/11342), [umonaca](https://github.com/tootsuite/mastodon/pull/11687))
- **Add search syntax for operators and phrases** ([Gargron](https://github.com/tootsuite/mastodon/pull/11411))
- **Add REST API for managing featured hashtags** ([noellabo](https://github.com/tootsuite/mastodon/pull/11778))
- **Add REST API for managing timeline read markers** ([Gargron](https://github.com/tootsuite/mastodon/pull/11762))
- **Add ActivityPub secure mode** ([Gargron](https://github.com/tootsuite/mastodon/pull/11269), [ThibG](https://github.com/tootsuite/mastodon/pull/11332), [ThibG](https://github.com/tootsuite/mastodon/pull/11295))
- Add HTTP signatures to all outgoing ActivityPub GET requests ([Gargron](https://github.com/tootsuite/mastodon/pull/11284), [ThibG](https://github.com/tootsuite/mastodon/pull/11300))
- Add support for ActivityPub Audio activities ([ThibG](https://github.com/tootsuite/mastodon/pull/11189))
- Add ActivityPub actor representing the entire server ([ThibG](https://github.com/tootsuite/mastodon/pull/11321), [rtucker](https://github.com/tootsuite/mastodon/pull/11400), [ThibG](https://github.com/tootsuite/mastodon/pull/11561), [Gargron](https://github.com/tootsuite/mastodon/pull/11798))
- **Add whitelist mode** ([Gargron](https://github.com/tootsuite/mastodon/pull/11291), [mayaeh](https://github.com/tootsuite/mastodon/pull/11634))
- Add config of multipart threshold for S3 ([ykzts](https://github.com/tootsuite/mastodon/pull/11924), [ykzts](https://github.com/tootsuite/mastodon/pull/11944))
- Add health check endpoint for web ([ykzts](https://github.com/tootsuite/mastodon/pull/11770), [ykzts](https://github.com/tootsuite/mastodon/pull/11947))
- Add HTTP signature keyId to request log ([Gargron](https://github.com/tootsuite/mastodon/pull/11591))
- Add `SMTP_REPLY_TO` environment variable ([hugogameiro](https://github.com/tootsuite/mastodon/pull/11718))
- Add `tootctl preview_cards remove` command ([mayaeh](https://github.com/tootsuite/mastodon/pull/11320))
- Add `tootctl media refresh` command ([Gargron](https://github.com/tootsuite/mastodon/pull/11775))
- Add `tootctl cache recount` command ([Gargron](https://github.com/tootsuite/mastodon/pull/11597))
- Add option to exclude suspended domains from `tootctl domains crawl` ([dariusk](https://github.com/tootsuite/mastodon/pull/11454))
- Add soft delete for statuses for instant deletes through API ([Gargron](https://github.com/tootsuite/mastodon/pull/11623), [Gargron](https://github.com/tootsuite/mastodon/pull/11648))
- Add rails-level JSON caching ([Gargron](https://github.com/tootsuite/mastodon/pull/11333), [Gargron](https://github.com/tootsuite/mastodon/pull/11271))
- **Add request pool to improve delivery performance** ([Gargron](https://github.com/tootsuite/mastodon/pull/10353), [ykzts](https://github.com/tootsuite/mastodon/pull/11756))
- Add concurrent connection attempts to resolved IP addresses ([ThibG](https://github.com/tootsuite/mastodon/pull/11757))
- Add index for remember_token to improve login performance ([abcang](https://github.com/tootsuite/mastodon/pull/11881))
- **Add more accurate hashtag search** ([Gargron](https://github.com/tootsuite/mastodon/pull/11579), [Gargron](https://github.com/tootsuite/mastodon/pull/11427), [Gargron](https://github.com/tootsuite/mastodon/pull/11448))
- **Add more accurate account search** ([Gargron](https://github.com/tootsuite/mastodon/pull/11537), [Gargron](https://github.com/tootsuite/mastodon/pull/11580))
- **Add a spam check** ([Gargron](https://github.com/tootsuite/mastodon/pull/11217), [Gargron](https://github.com/tootsuite/mastodon/pull/11806), [ThibG](https://github.com/tootsuite/mastodon/pull/11296))
### Changed
- **Change conversations UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11896))
- Change dashboard to short number notation ([noellabo](https://github.com/tootsuite/mastodon/pull/11847), [noellabo](https://github.com/tootsuite/mastodon/pull/11911))
- Change REST API `GET /api/v1/timelines/public` to require authentication when public preview is off ([ThibG](https://github.com/tootsuite/mastodon/pull/11802))
- Change REST API `POST /api/v1/follow_requests/:id/(approve|reject)` to return relationship ([ThibG](https://github.com/tootsuite/mastodon/pull/11800))
- Change rate limit for media proxy ([ykzts](https://github.com/tootsuite/mastodon/pull/11814))
- Change unlisted custom emoji to not appear in autosuggestions ([Gargron](https://github.com/tootsuite/mastodon/pull/11818))
- Change max length of media descriptions from 420 to 1500 characters ([Gargron](https://github.com/tootsuite/mastodon/pull/11819), [ThibG](https://github.com/tootsuite/mastodon/pull/11836))
- **Change deletes to preserve soft-deleted statuses in unresolved reports** ([Gargron](https://github.com/tootsuite/mastodon/pull/11805))
- **Change tootctl to use inline parallelization instead of Sidekiq** ([Gargron](https://github.com/tootsuite/mastodon/pull/11776))
- **Change account deletion page to have better explanations** ([Gargron](https://github.com/tootsuite/mastodon/pull/11753), [Gargron](https://github.com/tootsuite/mastodon/pull/11763))
- Change hashtag component in web UI to show numbers for 2 last days ([Gargron](https://github.com/tootsuite/mastodon/pull/11742), [Gargron](https://github.com/tootsuite/mastodon/pull/11755), [Gargron](https://github.com/tootsuite/mastodon/pull/11754))
- Change OpenGraph description on sign-up page to reflect invite ([Gargron](https://github.com/tootsuite/mastodon/pull/11744))
- Change layout of public profile directory to be the same as in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11705))
- Change detailed status child ordering to sort self-replies on top ([ThibG](https://github.com/tootsuite/mastodon/pull/11686))
- Change window resize handler to switch to/from mobile layout as soon as needed ([ThibG](https://github.com/tootsuite/mastodon/pull/11656))
- Change icon button styles to make hover/focus states more obvious ([ThibG](https://github.com/tootsuite/mastodon/pull/11474))
- Change contrast of status links that are not mentions or hashtags ([ThibG](https://github.com/tootsuite/mastodon/pull/11406))
- **Change hashtags to preserve first-used casing** ([Gargron](https://github.com/tootsuite/mastodon/pull/11416), [Gargron](https://github.com/tootsuite/mastodon/pull/11508), [Gargron](https://github.com/tootsuite/mastodon/pull/11504), [Gargron](https://github.com/tootsuite/mastodon/pull/11507), [Gargron](https://github.com/tootsuite/mastodon/pull/11441))
- **Change unconfirmed user login behaviour** ([Gargron](https://github.com/tootsuite/mastodon/pull/11375), [ThibG](https://github.com/tootsuite/mastodon/pull/11394), [Gargron](https://github.com/tootsuite/mastodon/pull/11860))
- **Change single-column mode to scroll the whole page** ([Gargron](https://github.com/tootsuite/mastodon/pull/11359), [Gargron](https://github.com/tootsuite/mastodon/pull/11894), [Gargron](https://github.com/tootsuite/mastodon/pull/11891), [ThibG](https://github.com/tootsuite/mastodon/pull/11655), [Gargron](https://github.com/tootsuite/mastodon/pull/11463), [Gargron](https://github.com/tootsuite/mastodon/pull/11458), [ThibG](https://github.com/tootsuite/mastodon/pull/11395), [Gargron](https://github.com/tootsuite/mastodon/pull/11418))
- Change `tootctl accounts follow` to only work with local accounts ([angristan](https://github.com/tootsuite/mastodon/pull/11592))
- Change Dockerfile ([Shleeble](https://github.com/tootsuite/mastodon/pull/11710), [ykzts](https://github.com/tootsuite/mastodon/pull/11768), [Shleeble](https://github.com/tootsuite/mastodon/pull/11707))
- Change supported Node versions to include v12 ([abcang](https://github.com/tootsuite/mastodon/pull/11706))
- Change Portuguese language from `pt` to `pt-PT` ([Gargron](https://github.com/tootsuite/mastodon/pull/11820))
### Removed
- **Remove OStatus support** ([Gargron](https://github.com/tootsuite/mastodon/pull/11205), [Gargron](https://github.com/tootsuite/mastodon/pull/11303), [Gargron](https://github.com/tootsuite/mastodon/pull/11460), [ThibG](https://github.com/tootsuite/mastodon/pull/11280), [ThibG](https://github.com/tootsuite/mastodon/pull/11278))
- Remove Atom feeds and old URLs in the form of `GET /:username/updates/:id` ([Gargron](https://github.com/tootsuite/mastodon/pull/11247))
- Remove WebP support ([angristan](https://github.com/tootsuite/mastodon/pull/11589))
- Remove deprecated config options from Heroku and Scalingo ([ykzts](https://github.com/tootsuite/mastodon/pull/11925))
- Remove deprecated REST API `GET /api/v1/search` API ([Gargron](https://github.com/tootsuite/mastodon/pull/11823))
- Remove deprecated REST API `GET /api/v1/statuses/:id/card` ([Gargron](https://github.com/tootsuite/mastodon/pull/11213))
- Remove deprecated REST API `POST /api/v1/notifications/dismiss?id=:id` ([Gargron](https://github.com/tootsuite/mastodon/pull/11214))
- Remove deprecated REST API `GET /api/v1/timelines/direct` ([Gargron](https://github.com/tootsuite/mastodon/pull/11212))
### Fixed
- Fix manifest warning ([ykzts](https://github.com/tootsuite/mastodon/pull/11767))
- Fix admin UI for custom emoji not respecting GIF autoplay preference ([ThibG](https://github.com/tootsuite/mastodon/pull/11801))
- Fix page body not being scrollable in admin/settings layout ([Gargron](https://github.com/tootsuite/mastodon/pull/11893))
- Fix placeholder colors for inputs not being explicitly defined ([Gargron](https://github.com/tootsuite/mastodon/pull/11890))
- Fix incorrect enclosure length in RSS ([tsia](https://github.com/tootsuite/mastodon/pull/11889))
- Fix TOTP codes not being filtered from logs during enabling/disabling ([Gargron](https://github.com/tootsuite/mastodon/pull/11877))
- Fix webfinger response not returning 410 when account is suspended ([Gargron](https://github.com/tootsuite/mastodon/pull/11869))
- Fix ActivityPub Move handler queuing jobs that will fail if account is suspended ([Gargron](https://github.com/tootsuite/mastodon/pull/11864))
- Fix SSO login not using existing account when e-mail is verified ([Gargron](https://github.com/tootsuite/mastodon/pull/11862))
- Fix web UI allowing uploads past status limit via drag & drop ([Gargron](https://github.com/tootsuite/mastodon/pull/11863))
- Fix expiring polls not being displayed as such in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11835))
- Fix 2FA challenge and password challenge for non-database users ([Gargron](https://github.com/tootsuite/mastodon/pull/11831), [Gargron](https://github.com/tootsuite/mastodon/pull/11943))
- Fix profile fields overflowing page width in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11828))
- Fix web push subscriptions being deleted on rate limit or timeout ([Gargron](https://github.com/tootsuite/mastodon/pull/11826))
- Fix display of long poll options in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11717), [ThibG](https://github.com/tootsuite/mastodon/pull/11833))
- Fix search API not resolving URL when `type` is given ([Gargron](https://github.com/tootsuite/mastodon/pull/11822))
- Fix hashtags being split by ZWNJ character ([Gargron](https://github.com/tootsuite/mastodon/pull/11821))
- Fix scroll position resetting when opening media modals in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11815))
- Fix duplicate HTML IDs on about page ([ThibG](https://github.com/tootsuite/mastodon/pull/11803))
- Fix admin UI showing superfluous reject media/reports on suspended domain blocks ([ThibG](https://github.com/tootsuite/mastodon/pull/11749))
- Fix ActivityPub context not being dynamically computed ([ThibG](https://github.com/tootsuite/mastodon/pull/11746))
- Fix Mastodon logo style on hover on public pages' footer ([ThibG](https://github.com/tootsuite/mastodon/pull/11735))
- Fix height of dashboard counters ([ThibG](https://github.com/tootsuite/mastodon/pull/11736))
- Fix custom emoji animation on hover in web UI directory bios ([ThibG](https://github.com/tootsuite/mastodon/pull/11716))
- Fix non-numbers being passed to Redis and causing an error ([Gargron](https://github.com/tootsuite/mastodon/pull/11697))
- Fix error in REST API for an account's statuses ([Gargron](https://github.com/tootsuite/mastodon/pull/11700))
- Fix uncaught error when resource param is missing in Webfinger request ([Gargron](https://github.com/tootsuite/mastodon/pull/11701))
- Fix uncaught domain normalization error in remote follow ([Gargron](https://github.com/tootsuite/mastodon/pull/11703))
- Fix uncaught 422 and 500 errors ([Gargron](https://github.com/tootsuite/mastodon/pull/11590), [Gargron](https://github.com/tootsuite/mastodon/pull/11811))
- Fix uncaught parameter missing exceptions and missing error templates ([Gargron](https://github.com/tootsuite/mastodon/pull/11702))
- Fix encoding error when checking e-mail MX records ([Gargron](https://github.com/tootsuite/mastodon/pull/11696))
- Fix items in StatusContent render list not all having a key ([ThibG](https://github.com/tootsuite/mastodon/pull/11645))
- Fix remote and staff-removed statuses leaving media behind for a day ([Gargron](https://github.com/tootsuite/mastodon/pull/11638))
- Fix CSP needlessly allowing blob URLs in script-src ([ThibG](https://github.com/tootsuite/mastodon/pull/11620))
- Fix ignoring whole status because of one invalid hashtag ([Gargron](https://github.com/tootsuite/mastodon/pull/11621))
- Fix hidden statuses losing focus ([ThibG](https://github.com/tootsuite/mastodon/pull/11208))
- Fix loading bar being obscured by other elements in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11598))
- Fix multiple issues with replies collection for pages further than self-replies ([ThibG](https://github.com/tootsuite/mastodon/pull/11582))
- Fix blurhash and autoplay not working on public pages ([Gargron](https://github.com/tootsuite/mastodon/pull/11585))
- Fix 422 being returned instead of 404 when POSTing to unmatched routes ([Gargron](https://github.com/tootsuite/mastodon/pull/11574), [Gargron](https://github.com/tootsuite/mastodon/pull/11704))
- Fix client-side resizing of image uploads ([ThibG](https://github.com/tootsuite/mastodon/pull/11570))
- Fix short number formatting for numbers above million in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11559))
- Fix ActivityPub and REST API queries setting cookies and preventing caching ([ThibG](https://github.com/tootsuite/mastodon/pull/11539), [ThibG](https://github.com/tootsuite/mastodon/pull/11557), [ThibG](https://github.com/tootsuite/mastodon/pull/11336), [ThibG](https://github.com/tootsuite/mastodon/pull/11331))
- Fix some emojis in profile metadata labels are not emojified. ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/11534))
- Fix account search always returning exact match on paginated results ([Gargron](https://github.com/tootsuite/mastodon/pull/11525))
- Fix acct URIs with IDN domains not being resolved ([Gargron](https://github.com/tootsuite/mastodon/pull/11520))
- Fix admin dashboard missing latest features ([Gargron](https://github.com/tootsuite/mastodon/pull/11505))
- Fix jumping of toot date when clicking spoiler button ([ariasuni](https://github.com/tootsuite/mastodon/pull/11449))
- Fix boost to original audience not working on mobile in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11371))
- Fix handling of webfinger redirects in ResolveAccountService ([ThibG](https://github.com/tootsuite/mastodon/pull/11279))
- Fix URLs appearing twice in errors of ActivityPub::DeliveryWorker ([Gargron](https://github.com/tootsuite/mastodon/pull/11231))
- Fix support for HTTP proxies ([ThibG](https://github.com/tootsuite/mastodon/pull/11245))
- Fix HTTP requests to IPv6 hosts ([ThibG](https://github.com/tootsuite/mastodon/pull/11240))
- Fix error in ElasticSearch index import ([mayaeh](https://github.com/tootsuite/mastodon/pull/11192))
- Fix duplicate account error when seeding development database ([ysksn](https://github.com/tootsuite/mastodon/pull/11366))
- Fix performance of session clean-up scheduler ([abcang](https://github.com/tootsuite/mastodon/pull/11871))
- Fix older migrations not running ([zunda](https://github.com/tootsuite/mastodon/pull/11377))
- Fix URLs counting towards RTL detection ([ahangarha](https://github.com/tootsuite/mastodon/pull/11759))
- Fix unnecessary status re-rendering in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11211))
- Fix http_parser.rb gem not being compiled when no network available ([petabyteboy](https://github.com/tootsuite/mastodon/pull/11444))
## [2.9.3] - 2019-08-10 ## [2.9.3] - 2019-08-10
### Added ### Added

View File

@ -5,7 +5,7 @@ ruby '>= 2.4.0', '< 2.7.0'
gem 'pkg-config', '~> 1.3' gem 'pkg-config', '~> 1.3'
gem 'puma', '~> 4.1' gem 'puma', '~> 4.2'
gem 'rails', '~> 5.2.3' gem 'rails', '~> 5.2.3'
gem 'thor', '~> 0.20' gem 'thor', '~> 0.20'
@ -29,7 +29,7 @@ gem 'bootsnap', '~> 1.4', require: false
gem 'browser' gem 'browser'
gem 'charlock_holmes', '~> 0.7.6' gem 'charlock_holmes', '~> 0.7.6'
gem 'iso-639' gem 'iso-639'
gem 'chewy', '~> 5.0' gem 'chewy', '~> 5.1'
gem 'cld3', '~> 3.2.4' gem 'cld3', '~> 3.2.4'
gem 'devise', '~> 4.7' gem 'devise', '~> 4.7'
gem 'devise-two-factor', '~> 3.1' gem 'devise-two-factor', '~> 3.1'
@ -50,7 +50,7 @@ gem 'fastimage'
gem 'goldfinger', '~> 2.1' gem 'goldfinger', '~> 2.1'
gem 'hiredis', '~> 0.6' gem 'hiredis', '~> 0.6'
gem 'redis-namespace', '~> 1.5' gem 'redis-namespace', '~> 1.5'
gem 'health_check', '~> 3.0' gem 'health_check', git: 'https://github.com/ianheggie/health_check', ref: '0b799ead604f900ed50685e9b2d469cd2befba5b'
gem 'htmlentities', '~> 4.3' gem 'htmlentities', '~> 4.3'
gem 'http', '~> 3.3' gem 'http', '~> 3.3'
gem 'http_accept_language', '~> 2.1' gem 'http_accept_language', '~> 2.1'
@ -115,7 +115,7 @@ end
group :test do group :test do
gem 'capybara', '~> 3.29' gem 'capybara', '~> 3.29'
gem 'climate_control', '~> 0.2' gem 'climate_control', '~> 0.2'
gem 'faker', '~> 2.3' gem 'faker', '~> 2.4'
gem 'microformats', '~> 4.1' gem 'microformats', '~> 4.1'
gem 'rails-controller-testing', '~> 1.0' gem 'rails-controller-testing', '~> 1.0'
gem 'rspec-sidekiq', '~> 3.0' gem 'rspec-sidekiq', '~> 3.0'

View File

@ -1,3 +1,11 @@
GIT
remote: https://github.com/ianheggie/health_check
revision: 0b799ead604f900ed50685e9b2d469cd2befba5b
ref: 0b799ead604f900ed50685e9b2d469cd2befba5b
specs:
health_check (4.0.0.pre)
rails (>= 4.0)
GIT GIT
remote: https://github.com/rtomayko/posix-spawn remote: https://github.com/rtomayko/posix-spawn
revision: 58465d2e213991f8afb13b984854a49fcdcc980c revision: 58465d2e213991f8afb13b984854a49fcdcc980c
@ -161,7 +169,7 @@ GEM
case_transform (0.2) case_transform (0.2)
activesupport activesupport
charlock_holmes (0.7.6) charlock_holmes (0.7.6)
chewy (5.0.0) chewy (5.1.0)
activesupport (>= 4.0) activesupport (>= 4.0)
elasticsearch (>= 2.0.0) elasticsearch (>= 2.0.0)
elasticsearch-dsl elasticsearch-dsl
@ -209,19 +217,19 @@ GEM
docile (1.3.2) docile (1.3.2)
domain_name (0.5.20180417) domain_name (0.5.20180417)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.2.0) doorkeeper (5.2.1)
railties (>= 5) railties (>= 5)
dotenv (2.7.5) dotenv (2.7.5)
dotenv-rails (2.7.5) dotenv-rails (2.7.5)
dotenv (= 2.7.5) dotenv (= 2.7.5)
railties (>= 3.2, < 6.1) railties (>= 3.2, < 6.1)
elasticsearch (6.0.2) elasticsearch (7.3.0)
elasticsearch-api (= 6.0.2) elasticsearch-api (= 7.3.0)
elasticsearch-transport (= 6.0.2) elasticsearch-transport (= 7.3.0)
elasticsearch-api (6.0.2) elasticsearch-api (7.3.0)
multi_json multi_json
elasticsearch-dsl (0.1.5) elasticsearch-dsl (0.1.8)
elasticsearch-transport (6.0.2) elasticsearch-transport (7.3.0)
faraday faraday
multi_json multi_json
encryptor (3.0.0) encryptor (3.0.0)
@ -231,9 +239,9 @@ GEM
tzinfo tzinfo
excon (0.62.0) excon (0.62.0)
fabrication (2.20.2) fabrication (2.20.2)
faker (2.3.0) faker (2.4.0)
i18n (~> 1.6.0) i18n (~> 1.6.0)
faraday (0.15.0) faraday (0.15.4)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
fast_blank (1.0.0) fast_blank (1.0.0)
fastimage (2.1.7) fastimage (2.1.7)
@ -278,8 +286,6 @@ GEM
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
hashdiff (1.0.0) hashdiff (1.0.0)
hashie (3.6.0) hashie (3.6.0)
health_check (3.0.0)
railties (>= 5.0)
heapy (0.1.4) heapy (0.1.4)
highline (2.0.1) highline (2.0.1)
hiredis (0.6.3) hiredis (0.6.3)
@ -370,10 +376,10 @@ GEM
mimemagic (0.3.3) mimemagic (0.3.3)
mini_mime (1.0.2) mini_mime (1.0.2)
mini_portile2 (2.4.0) mini_portile2 (2.4.0)
minitest (5.11.3) minitest (5.12.0)
msgpack (1.3.1) msgpack (1.3.1)
multi_json (1.13.1) multi_json (1.13.1)
multipart-post (2.0.0) multipart-post (2.1.1)
necromancer (0.5.0) necromancer (0.5.0)
net-ldap (0.16.1) net-ldap (0.16.1)
net-scp (2.0.0) net-scp (2.0.0)
@ -445,7 +451,7 @@ GEM
pry-rails (0.3.9) pry-rails (0.3.9)
pry (>= 0.10.4) pry (>= 0.10.4)
public_suffix (4.0.1) public_suffix (4.0.1)
puma (4.1.1) puma (4.2.0)
nio4r (~> 2.0) nio4r (~> 2.0)
pundit (2.1.0) pundit (2.1.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
@ -500,7 +506,7 @@ GEM
link_header (~> 0.0, >= 0.0.8) link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.3.3) rdf-normalize (0.3.3)
rdf (>= 2.2, < 4.0) rdf (>= 2.2, < 4.0)
redis (4.1.2) redis (4.1.3)
redis-actionpack (5.0.2) redis-actionpack (5.0.2)
actionpack (>= 4.0, < 6) actionpack (>= 4.0, < 6)
redis-rack (>= 1, < 3) redis-rack (>= 1, < 3)
@ -590,7 +596,7 @@ GEM
simple_form (4.1.0) simple_form (4.1.0)
actionpack (>= 5.0) actionpack (>= 5.0)
activemodel (>= 5.0) activemodel (>= 5.0)
simplecov (0.17.0) simplecov (0.17.1)
docile (~> 1.1) docile (~> 1.1)
json (>= 1.8, < 3) json (>= 1.8, < 3)
simplecov-html (~> 0.10.0) simplecov-html (~> 0.10.0)
@ -646,7 +652,7 @@ GEM
uniform_notifier (1.12.1) uniform_notifier (1.12.1)
warden (1.2.8) warden (1.2.8)
rack (>= 2.0.6) rack (>= 2.0.6)
webmock (3.7.3) webmock (3.7.5)
addressable (>= 2.3.6) addressable (>= 2.3.6)
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0) hashdiff (>= 0.4.0, < 2.0.0)
@ -687,7 +693,7 @@ DEPENDENCIES
capistrano-yarn (~> 2.0) capistrano-yarn (~> 2.0)
capybara (~> 3.29) capybara (~> 3.29)
charlock_holmes (~> 0.7.6) charlock_holmes (~> 0.7.6)
chewy (~> 5.0) chewy (~> 5.1)
cld3 (~> 3.2.4) cld3 (~> 3.2.4)
climate_control (~> 0.2) climate_control (~> 0.2)
concurrent-ruby concurrent-ruby
@ -700,7 +706,7 @@ DEPENDENCIES
doorkeeper (~> 5.2) doorkeeper (~> 5.2)
dotenv-rails (~> 2.7) dotenv-rails (~> 2.7)
fabrication (~> 2.20) fabrication (~> 2.20)
faker (~> 2.3) faker (~> 2.4)
fast_blank (~> 1.0) fast_blank (~> 1.0)
fastimage fastimage
fog-core (<= 2.1.0) fog-core (<= 2.1.0)
@ -708,7 +714,7 @@ DEPENDENCIES
fuubar (~> 2.4) fuubar (~> 2.4)
goldfinger (~> 2.1) goldfinger (~> 2.1)
hamlit-rails (~> 0.2) hamlit-rails (~> 0.2)
health_check (~> 3.0) health_check!
hiredis (~> 0.6) hiredis (~> 0.6)
htmlentities (~> 4.3) htmlentities (~> 4.3)
http (~> 3.3) http (~> 3.3)
@ -752,7 +758,7 @@ DEPENDENCIES
private_address_check (~> 0.5) private_address_check (~> 0.5)
pry-byebug (~> 3.7) pry-byebug (~> 3.7)
pry-rails (~> 0.3) pry-rails (~> 0.3)
puma (~> 4.1) puma (~> 4.2)
pundit (~> 2.1) pundit (~> 2.1)
rack-attack (~> 6.1) rack-attack (~> 6.1)
rack-cors (~> 1.0) rack-cors (~> 1.0)
@ -793,7 +799,7 @@ DEPENDENCIES
webpush webpush
RUBY VERSION RUBY VERSION
ruby 2.6.1p33 ruby 2.6.4p104
BUNDLED WITH BUNDLED WITH
1.17.3 1.17.3

View File

@ -13,15 +13,6 @@
"description": "The domain that your Mastodon instance will run on (this can be appname.herokuapp.com or a custom domain)", "description": "The domain that your Mastodon instance will run on (this can be appname.herokuapp.com or a custom domain)",
"required": true "required": true
}, },
"LOCAL_HTTPS": {
"description": "Will your domain support HTTPS? (Automatic for herokuapp, requires manual configuration for custom domains)",
"value": "false",
"required": true
},
"PAPERCLIP_SECRET": {
"description": "The secret key for storing media files",
"generator": "secret"
},
"SECRET_KEY_BASE": { "SECRET_KEY_BASE": {
"description": "The secret key base", "description": "The secret key base",
"generator": "secret" "generator": "secret"

View File

@ -10,6 +10,7 @@ class AccountsController < ApplicationController
before_action :set_body_classes before_action :set_body_classes
skip_around_action :set_locale, if: -> { request.format == :json } skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!
def show def show
respond_to do |format| respond_to do |format|

View File

@ -33,9 +33,9 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
def scope_for_collection def scope_for_collection
case params[:id] case params[:id]
when 'featured' when 'featured'
@account.statuses.permitted_for(@account, signed_request_account).tap do |scope| return Status.none if @account.blocking?(signed_request_account)
scope.merge!(@account.pinned_statuses)
end @account.pinned_statuses
else else
raise ActiveRecord::RecordNotFound raise ActiveRecord::RecordNotFound
end end

View File

@ -3,6 +3,7 @@
module Admin module Admin
class RelaysController < BaseController class RelaysController < BaseController
before_action :set_relay, except: [:index, :new, :create] before_action :set_relay, except: [:index, :new, :create]
before_action :require_signatures_enabled!, only: [:new, :create, :enable]
def index def index
authorize :relay, :update? authorize :relay, :update?
@ -11,7 +12,7 @@ module Admin
def new def new
authorize :relay, :update? authorize :relay, :update?
@relay = Relay.new(inbox_url: Relay::PRESET_RELAY) @relay = Relay.new
end end
def create def create
@ -54,5 +55,9 @@ module Admin
def resource_params def resource_params
params.require(:relay).permit(:inbox_url) params.require(:relay).permit(:inbox_url)
end end
def require_signatures_enabled!
redirect_to admin_relays_path, alert: I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode?
end
end end
end end

View File

@ -57,6 +57,8 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end end
def pinned_scope def pinned_scope
return Status.none if @account.blocking?(current_account)
@account.pinned_statuses @account.pinned_statuses
end end

View File

@ -33,7 +33,7 @@ class Api::V1::AccountsController < Api::BaseController
def follow def follow
FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs)) FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs))
options = @account.locked? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } } options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } }
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(options) render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(options)
end end

View File

@ -22,7 +22,7 @@ class Api::V2::SearchController < Api::BaseController
params[:q], params[:q],
current_account, current_account,
limit_param(RESULTS_LIMIT), limit_param(RESULTS_LIMIT),
search_params.merge(resolve: truthy_param?(:resolve)) search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed))
) )
end end

View File

@ -8,6 +8,8 @@ class Auth::SessionsController < Devise::SessionsController
skip_before_action :require_no_authentication, only: [:create] skip_before_action :require_no_authentication, only: [:create]
skip_before_action :require_functional! skip_before_action :require_functional!
prepend_before_action :authenticate_with_two_factor, if: :two_factor_enabled?, only: [:create]
before_action :set_instance_presenter, only: [:new] before_action :set_instance_presenter, only: [:new]
before_action :set_body_classes before_action :set_body_classes
@ -20,22 +22,9 @@ class Auth::SessionsController < Devise::SessionsController
end end
def create def create
self.resource = begin super do |resource|
if user_params[:email].blank? && session[:otp_user_id].present? remember_me(resource)
User.find(session[:otp_user_id]) flash.delete(:notice)
else
warden.authenticate!(auth_options)
end
end
if resource.otp_required_for_login?
if user_params[:otp_attempt].present? && session[:otp_user_id].present?
authenticate_with_two_factor_via_otp(resource)
else
prompt_for_two_factor(resource)
end
else
authenticate_and_respond(resource)
end end
end end
@ -49,6 +38,16 @@ class Auth::SessionsController < Devise::SessionsController
protected protected
def find_user
if session[:otp_user_id]
User.find(session[:otp_user_id])
else
user = User.authenticate_with_ldap(user_params) if Devise.ldap_authentication
user ||= User.authenticate_with_pam(user_params) if Devise.pam_authentication
user ||= User.find_for_authentication(email: user_params[:email])
end
end
def user_params def user_params
params.require(:user).permit(:email, :password, :otp_attempt) params.require(:user).permit(:email, :password, :otp_attempt)
end end
@ -71,6 +70,10 @@ class Auth::SessionsController < Devise::SessionsController
super super
end end
def two_factor_enabled?
find_user&.otp_required_for_login?
end
def valid_otp_attempt?(user) def valid_otp_attempt?(user)
user.validate_and_consume_otp!(user_params[:otp_attempt]) || user.validate_and_consume_otp!(user_params[:otp_attempt]) ||
user.invalidate_otp_backup_code!(user_params[:otp_attempt]) user.invalidate_otp_backup_code!(user_params[:otp_attempt])
@ -78,10 +81,24 @@ class Auth::SessionsController < Devise::SessionsController
false false
end end
def authenticate_with_two_factor
user = self.resource = find_user
if user_params[:otp_attempt].present? && session[:otp_user_id]
authenticate_with_two_factor_via_otp(user)
elsif user.present? && (user.encrypted_password.blank? || user.valid_password?(user_params[:password]))
# If encrypted_password is blank, we got the user from LDAP or PAM,
# so credentials are already valid
prompt_for_two_factor(user)
end
end
def authenticate_with_two_factor_via_otp(user) def authenticate_with_two_factor_via_otp(user)
if valid_otp_attempt?(user) if valid_otp_attempt?(user)
session.delete(:otp_user_id) session.delete(:otp_user_id)
authenticate_and_respond(user) remember_me(user)
sign_in(user)
else else
flash.now[:alert] = I18n.t('users.invalid_otp_token') flash.now[:alert] = I18n.t('users.invalid_otp_token')
prompt_for_two_factor(user) prompt_for_two_factor(user)
@ -90,16 +107,10 @@ class Auth::SessionsController < Devise::SessionsController
def prompt_for_two_factor(user) def prompt_for_two_factor(user)
session[:otp_user_id] = user.id session[:otp_user_id] = user.id
@body_classes = 'lighter'
render :two_factor render :two_factor
end end
def authenticate_and_respond(user)
sign_in(user)
remember_me(user)
respond_with user, location: after_sign_in_path_for(user)
end
private private
def set_instance_presenter def set_instance_presenter
@ -112,11 +123,9 @@ class Auth::SessionsController < Devise::SessionsController
def home_paths(resource) def home_paths(resource)
paths = [about_path] paths = [about_path]
if single_user_mode? && resource.is_a?(User) if single_user_mode? && resource.is_a?(User)
paths << short_account_path(username: resource.account) paths << short_account_path(username: resource.account)
end end
paths paths
end end

View File

@ -2,6 +2,7 @@
class CustomCssController < ApplicationController class CustomCssController < ApplicationController
skip_before_action :store_current_location skip_before_action :store_current_location
skip_before_action :require_functional!
before_action :set_cache_headers before_action :set_cache_headers

View File

@ -9,6 +9,8 @@ class DirectoriesController < ApplicationController
before_action :set_tag, only: :show before_action :set_tag, only: :show
before_action :set_accounts before_action :set_accounts
skip_before_action :require_functional!
def index def index
render :index render :index
end end

View File

@ -8,6 +8,7 @@ class FollowerAccountsController < ApplicationController
before_action :set_cache_headers before_action :set_cache_headers
skip_around_action :set_locale, if: -> { request.format == :json } skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!
def index def index
respond_to do |format| respond_to do |format|

View File

@ -8,6 +8,7 @@ class FollowingAccountsController < ApplicationController
before_action :set_cache_headers before_action :set_cache_headers
skip_around_action :set_locale, if: -> { request.format == :json } skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!
def index def index
respond_to do |format| respond_to do |format|

View File

@ -2,6 +2,7 @@
class ManifestsController < ApplicationController class ManifestsController < ApplicationController
skip_before_action :store_current_location skip_before_action :store_current_location
skip_before_action :require_functional!
def show def show
expires_in 3.minutes, public: true expires_in 3.minutes, public: true

View File

@ -4,6 +4,7 @@ class MediaController < ApplicationController
include Authorization include Authorization
skip_before_action :store_current_location skip_before_action :store_current_location
skip_before_action :require_functional!
before_action :authenticate_user!, if: :whitelist_mode? before_action :authenticate_user!, if: :whitelist_mode?
before_action :set_media_attachment before_action :set_media_attachment

View File

@ -4,6 +4,7 @@ class MediaProxyController < ApplicationController
include RoutingHelper include RoutingHelper
skip_before_action :store_current_location skip_before_action :store_current_location
skip_before_action :require_functional!
before_action :authenticate_user!, if: :whitelist_mode? before_action :authenticate_user!, if: :whitelist_mode?

View File

@ -7,6 +7,8 @@ class RemoteFollowController < ApplicationController
before_action :set_body_classes before_action :set_body_classes
skip_before_action :require_functional!
def new def new
@remote_follow = RemoteFollow.new(session_params) @remote_follow = RemoteFollow.new(session_params)
end end

View File

@ -10,6 +10,8 @@ class RemoteInteractionController < ApplicationController
before_action :set_status before_action :set_status
before_action :set_body_classes before_action :set_body_classes
skip_before_action :require_functional!
def new def new
@remote_follow = RemoteFollow.new(session_params) @remote_follow = RemoteFollow.new(session_params)
end end

View File

@ -0,0 +1,45 @@
# frozen_string_literal: true
class Settings::Migration::RedirectsController < Settings::BaseController
layout 'admin'
before_action :authenticate_user!
before_action :require_not_suspended!
skip_before_action :require_functional!
def new
@redirect = Form::Redirect.new
end
def create
@redirect = Form::Redirect.new(resource_params.merge(account: current_account))
if @redirect.valid_with_challenge?(current_user)
current_account.update!(moved_to_account: @redirect.target_account)
ActivityPub::UpdateDistributionWorker.perform_async(current_account.id)
redirect_to settings_migration_path, notice: I18n.t('migrations.moved_msg', acct: current_account.moved_to_account.acct)
else
render :new
end
end
def destroy
if current_account.moved_to_account_id.present?
current_account.update!(moved_to_account: nil)
ActivityPub::UpdateDistributionWorker.perform_async(current_account.id)
end
redirect_to settings_migration_path, notice: I18n.t('migrations.cancelled_msg')
end
private
def resource_params
params.require(:form_redirect).permit(:acct, :current_password, :current_username)
end
def require_not_suspended!
forbidden if current_account.suspended?
end
end

View File

@ -27,15 +27,6 @@ class Settings::MigrationsController < Settings::BaseController
end end
end end
def cancel
if current_account.moved_to_account_id.present?
current_account.update!(moved_to_account: nil)
ActivityPub::UpdateDistributionWorker.perform_async(current_account.id)
end
redirect_to settings_migration_path, notice: I18n.t('migrations.cancelled_msg')
end
helper_method :on_cooldown? helper_method :on_cooldown?
private private

View File

@ -19,6 +19,7 @@ class StatusesController < ApplicationController
before_action :set_autoplay, only: :embed before_action :set_autoplay, only: :embed
skip_around_action :set_locale, if: -> { request.format == :json } skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!, only: [:show, :embed]
content_security_policy only: :embed do |p| content_security_policy only: :embed do |p|
p.frame_ancestors(false) p.frame_ancestors(false)

View File

@ -13,6 +13,8 @@ class TagsController < ApplicationController
before_action :set_body_classes before_action :set_body_classes
before_action :set_instance_presenter before_action :set_instance_presenter
skip_before_action :require_functional!
def show def show
respond_to do |format| respond_to do |format|
format.html do format.html do

View File

@ -234,7 +234,7 @@ export function uploadCompose(files) {
progress[i] = loaded; progress[i] = loaded;
dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total)); dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total));
}, },
}).then(({ data }) => dispatch(uploadComposeSuccess(data))); }).then(({ data }) => dispatch(uploadComposeSuccess(data, f)));
}).catch(error => dispatch(uploadComposeFail(error))); }).catch(error => dispatch(uploadComposeFail(error)));
}; };
}; };
@ -289,10 +289,11 @@ export function uploadComposeProgress(loaded, total) {
}; };
}; };
export function uploadComposeSuccess(media) { export function uploadComposeSuccess(media, file) {
return { return {
type: COMPOSE_UPLOAD_SUCCESS, type: COMPOSE_UPLOAD_SUCCESS,
media: media, media: media,
file: file,
skipLoading: true, skipLoading: true,
}; };
}; };
@ -368,6 +369,7 @@ const fetchComposeSuggestionsTags = throttle((dispatch, getState, token) => {
q: token.slice(1), q: token.slice(1),
resolve: false, resolve: false,
limit: 4, limit: 4,
exclude_unreviewed: true,
}, },
}).then(({ data }) => { }).then(({ data }) => {
dispatch(readyComposeSuggestionsTags(token, data.hashtags)); dispatch(readyComposeSuggestionsTags(token, data.hashtags));

View File

@ -73,8 +73,9 @@ export function normalizePoll(poll) {
const emojiMap = makeEmojiMap(normalPoll); const emojiMap = makeEmojiMap(normalPoll);
normalPoll.options = poll.options.map(option => ({ normalPoll.options = poll.options.map((option, index) => ({
...option, ...option,
voted: poll.own_votes && poll.own_votes.includes(index),
title_emojified: emojify(escapeTextContentForBrowser(option.title), emojiMap), title_emojified: emojify(escapeTextContentForBrowser(option.title), emojiMap),
})); }));

View File

@ -10,9 +10,11 @@ import spring from 'react-motion/lib/spring';
import escapeTextContentForBrowser from 'escape-html'; import escapeTextContentForBrowser from 'escape-html';
import emojify from 'mastodon/features/emoji/emoji'; import emojify from 'mastodon/features/emoji/emoji';
import RelativeTimestamp from './relative_timestamp'; import RelativeTimestamp from './relative_timestamp';
import Icon from 'mastodon/components/icon';
const messages = defineMessages({ const messages = defineMessages({
closed: { id: 'poll.closed', defaultMessage: 'Closed' }, closed: { id: 'poll.closed', defaultMessage: 'Closed' },
voted: { id: 'poll.voted', defaultMessage: 'You voted for this answer', description: 'Tooltip of the "voted" checkmark in polls' },
}); });
const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => { const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => {
@ -99,10 +101,11 @@ class Poll extends ImmutablePureComponent {
}; };
renderOption (option, optionIndex, showResults) { renderOption (option, optionIndex, showResults) {
const { poll, disabled } = this.props; const { poll, disabled, intl } = this.props;
const percent = poll.get('votes_count') === 0 ? 0 : (option.get('votes_count') / poll.get('votes_count')) * 100; const percent = poll.get('votes_count') === 0 ? 0 : (option.get('votes_count') / poll.get('votes_count')) * 100;
const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count')); const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count'));
const active = !!this.state.selected[`${optionIndex}`]; const active = !!this.state.selected[`${optionIndex}`];
const voted = option.get('voted') || (poll.get('own_votes') && poll.get('own_votes').includes(optionIndex));
let titleEmojified = option.get('title_emojified'); let titleEmojified = option.get('title_emojified');
if (!titleEmojified) { if (!titleEmojified) {
@ -131,7 +134,10 @@ class Poll extends ImmutablePureComponent {
/> />
{!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />} {!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />}
{showResults && <span className='poll__number'>{Math.round(percent)}%</span>} {showResults && <span className='poll__number'>
{!!voted && <Icon id='check' className='poll__vote__mark' title={intl.formatMessage(messages.voted)} />}
{Math.round(percent)}%
</span>}
<span dangerouslySetInnerHTML={{ __html: titleEmojified }} /> <span dangerouslySetInnerHTML={{ __html: titleEmojified }} />
</label> </label>

View File

@ -201,10 +201,6 @@ export default class ScrollableList extends PureComponent {
this.detachIntersectionObserver(); this.detachIntersectionObserver();
detachFullscreenListener(this.onFullScreenChange); detachFullscreenListener(this.onFullScreenChange);
if (this.props.onScrollToTop) {
this.props.onScrollToTop();
}
} }
onFullScreenChange = () => { onFullScreenChange = () => {

View File

@ -99,4 +99,4 @@ export const buildCustomEmojis = (customEmojis) => {
return emojis; return emojis;
}; };
export const categoriesFromEmojis = customEmojis => customEmojis.reduce((set, emoji) => set.add(emoji.get('category') ? `custom-${emoji.get('category')}` : 'custom'), new Set()); export const categoriesFromEmojis = customEmojis => customEmojis.reduce((set, emoji) => set.add(emoji.get('category') ? `custom-${emoji.get('category')}` : 'custom'), new Set(['custom']));

View File

@ -77,16 +77,14 @@ class GettingStarted extends ImmutablePureComponent {
}; };
componentDidMount () { componentDidMount () {
const { myAccount, fetchFollowRequests, multiColumn } = this.props; const { fetchFollowRequests, multiColumn } = this.props;
if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) { if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) {
this.context.router.history.replace('/timelines/home'); this.context.router.history.replace('/timelines/home');
return; return;
} }
if (myAccount.get('locked')) { fetchFollowRequests();
fetchFollowRequests();
}
} }
render () { render () {
@ -134,7 +132,7 @@ class GettingStarted extends ImmutablePureComponent {
height += 48*3; height += 48*3;
if (myAccount.get('locked')) { if (myAccount.get('locked') || unreadFollowRequests > 0) {
navItems.push(<ColumnLink key={i++} icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />); navItems.push(<ColumnLink key={i++} icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
height += 48; height += 48;
} }

View File

@ -173,7 +173,17 @@ class FocalPointModal extends ImmutablePureComponent {
langPath: `${assetHost}/ocr/lang-data`, langPath: `${assetHost}/ocr/lang-data`,
}); });
worker.recognize(media.get('url')) let media_url = media.get('file');
if (window.URL && URL.createObjectURL) {
try {
media_url = URL.createObjectURL(media.get('file'));
} catch (error) {
console.error(error);
}
}
worker.recognize(media_url)
.progress(({ progress }) => this.setState({ progress })) .progress(({ progress }) => this.setState({ progress }))
.finally(() => worker.terminate()) .finally(() => worker.terminate())
.then(({ text }) => this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false })) .then(({ text }) => this.setState({ description: removeExtraLineBreaks(text), dirty: true, detecting: false }))

View File

@ -7,7 +7,7 @@
"account.cancel_follow_request": "إلغاء طلب المتابَعة", "account.cancel_follow_request": "إلغاء طلب المتابَعة",
"account.direct": "رسالة خاصة إلى @{name}", "account.direct": "رسالة خاصة إلى @{name}",
"account.domain_blocked": "النطاق مخفي", "account.domain_blocked": "النطاق مخفي",
"account.edit_profile": "تعديل الملف الشخصي", "account.edit_profile": "تعديل الملف التعريفي",
"account.endorse": "أوصِ به على صفحتك", "account.endorse": "أوصِ به على صفحتك",
"account.follow": "تابِع", "account.follow": "تابِع",
"account.followers": "متابعون", "account.followers": "متابعون",
@ -30,11 +30,11 @@
"account.posts_with_replies": "التبويقات و الردود", "account.posts_with_replies": "التبويقات و الردود",
"account.report": "ابلِغ عن @{name}", "account.report": "ابلِغ عن @{name}",
"account.requested": "في انتظار الموافقة. اضْغَطْ/ي لإلغاء طلب المتابعة", "account.requested": "في انتظار الموافقة. اضْغَطْ/ي لإلغاء طلب المتابعة",
"account.share": "مشاركة حساب @{name}", "account.share": "شارك ملف تعريف @{name}",
"account.show_reblogs": "اعرض ترقيات @{name}", "account.show_reblogs": "اعرض ترقيات @{name}",
"account.unblock": "إلغاء الحظر عن @{name}", "account.unblock": "إلغاء الحظر عن @{name}",
"account.unblock_domain": "فك الخْفى عن {domain}", "account.unblock_domain": "فك الخْفى عن {domain}",
"account.unendorse": "أزل ترويجه مِن الملف الشخصي", "account.unendorse": "أزل ترويجه مِن الملف التعريفي",
"account.unfollow": "إلغاء المتابعة", "account.unfollow": "إلغاء المتابعة",
"account.unmute": "إلغاء الكتم عن @{name}", "account.unmute": "إلغاء الكتم عن @{name}",
"account.unmute_notifications": "إلغاء كتم إخطارات @{name}", "account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
@ -53,7 +53,7 @@
"column.blocks": "الحسابات المحجوبة", "column.blocks": "الحسابات المحجوبة",
"column.community": "الخيط العام المحلي", "column.community": "الخيط العام المحلي",
"column.direct": "الرسائل المباشرة", "column.direct": "الرسائل المباشرة",
"column.directory": "Browse profiles", "column.directory": "استعرض الملفات التعريفية",
"column.domain_blocks": "النطاقات المخفية", "column.domain_blocks": "النطاقات المخفية",
"column.favourites": "المفضلة", "column.favourites": "المفضلة",
"column.follow_requests": "طلبات المتابعة", "column.follow_requests": "طلبات المتابعة",
@ -63,7 +63,7 @@
"column.notifications": "الإخطارات", "column.notifications": "الإخطارات",
"column.pins": "التبويقات المثبتة", "column.pins": "التبويقات المثبتة",
"column.public": "الخيط العام الموحد", "column.public": "الخيط العام الموحد",
"column.status": "Toot", "column.status": "تبويق",
"column_back_button.label": "العودة", "column_back_button.label": "العودة",
"column_header.hide_settings": "إخفاء الإعدادات", "column_header.hide_settings": "إخفاء الإعدادات",
"column_header.moveLeft_settings": "نقل القائمة إلى اليسار", "column_header.moveLeft_settings": "نقل القائمة إلى اليسار",
@ -111,10 +111,10 @@
"confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟", "confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟",
"confirmations.unfollow.confirm": "إلغاء المتابعة", "confirmations.unfollow.confirm": "إلغاء المتابعة",
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟", "confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
"conversation.delete": "Delete conversation", "conversation.delete": "احذف المحادثة",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "اعتبرها كمقروءة",
"conversation.open": "View conversation", "conversation.open": "اعرض المحادثة",
"conversation.with": "With {names}", "conversation.with": "بـ {names}",
"directory.federated": "From known fediverse", "directory.federated": "From known fediverse",
"directory.local": "From {domain} only", "directory.local": "From {domain} only",
"directory.new_arrivals": "الوافدون الجُدد", "directory.new_arrivals": "الوافدون الجُدد",
@ -136,7 +136,7 @@
"emoji_button.symbols": "رموز", "emoji_button.symbols": "رموز",
"emoji_button.travel": "الأماكن والسفر", "emoji_button.travel": "الأماكن والسفر",
"empty_column.account_timeline": "ليس هناك تبويقات!", "empty_column.account_timeline": "ليس هناك تبويقات!",
"empty_column.account_unavailable": "الملف الشخصي غير متوفر", "empty_column.account_unavailable": "الملف التعريفي غير متوفر",
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
"empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!", "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
"empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.", "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
@ -155,7 +155,7 @@
"follow_request.authorize": "ترخيص", "follow_request.authorize": "ترخيص",
"follow_request.reject": "رفض", "follow_request.reject": "رفض",
"getting_started.developers": "المُطوِّرون", "getting_started.developers": "المُطوِّرون",
"getting_started.directory": "دليل المستخدِمين والمستخدِمات", "getting_started.directory": "دليل الصفحات التعريفية",
"getting_started.documentation": "الدليل", "getting_started.documentation": "الدليل",
"getting_started.heading": "استعدّ للبدء", "getting_started.heading": "استعدّ للبدء",
"getting_started.invite": "دعوة أشخاص", "getting_started.invite": "دعوة أشخاص",
@ -194,7 +194,7 @@
"introduction.interactions.reply.text": "يمكنكم الرد على تبويقاتكم و تبويقات الآخرين على شكل سلسلة محادثة.", "introduction.interactions.reply.text": "يمكنكم الرد على تبويقاتكم و تبويقات الآخرين على شكل سلسلة محادثة.",
"introduction.welcome.action": "هيا بنا!", "introduction.welcome.action": "هيا بنا!",
"introduction.welcome.headline": "الخطوات الأولى", "introduction.welcome.headline": "الخطوات الأولى",
"introduction.welcome.text": "مرحبا بكم على الفديفرس! بعد لحظات قليلة ، سيكون بمقدوركم بث رسائل والتحدث إلى أصدقائكم عبر تشكيلة واسعة من الخوادم المختلفة. هذا الخادم ، {domain} ، يستضيف ملفكم الشخصي ، لذا يجب تذكر اسمه جيدا.", "introduction.welcome.text": "مرحبا بكم على الفديفرس! بعد لحظات قليلة ، سيكون بمقدوركم بث رسائل والتحدث إلى أصدقائكم عبر تشكيلة واسعة من الخوادم المختلفة. هذا الخادم ، {domain} ، يستضيف صفحتكم التعريفية ، لذا يجب تذكر اسمه جيدا.",
"keyboard_shortcuts.back": "للعودة", "keyboard_shortcuts.back": "للعودة",
"keyboard_shortcuts.blocked": "لفتح قائمة المستخدمين المحظورين", "keyboard_shortcuts.blocked": "لفتح قائمة المستخدمين المحظورين",
"keyboard_shortcuts.boost": "للترقية", "keyboard_shortcuts.boost": "للترقية",
@ -214,10 +214,10 @@
"keyboard_shortcuts.local": "لفتح الخيط العام المحلي", "keyboard_shortcuts.local": "لفتح الخيط العام المحلي",
"keyboard_shortcuts.mention": "لذِكر الناشر", "keyboard_shortcuts.mention": "لذِكر الناشر",
"keyboard_shortcuts.muted": "لفتح قائمة المستخدِمين المكتومين", "keyboard_shortcuts.muted": "لفتح قائمة المستخدِمين المكتومين",
"keyboard_shortcuts.my_profile": "لفتح ملفك الشخصي", "keyboard_shortcuts.my_profile": "لفتح ملفك التعريفي",
"keyboard_shortcuts.notifications": "لفتح عمود الإشعارات", "keyboard_shortcuts.notifications": "لفتح عمود الإشعارات",
"keyboard_shortcuts.pinned": "لفتح قائمة التبويقات المدبسة", "keyboard_shortcuts.pinned": "لفتح قائمة التبويقات المدبسة",
"keyboard_shortcuts.profile": "لفتح رابط الناشر", "keyboard_shortcuts.profile": "لفتح الملف التعريفي للناشر",
"keyboard_shortcuts.reply": "للردّ", "keyboard_shortcuts.reply": "للردّ",
"keyboard_shortcuts.requests": "لفتح قائمة طلبات المتابعة", "keyboard_shortcuts.requests": "لفتح قائمة طلبات المتابعة",
"keyboard_shortcuts.search": "للتركيز على البحث", "keyboard_shortcuts.search": "للتركيز على البحث",
@ -253,7 +253,7 @@
"navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.direct": "الرسائل المباشِرة",
"navigation_bar.discover": "اكتشف", "navigation_bar.discover": "اكتشف",
"navigation_bar.domain_blocks": "النطاقات المخفية", "navigation_bar.domain_blocks": "النطاقات المخفية",
"navigation_bar.edit_profile": "تعديل الملف الشخصي", "navigation_bar.edit_profile": "عدّل الملف التعريفي",
"navigation_bar.favourites": "المفضلة", "navigation_bar.favourites": "المفضلة",
"navigation_bar.filters": "الكلمات المكتومة", "navigation_bar.filters": "الكلمات المكتومة",
"navigation_bar.follow_requests": "طلبات المتابعة", "navigation_bar.follow_requests": "طلبات المتابعة",
@ -355,7 +355,7 @@
"status.mute": "أكتم @{name}", "status.mute": "أكتم @{name}",
"status.mute_conversation": "كتم المحادثة", "status.mute_conversation": "كتم المحادثة",
"status.open": "وسع هذه المشاركة", "status.open": "وسع هذه المشاركة",
"status.pin": "تدبيس على الملف الشخصي", "status.pin": "دبّسه على الصفحة التعريفية",
"status.pinned": "تبويق مثبَّت", "status.pinned": "تبويق مثبَّت",
"status.read_more": "اقرأ المزيد", "status.read_more": "اقرأ المزيد",
"status.reblog": "رَقِّي", "status.reblog": "رَقِّي",
@ -375,7 +375,7 @@
"status.show_thread": "الكشف عن المحادثة", "status.show_thread": "الكشف عن المحادثة",
"status.uncached_media_warning": "غير متوفر", "status.uncached_media_warning": "غير متوفر",
"status.unmute_conversation": "فك الكتم عن المحادثة", "status.unmute_conversation": "فك الكتم عن المحادثة",
"status.unpin": "فك التدبيس من الملف الشخصي", "status.unpin": "فك التدبيس من الصفحة التعريفية",
"suggestions.dismiss": "إلغاء الاقتراح", "suggestions.dismiss": "إلغاء الاقتراح",
"suggestions.header": "يمكن أن يهمك…", "suggestions.header": "يمكن أن يهمك…",
"tabs_bar.federated_timeline": "الموحَّد", "tabs_bar.federated_timeline": "الموحَّد",
@ -404,7 +404,7 @@
"upload_modal.detect_text": "Detect text from picture", "upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "تعديل الوسائط", "upload_modal.edit_media": "تعديل الوسائط",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "معاينة ({ratio})",
"upload_progress.label": "يرفع...", "upload_progress.label": "يرفع...",
"video.close": "إغلاق الفيديو", "video.close": "إغلاق الفيديو",
"video.exit_fullscreen": "الخروج من وضع الشاشة المليئة", "video.exit_fullscreen": "الخروج من وضع الشاشة المليئة",

View File

@ -111,10 +111,10 @@
"confirmations.reply.message": "Risponde avà sguasserà u missaghju chì scrivite. Site sicuru·a chì vulete cuntinuà?", "confirmations.reply.message": "Risponde avà sguasserà u missaghju chì scrivite. Site sicuru·a chì vulete cuntinuà?",
"confirmations.unfollow.confirm": "Disabbunassi", "confirmations.unfollow.confirm": "Disabbunassi",
"confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?", "confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?",
"conversation.delete": "Delete conversation", "conversation.delete": "Sguassà a cunversazione",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Marcà cum'è lettu",
"conversation.open": "View conversation", "conversation.open": "Vede a cunversazione",
"conversation.with": "With {names}", "conversation.with": " {names}",
"directory.federated": "Da u fediverse cunisciutu", "directory.federated": "Da u fediverse cunisciutu",
"directory.local": "Solu da {domain}", "directory.local": "Solu da {domain}",
"directory.new_arrivals": "Ultimi arrivi", "directory.new_arrivals": "Ultimi arrivi",

View File

@ -4,7 +4,7 @@
"account.block": "Blocio @{name}", "account.block": "Blocio @{name}",
"account.block_domain": "Cuddio popeth rhag {domain}", "account.block_domain": "Cuddio popeth rhag {domain}",
"account.blocked": "Blociwyd", "account.blocked": "Blociwyd",
"account.cancel_follow_request": "Cancel follow request", "account.cancel_follow_request": "Canslo cais dilyn",
"account.direct": "Neges breifat @{name}", "account.direct": "Neges breifat @{name}",
"account.domain_blocked": "Parth wedi ei guddio", "account.domain_blocked": "Parth wedi ei guddio",
"account.edit_profile": "Golygu proffil", "account.edit_profile": "Golygu proffil",
@ -16,7 +16,7 @@
"account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
"account.follows_you": "Yn eich dilyn chi", "account.follows_you": "Yn eich dilyn chi",
"account.hide_reblogs": "Cuddio bwstiau o @{name}", "account.hide_reblogs": "Cuddio bwstiau o @{name}",
"account.last_status": "Last active", "account.last_status": "Gweithredol olaf",
"account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}", "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}",
"account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.", "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.",
"account.media": "Cyfryngau", "account.media": "Cyfryngau",
@ -38,11 +38,11 @@
"account.unfollow": "Dad-ddilyn", "account.unfollow": "Dad-ddilyn",
"account.unmute": "Dad-dawelu @{name}", "account.unmute": "Dad-dawelu @{name}",
"account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}", "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited", "alert.rate_limited.title": "Cyfradd gyfyngedig",
"alert.unexpected.message": "Digwyddodd gwall annisgwyl.", "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
"alert.unexpected.title": "Wps!", "alert.unexpected.title": "Wps!",
"autosuggest_hashtag.per_week": "{count} per week", "autosuggest_hashtag.per_week": "{count} yr wythnos",
"boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa", "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa",
"bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.", "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
"bundle_column_error.retry": "Ceisiwch eto", "bundle_column_error.retry": "Ceisiwch eto",
@ -53,7 +53,7 @@
"column.blocks": "Defnyddwyr a flociwyd", "column.blocks": "Defnyddwyr a flociwyd",
"column.community": "Ffrwd lleol", "column.community": "Ffrwd lleol",
"column.direct": "Negeseuon preifat", "column.direct": "Negeseuon preifat",
"column.directory": "Browse profiles", "column.directory": "Pori proffiliau",
"column.domain_blocks": "Parthau cuddiedig", "column.domain_blocks": "Parthau cuddiedig",
"column.favourites": "Ffefrynnau", "column.favourites": "Ffefrynnau",
"column.follow_requests": "Ceisiadau dilyn", "column.follow_requests": "Ceisiadau dilyn",
@ -102,7 +102,7 @@
"confirmations.domain_block.confirm": "Cuddio parth cyfan", "confirmations.domain_block.confirm": "Cuddio parth cyfan",
"confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.", "confirmations.domain_block.message": "A ydych yn hollol, hollol sicr eich bod am flocio y {domain} cyfan? Yn y nifer helaeth o achosion mae blocio neu tawelu ambell gyfrif yn ddigonol ac yn well. Ni fyddwch yn gweld cynnwys o'r parth hwnnw mewn unrhyw ffrydiau cyhoeddus na chwaith yn eich hysbysiadau. Bydd hyn yn cael gwared o'ch dilynwyr o'r parth hwnnw.",
"confirmations.logout.confirm": "Allgofnodi", "confirmations.logout.confirm": "Allgofnodi",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "Ydych chi'n siŵr eich bod am allgofnodi?",
"confirmations.mute.confirm": "Tawelu", "confirmations.mute.confirm": "Tawelu",
"confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?", "confirmations.mute.message": "Ydych chi'n sicr eich bod am ddistewi {name}?",
"confirmations.redraft.confirm": "Dileu & ailddrafftio", "confirmations.redraft.confirm": "Dileu & ailddrafftio",
@ -111,14 +111,14 @@
"confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n sicr yr ydych am barhau?", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n sicr yr ydych am barhau?",
"confirmations.unfollow.confirm": "Dad-ddilynwch", "confirmations.unfollow.confirm": "Dad-ddilynwch",
"confirmations.unfollow.message": "Ydych chi'n sicr eich bod am ddad-ddilyn {name}?", "confirmations.unfollow.message": "Ydych chi'n sicr eich bod am ddad-ddilyn {name}?",
"conversation.delete": "Delete conversation", "conversation.delete": "Dileu sgwrs",
"conversation.mark_as_read": "Nodi fel wedi'i ddarllen", "conversation.mark_as_read": "Nodi fel wedi'i ddarllen",
"conversation.open": "View conversation", "conversation.open": "Gweld sgwrs",
"conversation.with": "With {names}", "conversation.with": "Gyda {names}",
"directory.federated": "From known fediverse", "directory.federated": "O ffedysawd hysbys",
"directory.local": "From {domain} only", "directory.local": "O {domain} yn unig",
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "Newydd-ddyfodiaid",
"directory.recently_active": "Recently active", "directory.recently_active": "Yn weithredol yn ddiweddar",
"embed.instructions": "Mewnblannwch y tŵt hwn ar eich gwefan drwy gopïo'r côd isod.", "embed.instructions": "Mewnblannwch y tŵt hwn ar eich gwefan drwy gopïo'r côd isod.",
"embed.preview": "Dyma sut olwg fydd arno:", "embed.preview": "Dyma sut olwg fydd arno:",
"emoji_button.activity": "Gweithgarwch", "emoji_button.activity": "Gweithgarwch",
@ -174,7 +174,7 @@
"home.column_settings.basic": "Syml", "home.column_settings.basic": "Syml",
"home.column_settings.show_reblogs": "Dangos bŵstiau", "home.column_settings.show_reblogs": "Dangos bŵstiau",
"home.column_settings.show_replies": "Dangos ymatebion", "home.column_settings.show_replies": "Dangos ymatebion",
"home.column_settings.update_live": "Update in real-time", "home.column_settings.update_live": "Diweddariad mewn amser real",
"intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}", "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}",
"intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
"intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@ -240,7 +240,7 @@
"lists.new.title_placeholder": "Teitl rhestr newydd", "lists.new.title_placeholder": "Teitl rhestr newydd",
"lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn",
"lists.subheading": "Eich rhestrau", "lists.subheading": "Eich rhestrau",
"load_pending": "{count, plural, one {# new item} other {# new items}}", "load_pending": "{count, plural, one {# eitem newydd} other {# eitemau newydd}}",
"loading_indicator.label": "Llwytho...", "loading_indicator.label": "Llwytho...",
"media_gallery.toggle_visible": "Toglo gwelededd", "media_gallery.toggle_visible": "Toglo gwelededd",
"missing_indicator.label": "Heb ei ganfod", "missing_indicator.label": "Heb ei ganfod",
@ -268,7 +268,7 @@
"navigation_bar.preferences": "Dewisiadau", "navigation_bar.preferences": "Dewisiadau",
"navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
"navigation_bar.security": "Diogelwch", "navigation_bar.security": "Diogelwch",
"notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.and_n_others": "a {count, plural, one {# arall} other {# eraill}}",
"notification.favourite": "hoffodd {name} eich tŵt", "notification.favourite": "hoffodd {name} eich tŵt",
"notification.follow": "dilynodd {name} chi", "notification.follow": "dilynodd {name} chi",
"notification.mention": "Soniodd {name} amdanoch chi", "notification.mention": "Soniodd {name} amdanoch chi",
@ -334,7 +334,7 @@
"search_results.accounts": "Pobl", "search_results.accounts": "Pobl",
"search_results.hashtags": "Hanshnodau", "search_results.hashtags": "Hanshnodau",
"search_results.statuses": "Tŵtiau", "search_results.statuses": "Tŵtiau",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.statuses_fts_disabled": "Nid yw chwilio Tŵtiau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}",
"status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio", "status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio",
@ -373,7 +373,7 @@
"status.show_more": "Dangos mwy", "status.show_more": "Dangos mwy",
"status.show_more_all": "Dangos mwy i bawb", "status.show_more_all": "Dangos mwy i bawb",
"status.show_thread": "Dangos edefyn", "status.show_thread": "Dangos edefyn",
"status.uncached_media_warning": "Not available", "status.uncached_media_warning": "Dim ar gael",
"status.unmute_conversation": "Dad-dawelu sgwrs", "status.unmute_conversation": "Dad-dawelu sgwrs",
"status.unpin": "Dadbinio o'r proffil", "status.unpin": "Dadbinio o'r proffil",
"suggestions.dismiss": "Diswyddo", "suggestions.dismiss": "Diswyddo",
@ -389,7 +389,7 @@
"time_remaining.moments": "Munudau ar ôl", "time_remaining.moments": "Munudau ar ôl",
"time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl", "time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl",
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad", "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
"trends.trending_now": "Trending now", "trends.trending_now": "Yn tueddu nawr",
"ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.", "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.",
"upload_area.title": "Llusgwch & gollwing i uwchlwytho", "upload_area.title": "Llusgwch & gollwing i uwchlwytho",
"upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
@ -398,13 +398,13 @@
"upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg", "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
"upload_form.edit": "Golygu", "upload_form.edit": "Golygu",
"upload_form.undo": "Dileu", "upload_form.undo": "Dileu",
"upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.analyzing_picture": "Dadansoddi llun…",
"upload_modal.apply": "Apply", "upload_modal.apply": "Gweithredu",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau",
"upload_modal.detect_text": "Detect text from picture", "upload_modal.detect_text": "Canfod testun o'r llun",
"upload_modal.edit_media": "Edit media", "upload_modal.edit_media": "Golygu cyfryngau",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.hint": "Cliciwch neu llusgwch y cylch ar y rhagolwg i ddewis y canolbwynt a fydd bob amser i'w weld ar bob mân-lunau.",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "Rhagolwg ({ratio})",
"upload_progress.label": "Uwchlwytho...", "upload_progress.label": "Uwchlwytho...",
"video.close": "Cau fideo", "video.close": "Cau fideo",
"video.exit_fullscreen": "Gadael sgrîn llawn", "video.exit_fullscreen": "Gadael sgrîn llawn",

View File

@ -1,7 +1,7 @@
{ {
"account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες", "account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες",
"account.badges.bot": "Μποτ", "account.badges.bot": "Μποτ",
"account.block": "Αποκλισμός @{name}", "account.block": "Αποκλεισμός @{name}",
"account.block_domain": "Απόκρυψε τα πάντα από το {domain}", "account.block_domain": "Απόκρυψε τα πάντα από το {domain}",
"account.blocked": "Αποκλεισμένος/η", "account.blocked": "Αποκλεισμένος/η",
"account.cancel_follow_request": "Ακύρωση αιτήματος παρακολούθησης", "account.cancel_follow_request": "Ακύρωση αιτήματος παρακολούθησης",
@ -111,10 +111,10 @@
"confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;", "confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;",
"confirmations.unfollow.confirm": "Διακοπή παρακολούθησης", "confirmations.unfollow.confirm": "Διακοπή παρακολούθησης",
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};", "confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
"conversation.delete": "Delete conversation", "conversation.delete": "Διαγραφή συζήτησης",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
"conversation.open": "View conversation", "conversation.open": "Προβολή συνομιλίας",
"conversation.with": "With {names}", "conversation.with": "Με {names}",
"directory.federated": "Από το γνωστό fediverse", "directory.federated": "Από το γνωστό fediverse",
"directory.local": "Μόνο από {domain}", "directory.local": "Μόνο από {domain}",
"directory.new_arrivals": "Νέες αφίξεις", "directory.new_arrivals": "Νέες αφίξεις",
@ -131,7 +131,7 @@
"emoji_button.objects": "Αντικείμενα", "emoji_button.objects": "Αντικείμενα",
"emoji_button.people": "Άνθρωποι", "emoji_button.people": "Άνθρωποι",
"emoji_button.recent": "Δημοφιλή", "emoji_button.recent": "Δημοφιλή",
"emoji_button.search": "Αναζήτηση", "emoji_button.search": "Αναζήτηση...",
"emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.search_results": "Αποτελέσματα αναζήτησης",
"emoji_button.symbols": "Σύμβολα", "emoji_button.symbols": "Σύμβολα",
"emoji_button.travel": "Ταξίδια & Τοποθεσίες", "emoji_button.travel": "Ταξίδια & Τοποθεσίες",
@ -392,7 +392,7 @@
"trends.trending_now": "Δημοφιλή τώρα", "trends.trending_now": "Δημοφιλή τώρα",
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.", "ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.",
"upload_area.title": "Drag & drop για να ανεβάσεις", "upload_area.title": "Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε πολυμέσα (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Πρόσθεσε πολυμέσα ({formats})",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.", "upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
"upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.", "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
"upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης", "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",

View File

@ -1,5 +1,5 @@
{ {
"account.add_or_remove_from_list": "Agregar o eliminar de listas", "account.add_or_remove_from_list": "Agregar o quitar de las listas",
"account.badges.bot": "Bot", "account.badges.bot": "Bot",
"account.block": "Bloquear a @{name}", "account.block": "Bloquear a @{name}",
"account.block_domain": "Ocultar todo de {domain}", "account.block_domain": "Ocultar todo de {domain}",
@ -8,126 +8,126 @@
"account.direct": "Mensaje directo a @{name}", "account.direct": "Mensaje directo a @{name}",
"account.domain_blocked": "Dominio oculto", "account.domain_blocked": "Dominio oculto",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
"account.endorse": "Mostrar en perfil", "account.endorse": "Destacar en el perfil",
"account.follow": "Seguir", "account.follow": "Seguir",
"account.followers": "Seguidores", "account.followers": "Seguidores",
"account.followers.empty": "Todavía nadie sigue a este usuario.", "account.followers.empty": "Todavía nadie sigue a este usuario.",
"account.follows": "Sigue", "account.follows": "Sigue",
"account.follows.empty": "Este usuario todavía no sigue a nadie.", "account.follows.empty": "Todavía este usuario no sigue a nadie.",
"account.follows_you": "Te sigue", "account.follows_you": "Te sigue",
"account.hide_reblogs": "Ocultar retoots de @{name}", "account.hide_reblogs": "Ocultar retoots de @{name}",
"account.last_status": "Última actividad", "account.last_status": "Última actividad",
"account.link_verified_on": "El proprietario de este link fue comprobado el {date}", "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}",
"account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.", "account.locked_info": "El estado de privacidad de esta cuenta está establecido como bloqueado. El propietario manualmente revisa quién puede seguirle.",
"account.media": "Multimedia", "account.media": "Medios",
"account.mention": "Mencionar a @{name}", "account.mention": "Mencionar a @{name}",
"account.moved_to": "{name} se ha mudado a:", "account.moved_to": "{name} se ha muó a:",
"account.mute": "Silenciar a @{name}", "account.mute": "Silenciar a @{name}",
"account.mute_notifications": "Silenciar notificaciones de @{name}", "account.mute_notifications": "Silenciar notificaciones de @{name}",
"account.muted": "Silenciado", "account.muted": "Silenciado",
"account.never_active": "Nunca", "account.never_active": "Nunca",
"account.posts": "Toots", "account.posts": "Toots",
"account.posts_with_replies": "Toots con respuestas", "account.posts_with_replies": "Toots con respuestas",
"account.report": "Reportar a @{name}", "account.report": "Denunciar a @{name}",
"account.requested": "Esperando aprobación", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento.",
"account.share": "Compartir el perfil de @{name}", "account.share": "Compartir el perfil de @{name}",
"account.show_reblogs": "Mostrar retoots de @{name}", "account.show_reblogs": "Mostrar retoots de @{name}",
"account.unblock": "Desbloquear a @{name}", "account.unblock": "Desbloquear a @{name}",
"account.unblock_domain": "Mostrar a {domain}", "account.unblock_domain": "Mostrar {domain}",
"account.unendorse": "No mostrar en el perfil", "account.unendorse": "No destacar en el perfil",
"account.unfollow": "Dejar de seguir", "account.unfollow": "Dejar de seguir",
"account.unmute": "Dejar de silenciar a @{name}", "account.unmute": "Dejar de silenciar a @{name}",
"account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
"alert.rate_limited.message": "Por favor reintente después de {retry_time, time, medium}.", "alert.rate_limited.message": "Por favor, reintentá después de las {retry_time, time, medium}.",
"alert.rate_limited.title": "Tarifa limitada", "alert.rate_limited.title": "Tarifa limitada",
"alert.unexpected.message": "Hubo un error inesperado.", "alert.unexpected.message": "Ocurrió un error inesperado.",
"alert.unexpected.title": Ups!", "alert.unexpected.title": Epa!",
"autosuggest_hashtag.per_week": "{count} por semana", "autosuggest_hashtag.per_week": "{count} por semana",
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez", "boost_modal.combo": "Podés hacer clic en {combo} para saltar esto la próxima vez",
"bundle_column_error.body": "Algo salió mal al cargar este componente.", "bundle_column_error.body": "Algo salió mal al cargar este componente.",
"bundle_column_error.retry": "Inténtalo de nuevo", "bundle_column_error.retry": "Intentá de nuevo",
"bundle_column_error.title": "Error de red", "bundle_column_error.title": "Error de red",
"bundle_modal_error.close": "Cerrar", "bundle_modal_error.close": "Cerrar",
"bundle_modal_error.message": "Algo salió mal al cargar este componente.", "bundle_modal_error.message": "Algo salió mal al cargar este componente.",
"bundle_modal_error.retry": "Inténtalo de nuevo", "bundle_modal_error.retry": "Intentá de nuevo",
"column.blocks": "Usuarios bloqueados", "column.blocks": "Usuarios bloqueados",
"column.community": "Línea de tiempo local", "column.community": "Línea temporal local",
"column.direct": "Mensajes directos", "column.direct": "Mensajes directos",
"column.directory": "Buscar perfiles", "column.directory": "Explorar perfiles",
"column.domain_blocks": "Dominios ocultados", "column.domain_blocks": "Dominios ocultos",
"column.favourites": "Favoritos", "column.favourites": "Favoritos",
"column.follow_requests": "Solicitudes de seguimiento", "column.follow_requests": "Solicitudes de seguimiento",
"column.home": "Inicio", "column.home": "Principal",
"column.lists": "Listas", "column.lists": "Listas",
"column.mutes": "Usuarios silenciados", "column.mutes": "Usuarios silenciados",
"column.notifications": "Notificaciones", "column.notifications": "Notificaciones",
"column.pins": "Toots fijados", "column.pins": "Toots fijados",
"column.public": "Línea de tiempo federada", "column.public": "Línea temporal federada",
"column.status": "Toot", "column.status": "Toot",
"column_back_button.label": "Atrás", "column_back_button.label": "Volver",
"column_header.hide_settings": "Ocultar configuración", "column_header.hide_settings": "Ocultar configuración",
"column_header.moveLeft_settings": "Mover columna a la izquierda", "column_header.moveLeft_settings": "Mover columna a la izquierda",
"column_header.moveRight_settings": "Mover columna a la derecha", "column_header.moveRight_settings": "Mover columna a la derecha",
"column_header.pin": "Fijar", "column_header.pin": "Fijar",
"column_header.show_settings": "Mostrar ajustes", "column_header.show_settings": "Mostrar configuración",
"column_header.unpin": "Dejar de fijar", "column_header.unpin": "Dejar de fijar",
"column_subheading.settings": "Ajustes", "column_subheading.settings": "Configuración",
"community.column_settings.media_only": "Solo media", "community.column_settings.media_only": "Sólo medios",
"compose_form.direct_message_warning": "Este toot solo será enviado a los usuarios mencionados.", "compose_form.direct_message_warning": "Este toot sólo será enviado a los usuarios mencionados.",
"compose_form.direct_message_warning_learn_more": "Aprender mas", "compose_form.direct_message_warning_learn_more": "Aprendé más",
"compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.", "compose_form.hashtag_warning": "Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.",
"compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.", "compose_form.lock_disclaimer": "Tu cuenta no está {locked}. Todos pueden seguirte para ver tus toots marcados como \"sólo para seguidores\".",
"compose_form.lock_disclaimer.lock": "bloqueado", "compose_form.lock_disclaimer.lock": "bloqueada",
"compose_form.placeholder": "¿En qué estás pensando?", "compose_form.placeholder": "¿Qué onda?",
"compose_form.poll.add_option": "Añadir una opción", "compose_form.poll.add_option": "Agregá una opción",
"compose_form.poll.duration": "Duración de la encuesta", "compose_form.poll.duration": "Duración de la encuesta",
"compose_form.poll.option_placeholder": "Elección {number}", "compose_form.poll.option_placeholder": "Opción {number}",
"compose_form.poll.remove_option": "Eliminar esta opción", "compose_form.poll.remove_option": "Quitá esta opción",
"compose_form.publish": "Tootear", "compose_form.publish": "Tootear",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "¡{publish}!",
"compose_form.sensitive.hide": "Marcar multimedia como sensible", "compose_form.sensitive.hide": "Marcar medio como sensible",
"compose_form.sensitive.marked": "Material marcado como sensible", "compose_form.sensitive.marked": "El medio se marcó como sensible",
"compose_form.sensitive.unmarked": "Material no marcado como sensible", "compose_form.sensitive.unmarked": "El medio no está marcado como sensible",
"compose_form.spoiler.marked": "Texto oculto tras la advertencia", "compose_form.spoiler.marked": "El texto está oculto detrás de la advertencia",
"compose_form.spoiler.unmarked": "Texto no oculto", "compose_form.spoiler.unmarked": "El texto no está oculto",
"compose_form.spoiler_placeholder": "Advertencia de contenido", "compose_form.spoiler_placeholder": "Escribí tu advertencia acá",
"confirmation_modal.cancel": "Cancelar", "confirmation_modal.cancel": "Cancelar",
"confirmations.block.block_and_report": "Bloquear y Reportar", "confirmations.block.block_and_report": "Bloquear y denunciar",
"confirmations.block.confirm": "Bloquear", "confirmations.block.confirm": "Bloquear",
"confirmations.block.message": "¿Estás seguro de que quieres bloquear a {name}?", "confirmations.block.message": "¿Estás seguro que querés bloquear a {name}?",
"confirmations.delete.confirm": "Eliminar", "confirmations.delete.confirm": "Eliminar",
"confirmations.delete.message": "¿Estás seguro de que quieres borrar este toot?", "confirmations.delete.message": "¿Estás seguro que querés eliminar este estado?",
"confirmations.delete_list.confirm": "Eliminar", "confirmations.delete_list.confirm": "Eliminar",
"confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?", "confirmations.delete_list.message": "¿Estás seguro que querés eliminar permanentemente esta lista?",
"confirmations.domain_block.confirm": "Ocultar dominio entero", "confirmations.domain_block.confirm": "Ocultar dominio entero",
"confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.", "confirmations.domain_block.message": "¿Estás completamente seguro que querés bloquear el {domain} entero? En la mayoría de los casos, unos cuantos bloqueos y silenciados puntuales son suficientes y preferibles. No vas a ver contenido de ese dominio en ninguna de tus líneas temporales o en tus notificaciones. Tus seguidores de ese dominio serán quitados.",
"confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.confirm": "Cerrar sesión",
"confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?", "confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?",
"confirmations.mute.confirm": "Silenciar", "confirmations.mute.confirm": "Silenciar",
"confirmations.mute.message": "¿Estás seguro de que quieres silenciar a {name}?", "confirmations.mute.message": "¿Estás seguro que querés silenciar a {name}?",
"confirmations.redraft.confirm": "Borrar y volver a borrador", "confirmations.redraft.confirm": "Eliminar toot original y editarlo",
"confirmations.redraft.message": "Estás seguro de que quieres borrar este estado y volverlo a borrador? Perderás todas las respuestas, impulsos y favoritos asociados a él, y las respuestas a la publicación original quedarán huérfanos.", "confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volverlo a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.",
"confirmations.reply.confirm": "Responder", "confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?", "confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?",
"confirmations.unfollow.confirm": "Dejar de seguir", "confirmations.unfollow.confirm": "Dejar de seguir",
"confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?", "confirmations.unfollow.message": "¿Estás seguro que querés dejar de seguir a {name}?",
"conversation.delete": "Borrar conversación", "conversation.delete": "Eliminar conversación",
"conversation.mark_as_read": "Marcar como leído", "conversation.mark_as_read": "Marcar como leído",
"conversation.open": "Ver conversación", "conversation.open": "Ver conversación",
"conversation.with": "Con {names}", "conversation.with": "Con {names}",
"directory.federated": "Desde el fediverso conocido", "directory.federated": "Desde fediverso conocido",
"directory.local": "Sólo de {domain}", "directory.local": "Sólo de {domain}",
"directory.new_arrivals": "Recién llegados", "directory.new_arrivals": "Recién llegados",
"directory.recently_active": "Recientemente activo", "directory.recently_active": "Recientemente activo",
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.", "embed.instructions": "Insertá este toot a tu sitio web copiando el código de abajo.",
"embed.preview": "Así es como se verá:", "embed.preview": "Así es cómo se verá:",
"emoji_button.activity": "Actividad", "emoji_button.activity": "Actividad",
"emoji_button.custom": "Personalizado", "emoji_button.custom": "Personalizado",
"emoji_button.flags": "Marcas", "emoji_button.flags": "Banderas",
"emoji_button.food": "Comida y bebida", "emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji", "emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza", "emoji_button.nature": "Naturaleza",
"emoji_button.not_found": "No hay emojos!! (╯°□°)╯︵ ┻━┻", "emoji_button.not_found": "¡¡No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos", "emoji_button.objects": "Objetos",
"emoji_button.people": "Gente", "emoji_button.people": "Gente",
"emoji_button.recent": "Usados frecuentemente", "emoji_button.recent": "Usados frecuentemente",
@ -137,282 +137,282 @@
"emoji_button.travel": "Viajes y lugares", "emoji_button.travel": "Viajes y lugares",
"empty_column.account_timeline": "¡No hay toots aquí!", "empty_column.account_timeline": "¡No hay toots aquí!",
"empty_column.account_unavailable": "Perfil no disponible", "empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!",
"empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.", "empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.",
"empty_column.domain_blocks": "Todavía no hay dominios ocultos.", "empty_column.domain_blocks": "Todavía no hay dominios ocultos.",
"empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.", "empty_column.favourited_statuses": "Todavía no tenés toots favoritos. Cuando marqués uno como favorito, se mostrará acá.",
"empty_column.favourites": "Nadie ha marcado este toot como preferido. Cuando alguien lo haga, aparecerá aquí.", "empty_column.favourites": "Todavía nadie marcó este toot como favorito. Cuando alguien lo haga, se mostrará acá.",
"empty_column.follow_requests": "No tienes ninguna petición de seguidor. Cuando recibas una, se mostrará aquí.", "empty_column.follow_requests": "Todavía no tenés ninguna solicitud de seguimiento. Cuando recibás una, se mostrará acá.",
"empty_column.hashtag": "No hay nada en este hashtag aún.", "empty_column.hashtag": "Todavía no hay nada con esta etiqueta.",
"empty_column.home": "No estás siguiendo a nadie aún. Visita {public} o haz búsquedas para empezar y conocer gente nueva.", "empty_column.home": "¡Tu línea temporal principal está vacía! Visitá {public} o usá la búsqueda para comenzar y encontrar a otros usuarios.",
"empty_column.home.public_timeline": "la línea de tiempo pública", "empty_column.home.public_timeline": "la línea temporal pública",
"empty_column.list": "No hay nada en esta lista aún. Cuando miembros de esta lista publiquen nuevos estatus, estos aparecerán qui.", "empty_column.list": "Todavía no hay nada en esta lista. Cuando miembros de esta lista envíen nuevos toots, se mostrarán acá.",
"empty_column.lists": "No tienes ninguna lista. cuando crees una, se mostrará aquí.", "empty_column.lists": "Todavía no tienes ninguna lista. Cuando creés una, se mostrará acá.",
"empty_column.mutes": "Aún no has silenciado a ningún usuario.", "empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.", "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
"empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
"follow_request.authorize": "Autorizar", "follow_request.authorize": "Authorize",
"follow_request.reject": "Rechazar", "follow_request.reject": "Reject",
"getting_started.developers": "Desarrolladores", "getting_started.developers": "Developers",
"getting_started.directory": "Directorio de perfil", "getting_started.directory": "Profile directory",
"getting_started.documentation": "Documentación", "getting_started.documentation": "Documentation",
"getting_started.heading": "Primeros pasos", "getting_started.heading": "Getting started",
"getting_started.invite": "Invitar usuarios", "getting_started.invite": "Invite people",
"getting_started.open_source_notice": "Mastodon es software libre. Puedes contribuir o reportar errores en {github}.", "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.security": "Seguridad", "getting_started.security": "Security",
"getting_started.terms": "Términos de servicio", "getting_started.terms": "Terms of service",
"hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.all": "and {additional}",
"hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.any": "or {additional}",
"hashtag.column_header.tag_mode.none": "sin {additional}", "hashtag.column_header.tag_mode.none": "without {additional}",
"hashtag.column_settings.select.no_options_message": "No se encontraron sugerencias", "hashtag.column_settings.select.no_options_message": "No suggestions found",
"hashtag.column_settings.select.placeholder": "Introduzca hashtags…", "hashtag.column_settings.select.placeholder": "Enter hashtags…",
"hashtag.column_settings.tag_mode.all": "Cualquiera de estos", "hashtag.column_settings.tag_mode.all": "All of these",
"hashtag.column_settings.tag_mode.any": "Cualquiera de estos", "hashtag.column_settings.tag_mode.any": "Any of these",
"hashtag.column_settings.tag_mode.none": "Ninguno de estos", "hashtag.column_settings.tag_mode.none": "None of these",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column", "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Mostrar respuestas", "home.column_settings.show_replies": "Show replies",
"home.column_settings.update_live": "Actualizar en tiempo real", "home.column_settings.update_live": "Update in real-time",
"intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"introduction.federation.action": "Siguiente", "introduction.federation.action": "Next",
"introduction.federation.federated.headline": "Federado", "introduction.federation.federated.headline": "Federated",
"introduction.federation.federated.text": "Los mensajes públicos de otros servidores del fediverso aparecerán en la cronología federada.", "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
"introduction.federation.home.headline": "Inicio", "introduction.federation.home.headline": "Home",
"introduction.federation.home.text": "Los posts de personas que sigues aparecerán en tu cronología. ¡Puedes seguir a cualquiera en cualquier servidor!", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "Local", "introduction.federation.local.headline": "Local",
"introduction.federation.local.text": "Los posts públicos de personas en el mismo servidor que aparecerán en la cronología local.", "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
"introduction.interactions.action": "¡Terminar tutorial!", "introduction.interactions.action": "Finish toot-orial!",
"introduction.interactions.favourite.headline": "Favorito", "introduction.interactions.favourite.headline": "Favourite",
"introduction.interactions.favourite.text": "Puedes guardar un toot para más tarde, y hacer saber al autor que te gustó, dándole a favorito.", "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
"introduction.interactions.reblog.headline": "Retootear", "introduction.interactions.reblog.headline": "Boost",
"introduction.interactions.reblog.text": "Puedes compartir los toots de otras personas con tus seguidores retooteando los mismos.", "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
"introduction.interactions.reply.headline": "Responder", "introduction.interactions.reply.headline": "Reply",
"introduction.interactions.reply.text": "Puedes responder a tus propios toots y los de otras personas, que se encadenarán juntos en una conversación.", "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
"introduction.welcome.action": "¡Vamos!", "introduction.welcome.action": "Let's go!",
"introduction.welcome.headline": "Primeros pasos", "introduction.welcome.headline": "First steps",
"introduction.welcome.text": "¡Bienvenido al fediverso! En unos momentos, podrás transmitir mensajes y hablar con tus amigos a través de una amplia variedad de servidores. Pero este servidor, {domain}, es especial, alberga tu perfil, así que recuerda su nombre.", "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
"keyboard_shortcuts.back": "volver atrás", "keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "abrir una lista de usuarios bloqueados", "keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "retootear", "keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "enfocar un estado en una de las columnas", "keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "enfocar el área de texto de redacción", "keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Descripción", "keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "abrir la columna de mensajes directos", "keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "mover hacia abajo en la lista", "keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "abrir estado", "keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "añadir a favoritos", "keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourites": "abrir la lista de favoritos", "keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "abrir el timeline federado", "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts", "keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "abrir el timeline propio", "keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Tecla caliente", "keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "para mostrar esta leyenda", "keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "abrir el timeline local", "keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "para mencionar al autor", "keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "abrir la lista de usuarios silenciados", "keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "abrir tu perfil", "keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "abrir la columna de notificaciones", "keyboard_shortcuts.notifications": "to open notifications column",
"keyboard_shortcuts.pinned": "abrir la lista de toots destacados", "keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "abrir el perfil del autor", "keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "para responder", "keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "abrir la lista de peticiones de seguidores", "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "para poner el foco en la búsqueda", "keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.start": "abrir la columna \"comenzar\"", "keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "para comenzar un nuevo toot", "keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "para ir hacia arriba en la lista", "keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Cerrar", "lightbox.close": "Close",
"lightbox.next": "Siguiente", "lightbox.next": "Next",
"lightbox.previous": "Anterior", "lightbox.previous": "Previous",
"lightbox.view_context": "Ver contexto", "lightbox.view_context": "View context",
"lists.account.add": "Añadir a lista", "lists.account.add": "Add to list",
"lists.account.remove": "Quitar de lista", "lists.account.remove": "Remove from list",
"lists.delete": "Borrar lista", "lists.delete": "Delete list",
"lists.edit": "Editar lista", "lists.edit": "Edit list",
"lists.edit.submit": "Cambiar título", "lists.edit.submit": "Change title",
"lists.new.create": "Añadir lista", "lists.new.create": "Add list",
"lists.new.title_placeholder": "Título de la nueva lista", "lists.new.title_placeholder": "New list title",
"lists.search": "Buscar entre la gente a la que sigues", "lists.search": "Search among people you follow",
"lists.subheading": "Tus listas", "lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}", "load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Cargando…", "loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Cambiar visibilidad", "media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "No encontrado", "missing_indicator.label": "Not found",
"missing_indicator.sublabel": "No se encontró este recurso", "missing_indicator.sublabel": "This resource could not be found",
"mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.apps": "Aplicaciones móviles", "navigation_bar.apps": "Mobile apps",
"navigation_bar.blocks": "Usuarios bloqueados", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Historia local", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Escribir un nuevo toot", "navigation_bar.compose": "Compose new toot",
"navigation_bar.direct": "Mensajes directos", "navigation_bar.direct": "Direct messages",
"navigation_bar.discover": "Descubrir", "navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Dominios ocultos", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Editar perfil", "navigation_bar.edit_profile": "Edit profile",
"navigation_bar.favourites": "Favoritos", "navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Palabras silenciadas", "navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Solicitudes para seguirte", "navigation_bar.follow_requests": "Follow requests",
"navigation_bar.follows_and_followers": "Siguiendo y seguidores", "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "Información adicional", "navigation_bar.info": "About this server",
"navigation_bar.keyboard_shortcuts": "Atajos", "navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Listas", "navigation_bar.lists": "Lists",
"navigation_bar.logout": "Cerrar sesión", "navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal", "navigation_bar.personal": "Personal",
"navigation_bar.pins": "Toots fijados", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferencias", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Historia federada", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Seguridad", "navigation_bar.security": "Security",
"notification.and_n_others": "y {count, plural, one {# otro} other {# otros}}", "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
"notification.favourite": "{name} marcó tu estado como favorito", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} te empezó a seguir", "notification.follow": "{name} followed you",
"notification.mention": "{name} te ha mencionado", "notification.mention": "{name} mentioned you",
"notification.poll": "Una encuesta en la que has votado ha terminado", "notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} ha retooteado tu estado", "notification.reblog": "{name} boosted your status",
"notifications.clear": "Limpiar notificaciones", "notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Notificaciones de escritorio", "notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.favourite": "Favourites:",
"notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías", "notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.category": "Barra de filtrado rápido", "notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Mostrar", "notifications.column_settings.filter_bar.show": "Show",
"notifications.column_settings.follow": "Nuevos seguidores:", "notifications.column_settings.follow": "New followers:",
"notifications.column_settings.mention": "Menciones:", "notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Resultados de la votación:", "notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Notificaciones push", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Retoots:", "notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Mostrar en columna", "notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Reproducir sonido", "notifications.column_settings.sound": "Play sound",
"notifications.filter.all": "Todos", "notifications.filter.all": "All",
"notifications.filter.boosts": "Retoots", "notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favoritos", "notifications.filter.favourites": "Favourites",
"notifications.filter.follows": "Seguidores", "notifications.filter.follows": "Follows",
"notifications.filter.mentions": "Menciones", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Resultados de la votación", "notifications.filter.polls": "Poll results",
"notifications.group": "{count} notificaciones", "notifications.group": "{count} notifications",
"poll.closed": "Cerrada", "poll.closed": "Closed",
"poll.refresh": "Actualizar", "poll.refresh": "Refresh",
"poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Votar", "poll.vote": "Vote",
"poll_button.add_poll": "Añadir una encuesta", "poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Eliminar encuesta", "poll_button.remove_poll": "Remove poll",
"privacy.change": "Ajustar privacidad", "privacy.change": "Adjust status privacy",
"privacy.direct.long": "Sólo mostrar a los usuarios mencionados", "privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Directo", "privacy.direct.short": "Direct",
"privacy.private.long": "Sólo mostrar a seguidores", "privacy.private.long": "Post to followers only",
"privacy.private.short": "Privado", "privacy.private.short": "Followers-only",
"privacy.public.long": "Mostrar en la historia federada", "privacy.public.long": "Post to public timelines",
"privacy.public.short": "Público", "privacy.public.short": "Public",
"privacy.unlisted.long": "No mostrar en la historia federada", "privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "No listado", "privacy.unlisted.short": "Unlisted",
"regeneration_indicator.label": "Cargando…", "regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", "regeneration_indicator.sublabel": "Your home feed is being prepared!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "ahora", "relative_time.just_now": "now",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"reply_indicator.cancel": "Cancelar", "reply_indicator.cancel": "Cancel",
"report.forward": "Reenviar a {target}", "report.forward": "Forward to {target}",
"report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "El informe se enviará a los moderadores de tu instancia. Puedes proporcionar una explicación de por qué informas sobre esta cuenta a continuación:", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Comentarios adicionales", "report.placeholder": "Additional comments",
"report.submit": "Publicar", "report.submit": "Submit",
"report.target": "Reportando", "report.target": "Report {target}",
"search.placeholder": "Buscar", "search.placeholder": "Search",
"search_popout.search_format": "Formato de búsqueda avanzada", "search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "etiqueta", "search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "estado", "search_popout.tips.status": "status",
"search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "usuario", "search_popout.tips.user": "user",
"search_results.accounts": "Gente", "search_results.accounts": "People",
"search_results.hashtags": "Etiquetas", "search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots", "search_results.statuses": "Toots",
"search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Abrir este estado en la interfaz de moderación", "status.admin_status": "Open this status in the moderation interface",
"status.block": "Bloquear a @{name}", "status.block": "Block @{name}",
"status.cancel_reblog_private": "Des-impulsar", "status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "Este toot no puede retootearse", "status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copiar enlace al estado", "status.copy": "Copy link to status",
"status.delete": "Borrar", "status.delete": "Delete",
"status.detailed_status": "Vista de conversación detallada", "status.detailed_status": "Detailed conversation view",
"status.direct": "Mensaje directo a @{name}", "status.direct": "Direct message @{name}",
"status.embed": "Incrustado", "status.embed": "Embed",
"status.favourite": "Favorito", "status.favourite": "Favourite",
"status.filtered": "Filtrado", "status.filtered": "Filtered",
"status.load_more": "Cargar más", "status.load_more": "Load more",
"status.media_hidden": "Contenido multimedia oculto", "status.media_hidden": "Media hidden",
"status.mention": "Mencionar", "status.mention": "Mention @{name}",
"status.more": "Más", "status.more": "More",
"status.mute": "Silenciar @{name}", "status.mute": "Mute @{name}",
"status.mute_conversation": "Silenciar conversación", "status.mute_conversation": "Mute conversation",
"status.open": "Expandir estado", "status.open": "Expand this status",
"status.pin": "Fijar", "status.pin": "Pin on profile",
"status.pinned": "Toot fijado", "status.pinned": "Pinned toot",
"status.read_more": "Leer más", "status.read_more": "Read more",
"status.reblog": "Retootear", "status.reblog": "Boost",
"status.reblog_private": "Implusar a la audiencia original", "status.reblog_private": "Boost to original audience",
"status.reblogged_by": "Retooteado por {name}", "status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "Nadie impulsó este toot todavía. Cuando alguien lo haga, aparecerá aqui.", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Borrar y volver a borrador", "status.redraft": "Delete & re-draft",
"status.reply": "Responder", "status.reply": "Reply",
"status.replyAll": "Responder al hilo", "status.replyAll": "Reply to thread",
"status.report": "Reportar", "status.report": "Report @{name}",
"status.sensitive_warning": "Contenido sensible", "status.sensitive_warning": "Sensitive content",
"status.share": "Compartir", "status.share": "Share",
"status.show_less": "Mostrar menos", "status.show_less": "Show less",
"status.show_less_all": "Mostrar menos para todo", "status.show_less_all": "Show less for all",
"status.show_more": "Mostrar más", "status.show_more": "Show more",
"status.show_more_all": "Mostrar más para todo", "status.show_more_all": "Show more for all",
"status.show_thread": "Ver hilo", "status.show_thread": "Show thread",
"status.uncached_media_warning": "No disponible", "status.uncached_media_warning": "Not available",
"status.unmute_conversation": "Dejar de silenciar conversación", "status.unmute_conversation": "Unmute conversation",
"status.unpin": "Dejar de fijar", "status.unpin": "Unpin from profile",
"suggestions.dismiss": "Descartar sugerencia", "suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "Es posible que te interese…", "suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federado", "tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Inicio", "tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Local", "tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Search",
"time_remaining.days": "{number, plural, one {# día restante} other {# días restantes}}", "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hora restante} other {# horas restantes}}", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minuto restante} other {# minutos restantes}}", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Momentos restantes", "time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando", "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
"trends.trending_now": "Tendencia ahora", "trends.trending_now": "Trending now",
"ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"upload_area.title": "Arrastra y suelta para subir", "upload_area.title": "Drag & drop to upload",
"upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Add media ({formats})",
"upload_error.limit": "Límite de subida de archivos excedido.", "upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_error.poll": "File upload not allowed with polls.",
"upload_form.description": "Describir para los usuarios con dificultad visual", "upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Editar", "upload_form.edit": "Edit",
"upload_form.undo": "Borrar", "upload_form.undo": "Delete",
"upload_modal.analyzing_picture": "Analizando imagen…", "upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Aplicar", "upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detectar texto de la imagen", "upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Editar multimedia", "upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Haga clic o arrastre el círculo en la vista previa para elegir el punto focal que siempre estará a la vista en todas las miniaturas.", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Vista previa ({ratio})", "upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Subiendo…", "upload_progress.label": "Uploading...",
"video.close": "Cerrar video", "video.close": "Close video",
"video.exit_fullscreen": "Salir de pantalla completa", "video.exit_fullscreen": "Exit full screen",
"video.expand": "Expandir vídeo", "video.expand": "Expand video",
"video.fullscreen": "Pantalla completa", "video.fullscreen": "Full screen",
"video.hide": "Ocultar vídeo", "video.hide": "Hide video",
"video.mute": "Silenciar sonido", "video.mute": "Mute sound",
"video.pause": "Pausar", "video.pause": "Pause",
"video.play": "Reproducir", "video.play": "Play",
"video.unmute": "Dejar de silenciar sonido" "video.unmute": "Unmute sound"
} }

View File

@ -39,7 +39,7 @@
"account.unmute": "Ne plus masquer @{name}", "account.unmute": "Ne plus masquer @{name}",
"account.unmute_notifications": "Réactiver les notifications de @{name}", "account.unmute_notifications": "Réactiver les notifications de @{name}",
"alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.", "alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.",
"alert.rate_limited.title": "Taux limité", "alert.rate_limited.title": "Débit limité",
"alert.unexpected.message": "Une erreur inattendue sest produite.", "alert.unexpected.message": "Une erreur inattendue sest produite.",
"alert.unexpected.title": "Oups!", "alert.unexpected.title": "Oups!",
"autosuggest_hashtag.per_week": "{count} par semaine", "autosuggest_hashtag.per_week": "{count} par semaine",
@ -70,12 +70,12 @@
"column_header.moveRight_settings": "Déplacer la colonne vers la droite", "column_header.moveRight_settings": "Déplacer la colonne vers la droite",
"column_header.pin": "Épingler", "column_header.pin": "Épingler",
"column_header.show_settings": "Afficher les paramètres", "column_header.show_settings": "Afficher les paramètres",
"column_header.unpin": "Retirer", "column_header.unpin": "Désépingler",
"column_subheading.settings": "Paramètres", "column_subheading.settings": "Paramètres",
"community.column_settings.media_only": "Média uniquement", "community.column_settings.media_only": "Média uniquement",
"compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, ladministration de votre instance et des instances réceptrices pourront inspecter ce message.", "compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, ladministration de votre instance et des instances réceptrices pourront inspecter ce message.",
"compose_form.direct_message_warning_learn_more": "En savoir plus", "compose_form.direct_message_warning_learn_more": "Plus d'informations",
"compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.", "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par mot-clé car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par mot-clé.",
"compose_form.lock_disclaimer": "Votre compte nest pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.", "compose_form.lock_disclaimer": "Votre compte nest pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé", "compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Quavez-vous en tête?", "compose_form.placeholder": "Quavez-vous en tête?",
@ -87,7 +87,7 @@
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marquer le média comme sensible", "compose_form.sensitive.hide": "Marquer le média comme sensible",
"compose_form.sensitive.marked": "Média marqué comme sensible", "compose_form.sensitive.marked": "Média marqué comme sensible",
"compose_form.sensitive.unmarked": "Média non marqué comme sensible", "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.marked": "Le texte est caché derrière un avertissement",
"compose_form.spoiler.unmarked": "Le texte nest pas caché", "compose_form.spoiler.unmarked": "Le texte nest pas caché",
"compose_form.spoiler_placeholder": "Écrivez ici votre avertissement", "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
@ -104,7 +104,7 @@
"confirmations.logout.confirm": "Déconnexion", "confirmations.logout.confirm": "Déconnexion",
"confirmations.logout.message": "Êtes-vous sûr de vouloir vous déconnecter ?", "confirmations.logout.message": "Êtes-vous sûr de vouloir vous déconnecter ?",
"confirmations.mute.confirm": "Masquer", "confirmations.mute.confirm": "Masquer",
"confirmations.mute.message": "Confirmez-vous le masquage de {name}?", "confirmations.mute.message": "Êtes-vous sûr·e de vouloir masquer {name} ?",
"confirmations.redraft.confirm": "Effacer et ré-écrire", "confirmations.redraft.confirm": "Effacer et ré-écrire",
"confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.", "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.",
"confirmations.reply.confirm": "Répondre", "confirmations.reply.confirm": "Répondre",
@ -151,7 +151,7 @@
"empty_column.lists": "Vous navez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", "empty_column.lists": "Vous navez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.",
"empty_column.mutes": "Vous navez pas encore mis d'utilisateur·rice·s en silence.", "empty_column.mutes": "Vous navez pas encore mis d'utilisateur·rice·s en silence.",
"empty_column.notifications": "Vous navez pas encore de notification. Interagissez avec dautres personnes pour débuter la conversation.", "empty_column.notifications": "Vous navez pas encore de notification. Interagissez avec dautres personnes pour débuter la conversation.",
"empty_column.public": "Il ny a rien ici! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes dautres instances pour remplir le fil public", "empty_column.public": "Il ny a rien ici! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes dautres instances pour le remplir",
"follow_request.authorize": "Accepter", "follow_request.authorize": "Accepter",
"follow_request.reject": "Rejeter", "follow_request.reject": "Rejeter",
"getting_started.developers": "Développeur·euse·s", "getting_started.developers": "Développeur·euse·s",
@ -166,12 +166,12 @@
"hashtag.column_header.tag_mode.any": "ou {additional}", "hashtag.column_header.tag_mode.any": "ou {additional}",
"hashtag.column_header.tag_mode.none": "sans {additional}", "hashtag.column_header.tag_mode.none": "sans {additional}",
"hashtag.column_settings.select.no_options_message": "Aucune suggestion trouvée", "hashtag.column_settings.select.no_options_message": "Aucune suggestion trouvée",
"hashtag.column_settings.select.placeholder": "Ajouter des hashtags…", "hashtag.column_settings.select.placeholder": "Ajouter des mots-clés…",
"hashtag.column_settings.tag_mode.all": "Tous ces éléments", "hashtag.column_settings.tag_mode.all": "Tous ces éléments",
"hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments", "hashtag.column_settings.tag_mode.any": "Au moins un de ces éléments",
"hashtag.column_settings.tag_mode.none": "Aucun de ces éléments", "hashtag.column_settings.tag_mode.none": "Aucun de ces éléments",
"hashtag.column_settings.tag_toggle": "Inclure des tags additionnels dans cette colonne", "hashtag.column_settings.tag_toggle": "Inclure des mots-clés additionnels dans cette colonne",
"home.column_settings.basic": "Basique", "home.column_settings.basic": "Base",
"home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_reblogs": "Afficher les partages",
"home.column_settings.show_replies": "Afficher les réponses", "home.column_settings.show_replies": "Afficher les réponses",
"home.column_settings.update_live": "Mettre à jour en temps réel", "home.column_settings.update_live": "Mettre à jour en temps réel",
@ -199,7 +199,7 @@
"keyboard_shortcuts.blocked": "pour ouvrir une liste dutilisateur·rice·s bloqué·e·s", "keyboard_shortcuts.blocked": "pour ouvrir une liste dutilisateur·rice·s bloqué·e·s",
"keyboard_shortcuts.boost": "pour partager", "keyboard_shortcuts.boost": "pour partager",
"keyboard_shortcuts.column": "pour focaliser un statut dans lune des colonnes", "keyboard_shortcuts.column": "pour focaliser un statut dans lune des colonnes",
"keyboard_shortcuts.compose": "pour centrer la zone de rédaction", "keyboard_shortcuts.compose": "pour focaliser la zone de rédaction",
"keyboard_shortcuts.description": "Description", "keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "pour ouvrir une colonne des messages directs", "keyboard_shortcuts.direct": "pour ouvrir une colonne des messages directs",
"keyboard_shortcuts.down": "pour descendre dans la liste", "keyboard_shortcuts.down": "pour descendre dans la liste",

View File

@ -4,7 +4,7 @@
"account.block": "@{name} letiltása", "account.block": "@{name} letiltása",
"account.block_domain": "Minden elrejtése innen: {domain}", "account.block_domain": "Minden elrejtése innen: {domain}",
"account.blocked": "Letiltva", "account.blocked": "Letiltva",
"account.cancel_follow_request": "Cancel follow request", "account.cancel_follow_request": "Követési kérelem törlése",
"account.direct": "Közvetlen üzenet @{name} számára", "account.direct": "Közvetlen üzenet @{name} számára",
"account.domain_blocked": "Rejtett domain", "account.domain_blocked": "Rejtett domain",
"account.edit_profile": "Profil szerkesztése", "account.edit_profile": "Profil szerkesztése",
@ -16,7 +16,7 @@
"account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows.empty": "Ez a felhasználó még senkit sem követ.",
"account.follows_you": "Követ téged", "account.follows_you": "Követ téged",
"account.hide_reblogs": "@{name} megtolásainak némítása", "account.hide_reblogs": "@{name} megtolásainak némítása",
"account.last_status": "Last active", "account.last_status": "Utoljára aktív",
"account.link_verified_on": "A linket ellenőriztük: {date}", "account.link_verified_on": "A linket ellenőriztük: {date}",
"account.locked_info": "Ez a fiók zárt. A tulaj engedélyezi, ki követheti őt.", "account.locked_info": "Ez a fiók zárt. A tulaj engedélyezi, ki követheti őt.",
"account.media": "Média", "account.media": "Média",
@ -25,7 +25,7 @@
"account.mute": "@{name} némítása", "account.mute": "@{name} némítása",
"account.mute_notifications": "@{name} értesítéseinek némítása", "account.mute_notifications": "@{name} értesítéseinek némítása",
"account.muted": "Némítva", "account.muted": "Némítva",
"account.never_active": "Never", "account.never_active": "Soha",
"account.posts": "Tülkölés", "account.posts": "Tülkölés",
"account.posts_with_replies": "Tülkölés válaszokkal", "account.posts_with_replies": "Tülkölés válaszokkal",
"account.report": "@{name} jelentése", "account.report": "@{name} jelentése",
@ -38,11 +38,11 @@
"account.unfollow": "Követés vége", "account.unfollow": "Követés vége",
"account.unmute": "@{name} némítás feloldása", "account.unmute": "@{name} némítás feloldása",
"account.unmute_notifications": "@{name} némított értesítéseinek feloldása", "account.unmute_notifications": "@{name} némított értesítéseinek feloldása",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", "alert.rate_limited.message": "Kérlek, próbáld újra {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited", "alert.rate_limited.title": "Forgalomkorlátozás",
"alert.unexpected.message": "Váratlan hiba történt.", "alert.unexpected.message": "Váratlan hiba történt.",
"alert.unexpected.title": "Hoppá!", "alert.unexpected.title": "Hoppá!",
"autosuggest_hashtag.per_week": "{count} per week", "autosuggest_hashtag.per_week": "{count}/hét",
"boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}", "boost_modal.combo": "Hogy átugord ezt következő alkalommal, használd {combo}",
"bundle_column_error.body": "Hiba történt a komponens betöltése közben.", "bundle_column_error.body": "Hiba történt a komponens betöltése közben.",
"bundle_column_error.retry": "Próbáld újra", "bundle_column_error.retry": "Próbáld újra",
@ -53,7 +53,7 @@
"column.blocks": "Letiltott felhasználók", "column.blocks": "Letiltott felhasználók",
"column.community": "Helyi idővonal", "column.community": "Helyi idővonal",
"column.direct": "Közvetlen üzenetek", "column.direct": "Közvetlen üzenetek",
"column.directory": "Browse profiles", "column.directory": "Profilok böngészése",
"column.domain_blocks": "Rejtett domainek", "column.domain_blocks": "Rejtett domainek",
"column.favourites": "Kedvencek", "column.favourites": "Kedvencek",
"column.follow_requests": "Követési kérelmek", "column.follow_requests": "Követési kérelmek",
@ -63,7 +63,7 @@
"column.notifications": "Értesítések", "column.notifications": "Értesítések",
"column.pins": "Kitűzött tülkök", "column.pins": "Kitűzött tülkök",
"column.public": "Nyilvános idővonal", "column.public": "Nyilvános idővonal",
"column.status": "Toot", "column.status": "Tülk",
"column_back_button.label": "Vissza", "column_back_button.label": "Vissza",
"column_header.hide_settings": "Beállítások elrejtése", "column_header.hide_settings": "Beállítások elrejtése",
"column_header.moveLeft_settings": "Oszlop elmozdítása balra", "column_header.moveLeft_settings": "Oszlop elmozdítása balra",
@ -101,8 +101,8 @@
"confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?", "confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?",
"confirmations.domain_block.confirm": "Teljes domain elrejtése", "confirmations.domain_block.confirm": "Teljes domain elrejtése",
"confirmations.domain_block.message": "Egészen biztos, hogy le szeretnéd tiltani a teljes {domain}-t? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se idővonalakon, se értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.", "confirmations.domain_block.message": "Egészen biztos, hogy le szeretnéd tiltani a teljes {domain}-t? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se idővonalakon, se értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.",
"confirmations.logout.confirm": "Log out", "confirmations.logout.confirm": "Kijelentkezés",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "Biztosan ki akar jelentkezni?",
"confirmations.mute.confirm": "Némítás", "confirmations.mute.confirm": "Némítás",
"confirmations.mute.message": "Biztos, hogy némítani szeretnéd {name}?", "confirmations.mute.message": "Biztos, hogy némítani szeretnéd {name}?",
"confirmations.redraft.confirm": "Törlés és újraírás", "confirmations.redraft.confirm": "Törlés és újraírás",
@ -111,14 +111,14 @@
"confirmations.reply.message": "Ha most válaszolsz, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?", "confirmations.reply.message": "Ha most válaszolsz, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?",
"confirmations.unfollow.confirm": "Követés visszavonása", "confirmations.unfollow.confirm": "Követés visszavonása",
"confirmations.unfollow.message": "Biztos, hogy vissza szeretnéd vonni {name} követését?", "confirmations.unfollow.message": "Biztos, hogy vissza szeretnéd vonni {name} követését?",
"conversation.delete": "Delete conversation", "conversation.delete": "Beszélgetés törlése",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Megjelölés olvasottként",
"conversation.open": "View conversation", "conversation.open": "Beszélgetés megtekintése",
"conversation.with": "With {names}", "conversation.with": "{names}-el/al",
"directory.federated": "From known fediverse", "directory.federated": "Az ismert fediverzumból",
"directory.local": "From {domain} only", "directory.local": "Csak {domain}-ból/ből",
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "Új csatlakozók",
"directory.recently_active": "Recently active", "directory.recently_active": "Nemrég aktív",
"embed.instructions": "Ágyazd be ezt a tülköt a weboldaladba az alábbi kód kimásolásával.", "embed.instructions": "Ágyazd be ezt a tülköt a weboldaladba az alábbi kód kimásolásával.",
"embed.preview": "Így fog kinézni:", "embed.preview": "Így fog kinézni:",
"emoji_button.activity": "Aktivitás", "emoji_button.activity": "Aktivitás",
@ -174,7 +174,7 @@
"home.column_settings.basic": "Alapértelmezések", "home.column_settings.basic": "Alapértelmezések",
"home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_reblogs": "Megtolások mutatása",
"home.column_settings.show_replies": "Válaszok mutatása", "home.column_settings.show_replies": "Válaszok mutatása",
"home.column_settings.update_live": "Update in real-time", "home.column_settings.update_live": "Frissítés valós időben",
"intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}",
"intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}",
"intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}",
@ -268,7 +268,7 @@
"navigation_bar.preferences": "Beállítások", "navigation_bar.preferences": "Beállítások",
"navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.public_timeline": "Föderációs idővonal",
"navigation_bar.security": "Biztonság", "navigation_bar.security": "Biztonság",
"notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.and_n_others": "és {count, plural, one {# másik} other {# másik}}",
"notification.favourite": "{name} kedvencnek jelölte egy tülködet", "notification.favourite": "{name} kedvencnek jelölte egy tülködet",
"notification.follow": "{name} követ téged", "notification.follow": "{name} követ téged",
"notification.mention": "{name} megemlített", "notification.mention": "{name} megemlített",
@ -373,7 +373,7 @@
"status.show_more": "Többet", "status.show_more": "Többet",
"status.show_more_all": "Többet mindenhol", "status.show_more_all": "Többet mindenhol",
"status.show_thread": "Szál mutatása", "status.show_thread": "Szál mutatása",
"status.uncached_media_warning": "Not available", "status.uncached_media_warning": "Nem elérhető",
"status.unmute_conversation": "Beszélgetés némításának kikapcsolása", "status.unmute_conversation": "Beszélgetés némításának kikapcsolása",
"status.unpin": "Kitűzés eltávolítása a profilodról", "status.unpin": "Kitűzés eltávolítása a profilodról",
"suggestions.dismiss": "Javaslat elvetése", "suggestions.dismiss": "Javaslat elvetése",
@ -389,22 +389,22 @@
"time_remaining.moments": "Pillanatok vannak hátra", "time_remaining.moments": "Pillanatok vannak hátra",
"time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra", "time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra",
"trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget", "trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget",
"trends.trending_now": "Trending now", "trends.trending_now": "Most trendi",
"ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodon-t.", "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodon-t.",
"upload_area.title": "Húzd ide a feltöltéshez", "upload_area.title": "Húzd ide a feltöltéshez",
"upload_button.label": "Média hozzáadása (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Média hozzáadása (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Túllépted a fájl feltöltési limitet.", "upload_error.limit": "Túllépted a fájl feltöltési limitet.",
"upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.", "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.",
"upload_form.description": "Leírás látáskorlátozottak számára", "upload_form.description": "Leírás látáskorlátozottak számára",
"upload_form.edit": "Edit", "upload_form.edit": "Szerkesztés",
"upload_form.undo": "Mégsem", "upload_form.undo": "Mégsem",
"upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.analyzing_picture": "Kép elemzése…",
"upload_modal.apply": "Apply", "upload_modal.apply": "Alkalmazás",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött",
"upload_modal.detect_text": "Detect text from picture", "upload_modal.detect_text": "Szöveg felismerése a képről",
"upload_modal.edit_media": "Edit media", "upload_modal.edit_media": "Média szerkesztése",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.hint": "Kattints vagy húzd a kört az előnézetben arra a fókuszpontra, mely minden megjelenített bélyegképen látható kell, legyen.",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "Előnézet ({ratio})",
"upload_progress.label": "Feltöltés...", "upload_progress.label": "Feltöltés...",
"video.close": "Videó bezárása", "video.close": "Videó bezárása",
"video.exit_fullscreen": "Kilépés teljes képernyőből", "video.exit_fullscreen": "Kilépés teljes képernyőből",

View File

@ -53,7 +53,7 @@
"column.blocks": "ブロックしたユーザー", "column.blocks": "ブロックしたユーザー",
"column.community": "ローカルタイムライン", "column.community": "ローカルタイムライン",
"column.direct": "ダイレクトメッセージ", "column.direct": "ダイレクトメッセージ",
"column.directory": "プロフィールを見る", "column.directory": "ディレクトリ",
"column.domain_blocks": "非表示にしたドメイン", "column.domain_blocks": "非表示にしたドメイン",
"column.favourites": "お気に入り", "column.favourites": "お気に入り",
"column.follow_requests": "フォローリクエスト", "column.follow_requests": "フォローリクエスト",
@ -114,7 +114,7 @@
"conversation.delete": "このやりとりを削除", "conversation.delete": "このやりとりを削除",
"conversation.mark_as_read": "既読にする", "conversation.mark_as_read": "既読にする",
"conversation.open": "会話を表示する", "conversation.open": "会話を表示する",
"conversation.with": "{names} を付ける", "conversation.with": "{names}",
"directory.federated": "既知の連合より", "directory.federated": "既知の連合より",
"directory.local": "{domain} のみ", "directory.local": "{domain} のみ",
"directory.new_arrivals": "新着順", "directory.new_arrivals": "新着順",
@ -268,7 +268,7 @@
"navigation_bar.preferences": "ユーザー設定", "navigation_bar.preferences": "ユーザー設定",
"navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.public_timeline": "連合タイムライン",
"navigation_bar.security": "セキュリティ", "navigation_bar.security": "セキュリティ",
"notification.and_n_others": "と、その他 {count, plural, one {#} other {#}}", "notification.and_n_others": "と、他 {count} 件",
"notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました", "notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name}さんにフォローされました", "notification.follow": "{name}さんにフォローされました",
"notification.mention": "{name}さんがあなたに返信しました", "notification.mention": "{name}さんがあなたに返信しました",

View File

@ -111,10 +111,10 @@
"confirmations.reply.message": "Door nu te reageren overschrijf je de toot die je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?", "confirmations.reply.message": "Door nu te reageren overschrijf je de toot die je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?",
"confirmations.unfollow.confirm": "Ontvolgen", "confirmations.unfollow.confirm": "Ontvolgen",
"confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?", "confirmations.unfollow.message": "Weet je het zeker dat je {name} wilt ontvolgen?",
"conversation.delete": "Delete conversation", "conversation.delete": "Gesprek verwijderen",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Als gelezen markeren",
"conversation.open": "View conversation", "conversation.open": "Gesprek tonen",
"conversation.with": "With {names}", "conversation.with": "Met {names}",
"directory.federated": "Fediverse (wat bekend is)", "directory.federated": "Fediverse (wat bekend is)",
"directory.local": "Alleen {domain}", "directory.local": "Alleen {domain}",
"directory.new_arrivals": "Nieuwe accounts", "directory.new_arrivals": "Nieuwe accounts",

View File

@ -16,7 +16,7 @@
"account.follows.empty": "Esse usuário não segue ninguém no momento.", "account.follows.empty": "Esse usuário não segue ninguém no momento.",
"account.follows_you": "Segue você", "account.follows_you": "Segue você",
"account.hide_reblogs": "Esconder compartilhamentos de @{name}", "account.hide_reblogs": "Esconder compartilhamentos de @{name}",
"account.last_status": "Last active", "account.last_status": "Última atividade",
"account.link_verified_on": "A posse desse link foi verificada em {date}", "account.link_verified_on": "A posse desse link foi verificada em {date}",
"account.locked_info": "Essa conta está trancada. Se você a seguir sua solicitação será revisada manualmente.", "account.locked_info": "Essa conta está trancada. Se você a seguir sua solicitação será revisada manualmente.",
"account.media": "Mídia", "account.media": "Mídia",
@ -53,7 +53,7 @@
"column.blocks": "Usuários bloqueados", "column.blocks": "Usuários bloqueados",
"column.community": "Local", "column.community": "Local",
"column.direct": "Mensagens diretas", "column.direct": "Mensagens diretas",
"column.directory": "Browse profiles", "column.directory": "Explorar perfis",
"column.domain_blocks": "Domínios escondidos", "column.domain_blocks": "Domínios escondidos",
"column.favourites": "Favoritos", "column.favourites": "Favoritos",
"column.follow_requests": "Seguidores pendentes", "column.follow_requests": "Seguidores pendentes",
@ -63,7 +63,7 @@
"column.notifications": "Notificações", "column.notifications": "Notificações",
"column.pins": "Postagens fixadas", "column.pins": "Postagens fixadas",
"column.public": "Global", "column.public": "Global",
"column.status": "Toot", "column.status": "Publicar",
"column_back_button.label": "Voltar", "column_back_button.label": "Voltar",
"column_header.hide_settings": "Esconder configurações", "column_header.hide_settings": "Esconder configurações",
"column_header.moveLeft_settings": "Mover coluna para a esquerda", "column_header.moveLeft_settings": "Mover coluna para a esquerda",
@ -101,8 +101,8 @@
"confirmations.delete_list.message": "Você tem certeza que quer deletar permanentemente a lista?", "confirmations.delete_list.message": "Você tem certeza que quer deletar permanentemente a lista?",
"confirmations.domain_block.confirm": "Esconder o domínio inteiro", "confirmations.domain_block.confirm": "Esconder o domínio inteiro",
"confirmations.domain_block.message": "Você quer mesmo bloquear {domain} inteiro? Na maioria dos casos, silenciar ou bloquear alguns usuários é o suficiente e o recomendado. Você não vai ver conteúdo desse domínio em nenhuma das timelines públicas ou nas suas notificações. Seus seguidores desse domínio serão removidos.", "confirmations.domain_block.message": "Você quer mesmo bloquear {domain} inteiro? Na maioria dos casos, silenciar ou bloquear alguns usuários é o suficiente e o recomendado. Você não vai ver conteúdo desse domínio em nenhuma das timelines públicas ou nas suas notificações. Seus seguidores desse domínio serão removidos.",
"confirmations.logout.confirm": "Log out", "confirmations.logout.confirm": "Sair",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "Tem certeza que deseja encerrar a sessão?",
"confirmations.mute.confirm": "Silenciar", "confirmations.mute.confirm": "Silenciar",
"confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?", "confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
"confirmations.redraft.confirm": "Apagar & usar como rascunho", "confirmations.redraft.confirm": "Apagar & usar como rascunho",
@ -113,11 +113,11 @@
"confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?", "confirmations.unfollow.message": "Você tem certeza de que quer deixar de seguir {name}?",
"conversation.delete": "Excluir conversa", "conversation.delete": "Excluir conversa",
"conversation.mark_as_read": "Marcar como lida", "conversation.mark_as_read": "Marcar como lida",
"conversation.open": "View conversation", "conversation.open": "Ver conversa",
"conversation.with": "With {names}", "conversation.with": "Com {names}",
"directory.federated": "De fediverso conhecido", "directory.federated": "De fediverso conhecido",
"directory.local": "From {domain} only", "directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "Acabaram de chegar",
"directory.recently_active": "Reverta esta propriedade para seu valor padrão", "directory.recently_active": "Reverta esta propriedade para seu valor padrão",
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.", "embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.",
"embed.preview": "Aqui está uma previsão de como ficará:", "embed.preview": "Aqui está uma previsão de como ficará:",
@ -174,7 +174,7 @@
"home.column_settings.basic": "Básico", "home.column_settings.basic": "Básico",
"home.column_settings.show_reblogs": "Mostrar compartilhamentos", "home.column_settings.show_reblogs": "Mostrar compartilhamentos",
"home.column_settings.show_replies": "Mostrar as respostas", "home.column_settings.show_replies": "Mostrar as respostas",
"home.column_settings.update_live": "Update in real-time", "home.column_settings.update_live": "Atualizar em tempo real",
"intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
"intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
"intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@ -240,7 +240,7 @@
"lists.new.title_placeholder": "Novo título da lista", "lists.new.title_placeholder": "Novo título da lista",
"lists.search": "Procurar entre as pessoas que você segue", "lists.search": "Procurar entre as pessoas que você segue",
"lists.subheading": "Suas listas", "lists.subheading": "Suas listas",
"load_pending": "{count, plural, one {# new item} other {# new items}}", "load_pending": "{count, plural, one {# novo item} other {# novos items}}",
"loading_indicator.label": "Carregando...", "loading_indicator.label": "Carregando...",
"media_gallery.toggle_visible": "Esconder/Mostrar", "media_gallery.toggle_visible": "Esconder/Mostrar",
"missing_indicator.label": "Não encontrado", "missing_indicator.label": "Não encontrado",
@ -268,7 +268,7 @@
"navigation_bar.preferences": "Preferências", "navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global", "navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Segurança", "navigation_bar.security": "Segurança",
"notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.and_n_others": "and {count, plural, one {# outro} other {# outros}}",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos", "notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu", "notification.follow": "{name} te seguiu",
"notification.mention": "{name} te mencionou", "notification.mention": "{name} te mencionou",
@ -334,7 +334,7 @@
"search_results.accounts": "Pessoas", "search_results.accounts": "Pessoas",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots", "search_results.statuses": "Toots",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está habilitado neste servidor Mastodon.",
"search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}", "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
"status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_account": "Abrir interface de moderação para @{name}",
"status.admin_status": "Abrir esse status na interface de moderação", "status.admin_status": "Abrir esse status na interface de moderação",
@ -389,18 +389,18 @@
"time_remaining.moments": "Momentos restantes", "time_remaining.moments": "Momentos restantes",
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}", "time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre", "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
"trends.trending_now": "Trending now", "trends.trending_now": "Em alta no momento",
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.", "ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
"upload_area.title": "Arraste e solte para enviar", "upload_area.title": "Arraste e solte para enviar",
"upload_button.label": "Adicionar mídia (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "Adicionar mídia (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "Limite de envio de arquivos excedido.", "upload_error.limit": "Limite de envio de arquivos excedido.",
"upload_error.poll": "Envio de arquivos não é permitido com enquetes.", "upload_error.poll": "Envio de arquivos não é permitido com enquetes.",
"upload_form.description": "Descreva a imagem para deficientes visuais", "upload_form.description": "Descreva a imagem para deficientes visuais",
"upload_form.edit": "Edit", "upload_form.edit": "Editar",
"upload_form.undo": "Remover", "upload_form.undo": "Remover",
"upload_modal.analyzing_picture": "Analisando imagem…", "upload_modal.analyzing_picture": "Analisando imagem…",
"upload_modal.apply": "Apply", "upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
"upload_modal.detect_text": "Detectar texto da imagem", "upload_modal.detect_text": "Detectar texto da imagem",
"upload_modal.edit_media": "Edit media", "upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",

View File

@ -111,10 +111,10 @@
"confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?", "confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?",
"confirmations.unfollow.confirm": "Nesleduj", "confirmations.unfollow.confirm": "Nesleduj",
"confirmations.unfollow.message": "Naozaj chceš prestať sledovať {name}?", "confirmations.unfollow.message": "Naozaj chceš prestať sledovať {name}?",
"conversation.delete": "Delete conversation", "conversation.delete": "Vymaž konverzáciu",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "Označ za prečítané",
"conversation.open": "View conversation", "conversation.open": "Ukáž konverzáciu",
"conversation.with": "With {names}", "conversation.with": "S {names}",
"directory.federated": "Zo známého fedivesmíru", "directory.federated": "Zo známého fedivesmíru",
"directory.local": "Iba z {domain}", "directory.local": "Iba z {domain}",
"directory.new_arrivals": "Nové príchody", "directory.new_arrivals": "Nové príchody",

View File

@ -63,7 +63,7 @@
"column.notifications": "การแจ้งเตือน", "column.notifications": "การแจ้งเตือน",
"column.pins": "โพสต์ที่ปักหมุด", "column.pins": "โพสต์ที่ปักหมุด",
"column.public": "เส้นเวลาที่ติดต่อกับภายนอก", "column.public": "เส้นเวลาที่ติดต่อกับภายนอก",
"column.status": "Toot", "column.status": "โพสต์",
"column_back_button.label": "ย้อนกลับ", "column_back_button.label": "ย้อนกลับ",
"column_header.hide_settings": "ซ่อนการตั้งค่า", "column_header.hide_settings": "ซ่อนการตั้งค่า",
"column_header.moveLeft_settings": "ย้ายคอลัมน์ไปทางซ้าย", "column_header.moveLeft_settings": "ย้ายคอลัมน์ไปทางซ้าย",
@ -111,12 +111,12 @@
"confirmations.reply.message": "การตอบกลับตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "confirmations.reply.message": "การตอบกลับตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
"confirmations.unfollow.confirm": "เลิกติดตาม", "confirmations.unfollow.confirm": "เลิกติดตาม",
"confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?", "confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?",
"conversation.delete": "Delete conversation", "conversation.delete": "ลบการสนทนา",
"conversation.mark_as_read": "Mark as read", "conversation.mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว",
"conversation.open": "View conversation", "conversation.open": "ดูการสนทนา",
"conversation.with": "With {names}", "conversation.with": "กับ {names}",
"directory.federated": "From known fediverse", "directory.federated": "จากเฟดิเวิร์สที่รู้จัก",
"directory.local": "From {domain} only", "directory.local": "จาก {domain} เท่านั้น",
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active", "directory.recently_active": "Recently active",
"embed.instructions": "ฝังสถานะนี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง", "embed.instructions": "ฝังสถานะนี้ในเว็บไซต์ของคุณโดยคัดลอกโค้ดด้านล่าง",
@ -174,7 +174,7 @@
"home.column_settings.basic": "พื้นฐาน", "home.column_settings.basic": "พื้นฐาน",
"home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_reblogs": "แสดงการดัน",
"home.column_settings.show_replies": "แสดงการตอบกลับ", "home.column_settings.show_replies": "แสดงการตอบกลับ",
"home.column_settings.update_live": "Update in real-time", "home.column_settings.update_live": "อัปเดตตามเวลาจริง",
"intervals.full.days": "{number, plural, other {# วัน}}", "intervals.full.days": "{number, plural, other {# วัน}}",
"intervals.full.hours": "{number, plural, other {# ชั่วโมง}}", "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}",
"intervals.full.minutes": "{number, plural, other {# นาที}}", "intervals.full.minutes": "{number, plural, other {# นาที}}",

View File

@ -103,10 +103,13 @@ function clearAll(state) {
}); });
}; };
function appendMedia(state, media) { function appendMedia(state, media, file) {
const prevSize = state.get('media_attachments').size; const prevSize = state.get('media_attachments').size;
return state.withMutations(map => { return state.withMutations(map => {
if (media.get('type') === 'image') {
media = media.set('file', file);
}
map.update('media_attachments', list => list.push(media)); map.update('media_attachments', list => list.push(media));
map.set('is_uploading', false); map.set('is_uploading', false);
map.set('resetFileKey', Math.floor((Math.random() * 0x10000))); map.set('resetFileKey', Math.floor((Math.random() * 0x10000)));
@ -321,7 +324,7 @@ export default function compose(state = initialState, action) {
case COMPOSE_UPLOAD_REQUEST: case COMPOSE_UPLOAD_REQUEST:
return state.set('is_uploading', true); return state.set('is_uploading', true);
case COMPOSE_UPLOAD_SUCCESS: case COMPOSE_UPLOAD_SUCCESS:
return appendMedia(state, fromJS(action.media)); return appendMedia(state, fromJS(action.media), action.file);
case COMPOSE_UPLOAD_FAIL: case COMPOSE_UPLOAD_FAIL:
return state.set('is_uploading', false); return state.set('is_uploading', false);
case COMPOSE_UPLOAD_UNDO: case COMPOSE_UPLOAD_UNDO:

View File

@ -38,10 +38,9 @@ const notificationToMap = notification => ImmutableMap({
}); });
const normalizeNotification = (state, notification, usePendingItems) => { const normalizeNotification = (state, notification, usePendingItems) => {
const top = state.get('top'); const top = state.get('top');
const mounted = state.get('mounted');
if (usePendingItems || (!top && mounted) || !state.get('pendingItems').isEmpty()) { if (usePendingItems || !state.get('pendingItems').isEmpty()) {
return state.update('pendingItems', list => list.unshift(notificationToMap(notification))).update('unread', unread => unread + 1); return state.update('pendingItems', list => list.unshift(notificationToMap(notification))).update('unread', unread => unread + 1);
} }
@ -67,7 +66,7 @@ const expandNormalizedNotifications = (state, notifications, next, isLoadingRece
return state.withMutations(mutable => { return state.withMutations(mutable => {
if (!items.isEmpty()) { if (!items.isEmpty()) {
usePendingItems = isLoadingRecent && (usePendingItems || (!mutable.get('top') && mutable.get('mounted')) || !mutable.get('pendingItems').isEmpty()); usePendingItems = isLoadingRecent && (usePendingItems || !mutable.get('pendingItems').isEmpty());
mutable.update(usePendingItems ? 'pendingItems' : 'items', list => { mutable.update(usePendingItems ? 'pendingItems' : 'items', list => {
const lastIndex = 1 + list.findLastIndex( const lastIndex = 1 + list.findLastIndex(

View File

@ -40,7 +40,8 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
if (timeline.endsWith(':pinned')) { if (timeline.endsWith(':pinned')) {
mMap.set('items', statuses.map(status => status.get('id'))); mMap.set('items', statuses.map(status => status.get('id')));
} else if (!statuses.isEmpty()) { } else if (!statuses.isEmpty()) {
usePendingItems = isLoadingRecent && (usePendingItems || !mMap.get('top') || !mMap.get('pendingItems').isEmpty()); usePendingItems = isLoadingRecent && (usePendingItems || !mMap.get('pendingItems').isEmpty());
mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => { mMap.update(usePendingItems ? 'pendingItems' : 'items', ImmutableList(), oldIds => {
const newIds = statuses.map(status => status.get('id')); const newIds = statuses.map(status => status.get('id'));
@ -63,7 +64,7 @@ const expandNormalizedTimeline = (state, timeline, statuses, next, isPartial, is
const updateTimeline = (state, timeline, status, usePendingItems) => { const updateTimeline = (state, timeline, status, usePendingItems) => {
const top = state.getIn([timeline, 'top']); const top = state.getIn([timeline, 'top']);
if (usePendingItems || !top || !state.getIn([timeline, 'pendingItems']).isEmpty()) { if (usePendingItems || !state.getIn([timeline, 'pendingItems']).isEmpty()) {
if (state.getIn([timeline, 'pendingItems'], ImmutableList()).includes(status.get('id')) || state.getIn([timeline, 'items'], ImmutableList()).includes(status.get('id'))) { if (state.getIn([timeline, 'pendingItems'], ImmutableList()).includes(status.get('id')) || state.getIn([timeline, 'items'], ImmutableList()).includes(status.get('id'))) {
return state; return state;
} }

View File

@ -6418,13 +6418,17 @@ noscript {
flex: 1 1 auto; flex: 1 1 auto;
padding: 10px 5px; padding: 10px 5px;
padding-right: 15px; padding-right: 15px;
word-break: break-all;
overflow: hidden;
&__info { &__info {
overflow: hidden; overflow: hidden;
display: flex;
flex-direction: row-reverse;
justify-content: space-between;
} }
&__relative-time { &__relative-time {
float: right;
font-size: 15px; font-size: 15px;
color: $darker-text-color; color: $darker-text-color;
padding-left: 15px; padding-left: 15px;
@ -6437,6 +6441,8 @@ noscript {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
margin-bottom: 4px; margin-bottom: 4px;
flex-basis: 170px;
flex-shrink: 1000;
a { a {
color: $primary-text-color; color: $primary-text-color;

View File

@ -169,7 +169,7 @@
.grid-4 { .grid-4 {
display: grid; display: grid;
grid-gap: 10px; grid-gap: 10px;
grid-template-columns: 1fr 1fr 1fr 1fr; grid-template-columns: repeat(4, minmax(0, 1fr));
grid-auto-columns: 25%; grid-auto-columns: 25%;
grid-auto-rows: max-content; grid-auto-rows: max-content;

View File

@ -95,13 +95,19 @@
&__number { &__number {
display: inline-block; display: inline-block;
width: 36px; width: 52px;
font-weight: 700; font-weight: 700;
padding: 0 10px; padding: 0 10px;
padding-left: 8px;
text-align: right; text-align: right;
margin-top: auto; margin-top: auto;
margin-bottom: auto; margin-bottom: auto;
flex: 0 0 36px; flex: 0 0 52px;
}
&__vote__mark {
float: left;
line-height: 18px;
} }
&__footer { &__footer {

View File

@ -21,7 +21,7 @@ class ActivityPub::Activity::Follow < ActivityPub::Activity
follow_request = FollowRequest.create!(account: @account, target_account: target_account, uri: @json['id']) follow_request = FollowRequest.create!(account: @account, target_account: target_account, uri: @json['id'])
if target_account.locked? if target_account.locked? || @account.silenced?
NotifyService.new.call(target_account, follow_request) NotifyService.new.call(target_account, follow_request)
else else
AuthorizeFollowService.new.call(@account, target_account) AuthorizeFollowService.new.call(@account, target_account)

View File

@ -45,7 +45,7 @@ class TOCGenerator
parsed_html.traverse do |node| parsed_html.traverse do |node|
next unless TARGET_ELEMENTS.include?(node.name) next unless TARGET_ELEMENTS.include?(node.name)
anchor = node['id'] || node.text.parameterize anchor = node['id'] || node.text.parameterize.presence || 'sec'
@slugs[anchor] += 1 @slugs[anchor] += 1
anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1 anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1

View File

@ -47,8 +47,7 @@ class AccountMigration < ApplicationRecord
end end
def acct=(val) def acct=(val)
val = val.to_s.strip super(val.to_s.strip.gsub(/\A@/, ''))
super(val.start_with?('@') ? val[1..-1] : val)
end end
private private

View File

@ -3,24 +3,50 @@
module LdapAuthenticable module LdapAuthenticable
extend ActiveSupport::Concern extend ActiveSupport::Concern
def ldap_setup(_attributes)
self.confirmed_at = Time.now.utc
self.admin = false
self.external = true
save!
end
class_methods do class_methods do
def authenticate_with_ldap(params = {})
ldap = Net::LDAP.new(ldap_options)
filter = format(Devise.ldap_search_filter, uid: Devise.ldap_uid, email: params[:email])
if (user_info = ldap.bind_as(base: Devise.ldap_base, filter: filter, password: params[:password]))
ldap_get_user(user_info.first)
end
end
def ldap_get_user(attributes = {}) def ldap_get_user(attributes = {})
resource = joins(:account).find_by(accounts: { username: attributes[Devise.ldap_uid.to_sym].first }) resource = joins(:account).find_by(accounts: { username: attributes[Devise.ldap_uid.to_sym].first })
if resource.blank? if resource.blank?
resource = new(email: attributes[:mail].first, agreement: true, account_attributes: { username: attributes[Devise.ldap_uid.to_sym].first }) resource = new(email: attributes[:mail].first, agreement: true, account_attributes: { username: attributes[Devise.ldap_uid.to_sym].first }, admin: false, external: true, confirmed_at: Time.now.utc)
resource.ldap_setup(attributes) resource.save!
end end
resource resource
end end
def ldap_options
opts = {
host: Devise.ldap_host,
port: Devise.ldap_port,
base: Devise.ldap_base,
auth: {
method: :simple,
username: Devise.ldap_bind_dn,
password: Devise.ldap_password,
},
connect_timeout: 10,
}
if [:simple_tls, :start_tls].include?(Devise.ldap_method)
opts[:encryption] = {
method: Devise.ldap_method,
tls_options: OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.tap { |options| options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if Devise.ldap_tls_no_verify },
}
end
opts
end
end end
end end

View File

@ -0,0 +1,47 @@
# frozen_string_literal: true
class Form::Redirect
include ActiveModel::Model
attr_accessor :account, :target_account, :current_password,
:current_username
attr_reader :acct
validates :acct, presence: true, domain: { acct: true }
validate :validate_target_account
def valid_with_challenge?(current_user)
if current_user.encrypted_password.present?
errors.add(:current_password, :invalid) unless current_user.valid_password?(current_password)
else
errors.add(:current_username, :invalid) unless account.username == current_username
end
return false unless errors.empty?
set_target_account
valid?
end
def acct=(val)
@acct = val.to_s.strip.gsub(/\A@/, '')
end
private
def set_target_account
@target_account = ResolveAccountService.new.call(acct)
rescue Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error
# Validation will take care of it
end
def validate_target_account
if target_account.nil?
errors.add(:acct, I18n.t('migrations.errors.not_found'))
else
errors.add(:acct, I18n.t('migrations.errors.already_moved')) if account.moved_to_account_id.present? && account.moved_to_account_id == target_account.id
errors.add(:acct, I18n.t('migrations.errors.move_to_self')) if account.id == target_account.id
end
end
end

View File

@ -54,6 +54,10 @@ class Poll < ApplicationRecord
account.id == account_id || votes.where(account: account).exists? account.id == account_id || votes.where(account: account).exists?
end end
def own_votes(account)
votes.where(account: account).pluck(:choice)
end
delegate :local?, to: :account delegate :local?, to: :account
def remote? def remote?

View File

@ -47,6 +47,10 @@ class PreviewCard < ApplicationRecord
before_save :extract_dimensions, if: :link? before_save :extract_dimensions, if: :link?
def missing_image?
width.present? && height.present? && image_file_name.blank?
end
def save_with_optional_image! def save_with_optional_image!
save! save!
rescue ActiveRecord::RecordInvalid rescue ActiveRecord::RecordInvalid

View File

@ -12,8 +12,6 @@
# #
class Relay < ApplicationRecord class Relay < ApplicationRecord
PRESET_RELAY = 'https://relay.joinmastodon.org/inbox'
validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url? validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url?
enum state: [:idle, :pending, :accepted, :rejected] enum state: [:idle, :pending, :accepted, :rejected]
@ -74,7 +72,6 @@ class Relay < ApplicationRecord
end end
def ensure_disabled def ensure_disabled
return unless enabled? disable! if enabled?
disable!
end end
end end

View File

@ -305,7 +305,7 @@ class Status < ApplicationRecord
end end
def reblogs_map(status_ids, account_id) def reblogs_map(status_ids, account_id)
select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).reorder(nil).each_with_object({}) { |s, h| h[s.reblog_of_id] = true } unscoped.select('reblog_of_id').where(reblog_of_id: status_ids).where(account_id: account_id).each_with_object({}) { |s, h| h[s.reblog_of_id] = true }
end end
def mutes_map(conversation_ids, account_id) def mutes_map(conversation_ids, account_id)

View File

@ -124,16 +124,15 @@ class Tag < ApplicationRecord
end end
end end
def search_for(term, limit = 5, offset = 0) def search_for(term, limit = 5, offset = 0, options = {})
normalized_term = normalize(term.strip).mb_chars.downcase.to_s normalized_term = normalize(term.strip).mb_chars.downcase.to_s
pattern = sanitize_sql_like(normalized_term) + '%' pattern = sanitize_sql_like(normalized_term) + '%'
query = Tag.listable.where(arel_table[:name].lower.matches(pattern))
query = query.where(arel_table[:name].lower.eq(normalized_term).or(arel_table[:reviewed_at].not_eq(nil))) if options[:exclude_unreviewed]
Tag.listable query.order(Arel.sql('length(name) ASC, name ASC'))
.where(arel_table[:name].lower.matches(pattern)) .limit(limit)
.where(arel_table[:name].lower.eq(normalized_term).or(arel_table[:reviewed_at].not_eq(nil))) .offset(offset)
.order(Arel.sql('length(name) ASC, name ASC'))
.limit(limit)
.offset(offset)
end end
def find_normalized(name) def find_normalized(name)

View File

@ -20,6 +20,10 @@ class Web::PushSubscription < ApplicationRecord
has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription
validates :endpoint, presence: true
validates :key_p256dh, presence: true
validates :key_auth, presence: true
def push(notification) def push(notification)
I18n.with_locale(associated_user&.locale || I18n.default_locale) do I18n.with_locale(associated_user&.locale || I18n.default_locale) do
push_payload(payload_for_notification(notification), 48.hours.seconds) push_payload(payload_for_notification(notification), 48.hours.seconds)

View File

@ -12,6 +12,7 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer
language: user.setting_default_language, language: user.setting_default_language,
note: object.note, note: object.note,
fields: object.fields.map(&:to_h), fields: object.fields.map(&:to_h),
follow_requests_count: FollowRequest.where(target_account: object).limit(40).count,
} }
end end
end end

View File

@ -8,6 +8,7 @@ class REST::PollSerializer < ActiveModel::Serializer
has_many :emojis, serializer: REST::CustomEmojiSerializer has_many :emojis, serializer: REST::CustomEmojiSerializer
attribute :voted, if: :current_user? attribute :voted, if: :current_user?
attribute :own_votes, if: :current_user?
def id def id
object.id.to_s object.id.to_s
@ -21,6 +22,10 @@ class REST::PollSerializer < ActiveModel::Serializer
object.voted?(current_user.account) object.voted?(current_user.account)
end end
def own_votes
object.own_votes(current_user.account)
end
def current_user? def current_user?
!current_user.nil? !current_user.nil?
end end

View File

@ -42,11 +42,9 @@ class AccountSearchService < BaseService
return [] if limit_for_non_exact_results.zero? return [] if limit_for_non_exact_results.zero?
@search_results ||= begin @search_results ||= begin
if Chewy.enabled? results = from_elasticsearch if Chewy.enabled?
from_elasticsearch results ||= from_database
else results
from_database
end
end end
end end
@ -92,6 +90,8 @@ class AccountSearchService < BaseService
ActiveRecord::Associations::Preloader.new.preload(records, :account_stat) ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)
records records
rescue Faraday::ConnectionFailed, Parslet::ParseFailed
nil
end end
def reputation_score_function def reputation_score_function

View File

@ -22,7 +22,7 @@ class FetchLinkCardService < BaseService
RedisLock.acquire(lock_options) do |lock| RedisLock.acquire(lock_options) do |lock|
if lock.acquired? if lock.acquired?
@card = PreviewCard.find_by(url: @url) @card = PreviewCard.find_by(url: @url)
process_url if @card.nil? || @card.updated_at <= 2.weeks.ago process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
else else
raise Mastodon::RaceConditionError raise Mastodon::RaceConditionError
end end

View File

@ -30,7 +30,7 @@ class FollowService < BaseService
ActivityTracker.increment('activity:interactions') ActivityTracker.increment('activity:interactions')
if target_account.locked? || target_account.activitypub? if target_account.locked? || source_account.silenced? || target_account.activitypub?
request_follow(source_account, target_account, reblogs: reblogs) request_follow(source_account, target_account, reblogs: reblogs)
elsif target_account.local? elsif target_account.local?
direct_follow(source_account, target_account, reblogs: reblogs) direct_follow(source_account, target_account, reblogs: reblogs)

View File

@ -60,7 +60,8 @@ class SearchService < BaseService
TagSearchService.new.call( TagSearchService.new.call(
@query, @query,
limit: @limit, limit: @limit,
offset: @offset offset: @offset,
exclude_unreviewed: @options[:exclude_unreviewed]
) )
end end

View File

@ -2,15 +2,15 @@
class TagSearchService < BaseService class TagSearchService < BaseService
def call(query, options = {}) def call(query, options = {})
@query = query.strip.gsub(/\A#/, '') @query = query.strip.gsub(/\A#/, '')
@offset = options[:offset].to_i @offset = options.delete(:offset).to_i
@limit = options[:limit].to_i @limit = options.delete(:limit).to_i
@options = options
if Chewy.enabled? results = from_elasticsearch if Chewy.enabled?
from_elasticsearch results ||= from_database
else
from_database results
end
end end
private private
@ -63,9 +63,9 @@ class TagSearchService < BaseService
}, },
{ {
term: { match: {
name: { name: {
value: @query, query: @query,
}, },
}, },
}, },
@ -73,10 +73,15 @@ class TagSearchService < BaseService
}, },
} }
TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact definition = TagsIndex.query(query)
definition = definition.filter(filter) if @options[:exclude_unreviewed]
definition.limit(@limit).offset(@offset).objects.compact
rescue Faraday::ConnectionFailed, Parslet::ParseFailed
nil
end end
def from_database def from_database
Tag.search_for(@query, @limit, @offset) Tag.search_for(@query, @limit, @offset, @options)
end end
end end

View File

@ -20,7 +20,9 @@ class UpdateAccountService < BaseService
private private
def authorize_all_follow_requests(account) def authorize_all_follow_requests(account)
AuthorizeFollowWorker.push_bulk(FollowRequest.where(target_account: account).select(:account_id, :target_account_id)) do |req| follow_requests = FollowRequest.where(target_account: account)
follow_requests = follow_requests.select { |req| !req.account.silenced? }
AuthorizeFollowWorker.push_bulk(follow_requests) do |req|
[req.account_id, req.target_account_id] [req.account_id, req.target_account_id]
end end
end end

View File

@ -43,8 +43,10 @@
= form_for(@form, url: batch_admin_tags_path) do |f| = form_for(@form, url: batch_admin_tags_path) do |f|
= hidden_field_tag :page, params[:page] || 1 = hidden_field_tag :page, params[:page] || 1
= hidden_field_tag :context, params[:context] = hidden_field_tag :name, params[:name] if params[:name].present?
= hidden_field_tag :review, params[:review]
- Admin::FilterHelper::TAGS_FILTERS.each do |key|
= hidden_field_tag key, params[key] if params[key].present?
.batch-table .batch-table
.batch-table__toolbar .batch-table__toolbar

View File

@ -30,7 +30,18 @@
= render 'sessions' = render 'sessions'
%hr.spacer/
%h3= t('auth.migrate_account')
%p.muted-hint= t('auth.migrate_account_html', path: settings_migration_path)
%hr.spacer/
%h3= t('migrations.incoming_migrations')
%p.muted-hint= t('migrations.incoming_migrations_html', path: settings_aliases_path)
- if open_deletion? && !current_account.suspended? - if open_deletion? && !current_account.suspended?
%hr.spacer/ %hr.spacer/
%h3= t('auth.delete_account') %h3= t('auth.delete_account')
%p.muted-hint= t('auth.delete_account_html', path: settings_delete_path) %p.muted-hint= t('auth.delete_account_html', path: settings_delete_path)

View File

@ -0,0 +1,27 @@
- content_for :page_title do
= t('settings.migrate')
= simple_form_for @redirect, url: settings_migration_redirect_path do |f|
%p.hint= t('migrations.warning.before')
%ul.hint
%li.warning-hint= t('migrations.warning.redirect')
%li.warning-hint= t('migrations.warning.other_data')
%li.warning-hint= t('migrations.warning.disabled_account')
%hr.spacer/
= render 'shared/error_messages', object: @redirect
.fields-row
.fields-row__column.fields-group.fields-row__column-6
= f.input :acct, wrapper: :with_block_label, input_html: { autocapitalize: 'none', autocorrect: 'off' }, label: t('simple_form.labels.account_migration.acct'), hint: t('simple_form.hints.account_migration.acct')
.fields-row__column.fields-group.fields-row__column-6
- if current_user.encrypted_password.present?
= f.input :current_password, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true
- else
= f.input :current_username, wrapper: :with_block_label, input_html: { :autocomplete => 'off' }, required: true
.actions
= f.button :button, t('migrations.set_redirect'), type: :submit, class: 'button button--destructive'

View File

@ -12,28 +12,32 @@
%p.hint= t('migrations.cancel_explanation') %p.hint= t('migrations.cancel_explanation')
%p.hint= link_to t('migrations.cancel'), cancel_settings_migration_path, data: { method: :post } %p.hint= link_to t('migrations.cancel'), settings_migration_redirect_path, data: { method: :delete }
- else - else
%p.hint %p.hint
%span.positive-hint= t('migrations.not_redirecting') %span.positive-hint= t('migrations.not_redirecting')
%hr.spacer/ %hr.spacer/
%h3= t 'migrations.proceed_with_move' %h3= t('auth.migrate_account')
= simple_form_for @migration, url: settings_migration_path do |f| = simple_form_for @migration, url: settings_migration_path do |f|
- if on_cooldown? - if on_cooldown?
%span.warning-hint= t('migrations.on_cooldown', count: ((@cooldown.cooldown_at - Time.now.utc) / 1.day.seconds).ceil) %p.hint
%span.warning-hint= t('migrations.on_cooldown', count: ((@cooldown.cooldown_at - Time.now.utc) / 1.day.seconds).ceil)
- else - else
%p.hint= t('migrations.warning.before') %p.hint= t('migrations.warning.before')
%ul.hint %ul.hint
%li.warning-hint= t('migrations.warning.followers') %li.warning-hint= t('migrations.warning.followers')
%li.warning-hint= t('migrations.warning.redirect')
%li.warning-hint= t('migrations.warning.other_data') %li.warning-hint= t('migrations.warning.other_data')
%li.warning-hint= t('migrations.warning.backreference_required') %li.warning-hint= t('migrations.warning.backreference_required')
%li.warning-hint= t('migrations.warning.cooldown') %li.warning-hint= t('migrations.warning.cooldown')
%li.warning-hint= t('migrations.warning.disabled_account') %li.warning-hint= t('migrations.warning.disabled_account')
%p.hint= t('migrations.warning.only_redirect_html', path: new_settings_migration_redirect_path)
%hr.spacer/ %hr.spacer/
= render 'shared/error_messages', object: @migration = render 'shared/error_messages', object: @migration

View File

@ -1,15 +1,19 @@
- show_results = (user_signed_in? && poll.voted?(current_account)) || poll.expired? - show_results = (user_signed_in? && poll.voted?(current_account)) || poll.expired?
- own_votes = user_signed_in? ? poll.own_votes(current_account) : []
.poll .poll
%ul %ul
- poll.loaded_options.each do |option| - poll.loaded_options.each_with_index do |option, index|
%li %li
- if show_results - if show_results
- percent = poll.votes_count > 0 ? 100 * option.votes_count / poll.votes_count : 0 - percent = poll.votes_count > 0 ? 100 * option.votes_count / poll.votes_count : 0
%span.poll__chart{ style: "width: #{percent}%" } %span.poll__chart{ style: "width: #{percent}%" }
%label.poll__text>< %label.poll__text><
%span.poll__number= percent.round %span.poll__number><
- if own_votes.include?(index)
%i.poll__vote__mark.fa.fa-check
= percent.round
= Formatter.instance.format_poll_option(status, option, autoplay: autoplay) = Formatter.instance.format_poll_option(status, option, autoplay: autoplay)
- else - else
%label.poll__text>< %label.poll__text><

View File

@ -13,7 +13,8 @@ require_relative '../lib/paperclip/video_transcoder'
require_relative '../lib/paperclip/type_corrector' require_relative '../lib/paperclip/type_corrector'
require_relative '../lib/mastodon/snowflake' require_relative '../lib/mastodon/snowflake'
require_relative '../lib/mastodon/version' require_relative '../lib/mastodon/version'
require_relative '../lib/devise/ldap_authenticatable' require_relative '../lib/devise/two_factor_ldap_authenticatable'
require_relative '../lib/devise/two_factor_pam_authenticatable'
Dotenv::Railtie.load Dotenv::Railtie.load

View File

@ -71,13 +71,10 @@ end
Devise.setup do |config| Devise.setup do |config|
config.warden do |manager| config.warden do |manager|
manager.default_strategies(scope: :user).unshift :database_authenticatable manager.default_strategies(scope: :user).unshift :two_factor_ldap_authenticatable if Devise.ldap_authentication
manager.default_strategies(scope: :user).unshift :ldap_authenticatable if Devise.ldap_authentication manager.default_strategies(scope: :user).unshift :two_factor_pam_authenticatable if Devise.pam_authentication
manager.default_strategies(scope: :user).unshift :pam_authenticatable if Devise.pam_authentication manager.default_strategies(scope: :user).unshift :two_factor_authenticatable
manager.default_strategies(scope: :user).unshift :two_factor_backupable
# We handle 2FA in our own sessions controller so this gets in the way
manager.default_strategies(scope: :user).delete :two_factor_backupable
manager.default_strategies(scope: :user).delete :two_factor_authenticatable
end end
# The secret key used by Devise. Devise uses this key to generate # The secret key used by Devise. Devise uses this key to generate

View File

@ -3,4 +3,6 @@ HealthCheck.setup do |config|
config.standard_checks = %w(database migrations cache) config.standard_checks = %w(database migrations cache)
config.full_checks = %w(database migrations cache) config.full_checks = %w(database migrations cache)
config.include_error_in_response_body = false
end end

View File

@ -25,6 +25,7 @@ if ENV['S3_ENABLED'] == 'true'
s3_protocol: s3_protocol, s3_protocol: s3_protocol,
s3_host_name: s3_hostname, s3_host_name: s3_hostname,
s3_headers: { s3_headers: {
'X-Amz-Multipart-Threshold' => ENV.fetch('S3_MULTIPART_THRESHOLD') { 15.megabytes }.to_i,
'Cache-Control' => 'public, max-age=315576000, immutable', 'Cache-Control' => 'public, max-age=315576000, immutable',
}, },
s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' }, s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' },

View File

@ -1,17 +1 @@
--- --- {}
es:
activerecord:
attributes:
poll:
expires_at: Vencimiento
options: Opciones
errors:
models:
account:
attributes:
username:
invalid: sólo letras, números y guiones bajos
status:
attributes:
reblog:
taken: del estado ya existe

View File

@ -10,7 +10,7 @@ ar:
api: واجهة برمجة التطبيقات api: واجهة برمجة التطبيقات
apps: تطبيقات الأجهزة المحمولة apps: تطبيقات الأجهزة المحمولة
apps_platforms: إستخدم ماستودون في iOS، أندرويد وأنظمة أخرى apps_platforms: إستخدم ماستودون في iOS، أندرويد وأنظمة أخرى
browse_directory: تصفح دليل المستخدمين وافرز بالمصالح browse_directory: تصفح دليل الصفحات التعريفية وصفّي بحسب الإهتمام
browse_public_posts: تصفح تيارًا مباشرًا مِن منشورات عامة على ماستدون browse_public_posts: تصفح تيارًا مباشرًا مِن منشورات عامة على ماستدون
contact: للتواصل معنا contact: للتواصل معنا
contact_missing: لم يتم تعيينه contact_missing: لم يتم تعيينه
@ -36,6 +36,9 @@ ar:
status_count_before: نشروا status_count_before: نشروا
tagline: اتبع أصدقائك وصديقاتك واكتشف آخرين وأخريات tagline: اتبع أصدقائك وصديقاتك واكتشف آخرين وأخريات
terms: شروط الخدمة terms: شروط الخدمة
unavailable_content: محتوى غير متوفر
unavailable_content_description:
reason: 'السبب:'
user_count_after: user_count_after:
few: مستخدمين few: مستخدمين
many: مستخدمين many: مستخدمين
@ -82,7 +85,7 @@ ar:
admin: المدير admin: المدير
bot: روبوت bot: روبوت
moderator: مُشرِف moderator: مُشرِف
unavailable: الحساب غير متوفر unavailable: الصفحة التعريفية غير متوفرة
unfollow: إلغاء المتابعة unfollow: إلغاء المتابعة
admin: admin:
account_actions: account_actions:
@ -154,12 +157,12 @@ ar:
outbox_url: رابط صندوق الصادر outbox_url: رابط صندوق الصادر
pending: في انتظار المراجعة pending: في انتظار المراجعة
perform_full_suspension: تعليق الحساب perform_full_suspension: تعليق الحساب
profile_url: رابط الملف الشخصي profile_url: رابط الصفحة التعريفية
promote: ترقية promote: ترقية
protocol: البروتوكول protocol: البروتوكول
public: عمومي public: عمومي
push_subscription_expires: انتهاء الاشتراك ”PuSH“ push_subscription_expires: انتهاء الاشتراك ”PuSH“
redownload: تحديث الصفحة الشخصية redownload: انعش الصفحة التعريفية
reject: ارفض reject: ارفض
reject_all: ارفض الكل reject_all: ارفض الكل
remove_avatar: حذف الصورة الرمزية remove_avatar: حذف الصورة الرمزية
@ -264,7 +267,7 @@ ar:
config: الإعداد config: الإعداد
feature_deletions: الحسابات المحذوفة feature_deletions: الحسابات المحذوفة
feature_invites: روابط الدعوات feature_invites: روابط الدعوات
feature_profile_directory: دليل الحسابات feature_profile_directory: دليل الملفات التعريفية
feature_registrations: التسجيلات feature_registrations: التسجيلات
feature_relay: المُرحّل الفديرالي feature_relay: المُرحّل الفديرالي
feature_spam_check: مكافح البريد المزعج feature_spam_check: مكافح البريد المزعج
@ -294,7 +297,7 @@ ar:
create: إنشاء حظر create: إنشاء حظر
hint: لن تمنع كتلة المجال إنشاء إدخالات حساب في قاعدة البيانات ، ولكنها ستطبق طرق الإشراف المحددة بأثر رجعي وتلقائي على هذه الحسابات. hint: لن تمنع كتلة المجال إنشاء إدخالات حساب في قاعدة البيانات ، ولكنها ستطبق طرق الإشراف المحددة بأثر رجعي وتلقائي على هذه الحسابات.
severity: severity:
desc_html: "<strong>Silence</strong> سيجعل مشاركات الحساب غير مرئية لأي شخص لا يتبعها. <strong>Suspend</strong> سيزيل كل محتوى الحساب ووسائطه وبيانات ملفه الشخصي. Use <strong>None</strong> إذا كنت تريد فقط رفض ملفات الوسائط." desc_html: "<strong>Silence</strong> سيجعل مشاركات الحساب غير مرئية لأي شخص لا يتبعها. <strong>Suspend</strong> سيزيل كل محتوى الحساب ووسائطه وبيانات ملفه التعريفي. Use <strong>None</strong> إذا كنت تريد فقط رفض ملفات الوسائط."
noop: لا شيء noop: لا شيء
silence: كتم silence: كتم
suspend: تعليق suspend: تعليق
@ -437,7 +440,7 @@ ar:
title: إظهار الصور الحساسة في مُعاينات أوبن غراف title: إظهار الصور الحساسة في مُعاينات أوبن غراف
profile_directory: profile_directory:
desc_html: السماح للمستخدمين الكشف عن حساباتهم desc_html: السماح للمستخدمين الكشف عن حساباتهم
title: تفعيل سجل الملفات الشخصية title: تفعيل دليل الصفحات التعريفية
registrations: registrations:
closed_message: closed_message:
desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML desc_html: يتم عرضه على الصفحة الرئيسية عندما يتم غلق تسجيل الحسابات الجديدة. يمكنكم إستخدام علامات الأيتش تي أم أل HTML
@ -497,7 +500,14 @@ ar:
with_media: تحتوي على وسائط with_media: تحتوي على وسائط
tags: tags:
context: السياق context: السياق
directory: في دليل حسابات المستخدمين
in_directory: "%{count} في سجل حسابات المستخدمين" in_directory: "%{count} في سجل حسابات المستخدمين"
last_active: آخر نشاط
most_popular: الأكثر شعبية
most_recent: الأحدث
name: الوسم
review: حالة المراجعة
reviewed: مُراجَع
title: الوسوم title: الوسوم
trending_right_now: متداول اللحظة trending_right_now: متداول اللحظة
unique_uses_today: "%{count} منشورات اليوم" unique_uses_today: "%{count} منشورات اليوم"
@ -527,7 +537,7 @@ ar:
notification_preferences: تعديل خيارات البريد الإلكتروني notification_preferences: تعديل خيارات البريد الإلكتروني
salutation: "%{name}،" salutation: "%{name}،"
settings: 'تغيير تفضيلات البريد الإلكتروني: %{link}' settings: 'تغيير تفضيلات البريد الإلكتروني: %{link}'
view_profile: عرض الملف الشخصي view_profile: اعرض الصفحة التعريفية
view_status: عرض المنشور view_status: عرض المنشور
applications: applications:
created: تم إنشاء التطبيق بنجاح created: تم إنشاء التطبيق بنجاح
@ -577,9 +587,13 @@ ar:
following: 'مرحى! أنت الآن تتبع:' following: 'مرحى! أنت الآن تتبع:'
post_follow: post_follow:
close: أو يمكنك إغلاق هذه النافذة. close: أو يمكنك إغلاق هذه النافذة.
return: عرض الملف الشخصي للمستخدم return: اظهر الملف التعريفي للمستخدم
web: واصل إلى الويب web: واصل إلى الويب
title: إتباع %{acct} title: إتباع %{acct}
challenge:
confirm: واصل
invalid_password: الكلمة السرية خاطئة
prompt: أكِّد الكلمة السرية للمواصلة
datetime: datetime:
distance_in_words: distance_in_words:
about_x_hours: "%{count}سا" about_x_hours: "%{count}سا"
@ -598,8 +612,10 @@ ar:
confirm_password: قم بإدخال كلمتك السرية الحالية للتحقق من هويتك confirm_password: قم بإدخال كلمتك السرية الحالية للتحقق من هويتك
proceed: حذف حساب proceed: حذف حساب
success_msg: تم حذف حسابك بنجاح success_msg: تم حذف حسابك بنجاح
warning:
username_unavailable: سيبقى اسم المستخدم الخاص بك غير متوفر
directories: directories:
directory: سِجلّ الحسابات directory: سِجلّ الصفحات التعريفية
explanation: استكشف مستخدِمين آخرين حسب المواضيع التي تهمهم explanation: استكشف مستخدِمين آخرين حسب المواضيع التي تهمهم
explore_mastodon: استكشف %{title} explore_mastodon: استكشف %{title}
domain_validator: domain_validator:
@ -637,7 +653,7 @@ ar:
mutes: قُمتَ بكتم mutes: قُمتَ بكتم
storage: ذاكرة التخزين storage: ذاكرة التخزين
featured_tags: featured_tags:
add_new: إضافة واحد add_new: أضف واحدًا جديدا
filters: filters:
contexts: contexts:
home: الخيط الزمني الرئيسي home: الخيط الزمني الرئيسي
@ -733,6 +749,15 @@ ar:
too_many: لا يمكن إرفاق أكثر من 4 ملفات too_many: لا يمكن إرفاق أكثر من 4 ملفات
migrations: migrations:
acct: username@domain للحساب الجديد acct: username@domain للحساب الجديد
cancel: ألغِ التوجيه
cancelled_msg: تم إلغاء التوجيه بنجاح.
errors:
not_found: تعذر العثور عليه
followers_count: المتابِعين عند الإنتقال
incoming_migrations: الانتقال مِن حساب آخر
past_migrations: التهجيرات السابقة
proceed_with_move: انقل مشارِكيك
redirecting_to: حسابك موجَّه إلى %{acct}.
moderation: moderation:
title: الإشراف title: الإشراف
notification_mailer: notification_mailer:
@ -882,7 +907,7 @@ ar:
back: عودة إلى ماستدون back: عودة إلى ماستدون
delete: حذف الحسابات delete: حذف الحسابات
development: التطوير development: التطوير
edit_profile: تعديل الملف الشخصي edit_profile: عدّل الصفحة التعريفية
export: تصدير البيانات export: تصدير البيانات
featured_tags: الوسوم الشائعة featured_tags: الوسوم الشائعة
identity_proofs: دلائل الهوية identity_proofs: دلائل الهوية
@ -891,7 +916,7 @@ ar:
migrate: تهجير الحساب migrate: تهجير الحساب
notifications: الإخطارات notifications: الإخطارات
preferences: التفضيلات preferences: التفضيلات
profile: الملف الشخصي profile: الملف التعريفي
relationships: المتابِعون والمتابَعون relationships: المتابِعون والمتابَعون
two_factor_authentication: المُصادقة بخُطوَتَيْن two_factor_authentication: المُصادقة بخُطوَتَيْن
statuses: statuses:
@ -929,6 +954,13 @@ ar:
private: لا يمكن تدبيس تبويق لم يُنشر للعامة private: لا يمكن تدبيس تبويق لم يُنشر للعامة
reblog: لا يمكن تثبيت ترقية reblog: لا يمكن تثبيت ترقية
poll: poll:
total_votes:
few: "%{count} أصوات"
many: "%{count} أصوات"
one: صوت واحد %{count}
other: "%{count} صوتا"
two: صوتين %{count}
zero: بدون صوت %{count}
vote: صوّت vote: صوّت
show_more: أظهر المزيد show_more: أظهر المزيد
sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
@ -983,8 +1015,8 @@ ar:
silence: الحساب محدود silence: الحساب محدود
suspend: الحساب مُعلَّق suspend: الحساب مُعلَّق
welcome: welcome:
edit_profile_action: تهيئة الملف الشخصي edit_profile_action: تهيئة الملف التعريفي
edit_profile_step: يُمكنك·كي تخصيص ملفك الشخصي عن طريق تحميل صورة رمزية ورأسية و بتعديل اسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي. edit_profile_step: يُمكنك·كي تخصيص صفحتك التعريفية عن طريق تحميل صورة رمزية ورأسية و بتعديل اسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي.
explanation: ها هي بعض النصائح قبل بداية الاستخدام explanation: ها هي بعض النصائح قبل بداية الاستخدام
final_action: اشرَع في النشر final_action: اشرَع في النشر
final_step: |- final_step: |-

View File

@ -35,6 +35,13 @@ co:
status_count_before: chì anu pubblicatu status_count_before: chì anu pubblicatu
tagline: Siguità amichi è scopre ancu di più altri tagline: Siguità amichi è scopre ancu di più altri
terms: Cundizione di u serviziu terms: Cundizione di u serviziu
unavailable_content: Cuntinutu micca dispunibule
unavailable_content_description:
reason: 'Ragione:'
rejecting_media: I fugliali media da stu servore ùn saranu micca arregistrati è e vignette ùn saranu micca affissate, duverete cliccà manualmente per accede à l'altru servore è vedeli.
silenced: I statuti da stu servore ùn saranu mai visti tranne nant'a vostra pagina d'accolta s'e voi siguitate l'autore.
suspended: Ùn puderete micca siguità qualsiasi nant'à stu servore, i dati versu o da quallà ùn saranu mai accessi, scambiati o arregistrati.
unavailable_content_html: Mastodon vi parmette in generale di vede u cuntinutu è interagisce cù l'utilizatori di tutti l'altri servori di u fediversu. Quessi sò l'eccezzione fatte nant'à stu servore in particulare.
user_count_after: user_count_after:
one: utilizatore one: utilizatore
other: utilizatori other: utilizatori
@ -547,6 +554,12 @@ co:
new_trending_tag: new_trending_tag:
body: 'U hashtag #%{name} hè in e tendenze oghji, mà ùn hè micca verificatu. Ùn sarà micca mustratu à u pubblicu eccettu s''ellu hè auturizatu, o pudete ancu salvà u furmulariu cusì per ùn mai più avè à ne sente parlà.' body: 'U hashtag #%{name} hè in e tendenze oghji, mà ùn hè micca verificatu. Ùn sarà micca mustratu à u pubblicu eccettu s''ellu hè auturizatu, o pudete ancu salvà u furmulariu cusì per ùn mai più avè à ne sente parlà.'
subject: Novu hashtag in attesa di rivista nant'à %{instance} (#%{name}) subject: Novu hashtag in attesa di rivista nant'à %{instance} (#%{name})
aliases:
add_new: Creà un pseudonimu
created_msg: Novu pseudonimu creatu. Pudete avà inizià u trasferimentu da u vechju contu.
deleted_msg: U pseudonimu hè statu sguassatu. Ùn si puderà più migrà da questu contu à quellu.
hint_html: Per traslucà da un altru contu à questu, quì pudete creà un pseudonimu o "alias", riquisitu per trasferì l'abbunati da u vechju contu à u novu. St'azzione sola <strong>ùn face nunda</strong> è pò esse <strong>annullata senza prublemi</strong>. <strong>A migrazione hè principiata dapoi u vechju contu</strong>.
remove: Sguassà u pseudonimu
appearance: appearance:
advanced_web_interface: Interfaccia web avanzata advanced_web_interface: Interfaccia web avanzata
advanced_web_interface_hint: 'S''è voi vulete fà usu di a larghezza sana di u vostru screnu, l''interfaccia web avanzata vi permette di cunfigurà parechje culonne sfarente per vede tutta l''infurmazione chì vulete vede in listessu tempu: Accolta, nutificazione, linea pubblica, è tutti l''hashtag è liste chì vulete.' advanced_web_interface_hint: 'S''è voi vulete fà usu di a larghezza sana di u vostru screnu, l''interfaccia web avanzata vi permette di cunfigurà parechje culonne sfarente per vede tutta l''infurmazione chì vulete vede in listessu tempu: Accolta, nutificazione, linea pubblica, è tutti l''hashtag è liste chì vulete.'
@ -606,6 +619,7 @@ co:
confirming: In attesa di a cumplezzione di a cunfirmazione di l'e-mail. confirming: In attesa di a cumplezzione di a cunfirmazione di l'e-mail.
functional: U vostru contu hè uperaziunale. functional: U vostru contu hè uperaziunale.
pending: A vostra dumanda hè in attesa di rivista da a squadra di muderazione. Quessa pò piglià un certu tempu. Avete da riceve un'e-mail s'ella hè appruvata. pending: A vostra dumanda hè in attesa di rivista da a squadra di muderazione. Quessa pò piglià un certu tempu. Avete da riceve un'e-mail s'ella hè appruvata.
redirecting_to: U vostru contu hè inattivu perchè riindirizza versu %{acct}.
trouble_logging_in: Difficultà per cunnettavi? trouble_logging_in: Difficultà per cunnettavi?
authorize_follow: authorize_follow:
already_following: Site digià abbunatu·a à stu contu already_following: Site digià abbunatu·a à stu contu
@ -795,6 +809,31 @@ co:
too_many: Ùn si pò micca aghjunghje più di 4 fugliali too_many: Ùn si pò micca aghjunghje più di 4 fugliali
migrations: migrations:
acct: cugnome@duminiu di u novu contu acct: cugnome@duminiu di u novu contu
cancel: Annullà ridirezzione
cancel_explanation: L'annullazione di a ridirezzione hà da riattivà stu contu, mà ùn si puderà micca ricuperà l'abbunati chì sò digià stati trasferriti à l'altru contu.
cancelled_msg: Ridirezzione annullata.
errors:
already_moved: hè digià u contu induve avede traslucatu
missing_also_known_as: ùn fà micca riferenza à stu contu
move_to_self: ùn pò micca esse u contu attuale
not_found: ùn hè micca statu trovu
on_cooldown: Perioda di ricuperazione
followers_count: Abbunati à u mumentu di trasferimentu
incoming_migrations: Traslucà da un'altru contu
incoming_migrations_html: Per spustà da stu contu à un'altru, primu duvete <a href="%{path}">creà un pseudonimu di contu</a>.
moved_msg: Avà u vostru contu riindirizza versu %{acct} è i vostri abbunati sò in corsu di trasferimentu.
not_redirecting: U vostru contu ùn riindirizza micca ancu versu un'altru contu.
on_cooldown: Avede digià migratu u vostru contu. Sta funzionne sarà torna dispunibule in %{count} ghjorni.
past_migrations: Anziane migrazione
proceed_with_move: Trasferì l'abbunati
redirecting_to: U vostru contu riindirizza versu à %{acct}.
warning:
backreference_required: U novu contu deve prima esse cunfiguratu per fà rifirenza cù un pseudonimu à quessu contu
before: 'Nanz''à cuntinuà, leghjete ste note attentamente:'
cooldown: Dopu à a traslucazione, c'hè una perioda di ricuperazione in quella ùn puderete micca cambià torna di contu
disabled_account: U contu attuale ùn puderà più esse utilizatu dop'à st'azzione. Però, puderete accede à a spurtazione di dati o riattivà u contu.
followers: St'azzione hà da spiazzà tutti l'abbunati di u contu attuale nant'à u novu contu
other_data: L'altri dati ùn saranu micca autumaticamente trasferiti
moderation: moderation:
title: Muderazione title: Muderazione
notification_mailer: notification_mailer:
@ -939,6 +978,7 @@ co:
settings: settings:
account: Contu account: Contu
account_settings: Parametri di u contu account_settings: Parametri di u contu
aliases: Pseudonimi di contu
appearance: Apparenza appearance: Apparenza
authorized_apps: Applicazione auturizate authorized_apps: Applicazione auturizate
back: Ritornu nantà Mastodon back: Ritornu nantà Mastodon

View File

@ -250,8 +250,10 @@ cs:
disabled_msg: Emoji bylo úspěšně zakázáno disabled_msg: Emoji bylo úspěšně zakázáno
emoji: Emoji emoji: Emoji
enable: Povolit enable: Povolit
enabled: Povoleno
enabled_msg: Emoji bylo úspěšně povoleno enabled_msg: Emoji bylo úspěšně povoleno
image_hint: PNG až do 50 KB image_hint: PNG až do 50 KB
list: Uvést
listed: Uvedeno listed: Uvedeno
new: new:
title: Přidat nové vlastní emoji title: Přidat nové vlastní emoji
@ -260,6 +262,7 @@ cs:
shortcode_hint: Alespoň 2 znaky, pouze alfanumerické znaky a podtržítka shortcode_hint: Alespoň 2 znaky, pouze alfanumerické znaky a podtržítka
title: Vlastní emoji title: Vlastní emoji
uncategorized: Nezařazená uncategorized: Nezařazená
unlist: Neuvést
unlisted: Neuvedeno unlisted: Neuvedeno
update_failed_msg: Nebylo možné aktualizovat toto emoji update_failed_msg: Nebylo možné aktualizovat toto emoji
updated_msg: Emoji úspěšně aktualizováno! updated_msg: Emoji úspěšně aktualizováno!
@ -395,6 +398,7 @@ cs:
pending: Čekám na souhlas mostu pending: Čekám na souhlas mostu
save_and_enable: Uložit a povolit save_and_enable: Uložit a povolit
setup: Nastavit připojení k mostu setup: Nastavit připojení k mostu
signatures_not_enabled: Mosty nebudou fungovat správně, dokud je povolen bezpečný režim nebo režim bílé listiny
status: Stav status: Stav
title: Mosty title: Mosty
report_notes: report_notes:

View File

@ -21,6 +21,9 @@ cy:
generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith
get_apps: Rhowch gynnig ar ap dyfeis symudol get_apps: Rhowch gynnig ar ap dyfeis symudol
hosted_on: Mastodon wedi ei weinyddu ar %{domain} hosted_on: Mastodon wedi ei weinyddu ar %{domain}
instance_actor_flash: |
Mae'r cyfrif hwn yn actor rhithwir a ddefnyddir i gynrychioli'r gweinydd ei hun ac nid unrhyw ddefnyddiwr unigol.
Fe'i defnyddir at ddibenion ffederasiwn ac ni ddylid ei rwystro oni bai eich bod am rwystro'r achos cyfan, ac os felly dylech ddefnyddio bloc parth.
learn_more: Dysu mwy learn_more: Dysu mwy
privacy_policy: Polisi preifatrwydd privacy_policy: Polisi preifatrwydd
see_whats_happening: Gweld beth sy'n digwydd see_whats_happening: Gweld beth sy'n digwydd
@ -41,6 +44,7 @@ cy:
reason: 'Rheswm:' reason: 'Rheswm:'
rejecting_media: Ni fydd ffeiliau cyfryngau o'r gweinydd hwn yn cael eu prosesu ac ni fydd unrhyw fawd yn cael eu harddangos, sy'n gofyn am glicio â llaw i'r gweinydd arall. rejecting_media: Ni fydd ffeiliau cyfryngau o'r gweinydd hwn yn cael eu prosesu ac ni fydd unrhyw fawd yn cael eu harddangos, sy'n gofyn am glicio â llaw i'r gweinydd arall.
silenced: Ni fydd swyddi o'r gweinydd hwn yn ymddangos yn unman heblaw eich porthiant cartref os dilynwch yr awdur. silenced: Ni fydd swyddi o'r gweinydd hwn yn ymddangos yn unman heblaw eich porthiant cartref os dilynwch yr awdur.
suspended: Ni fyddwch yn gallu dilyn unrhyw un o'r gweinydd hwn, ac ni fydd unrhyw ddata ohono'n cael ei brosesu na'i storio, ac ni chyfnewidir unrhyw ddata.
unavailable_content_html: Yn gyffredinol, mae Mastodon yn caniatáu ichi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn. unavailable_content_html: Yn gyffredinol, mae Mastodon yn caniatáu ichi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.
user_count_after: user_count_after:
few: defnyddwyr few: defnyddwyr
@ -53,6 +57,8 @@ cy:
what_is_mastodon: Beth yw Mastodon? what_is_mastodon: Beth yw Mastodon?
accounts: accounts:
choices_html: 'Dewisiadau %{name}:' choices_html: 'Dewisiadau %{name}:'
endorsements_hint: Gallwch gymeradwyo pobl rydych chi'n eu dilyn o'r rhyngwyneb gwe, a byddan nhw'n ymddangos yma.
featured_tags_hint: Gallwch ychwanegu hashnodau penodol a fydd yn cael eu harddangos yma.
follow: Dilynwch follow: Dilynwch
followers: followers:
few: Dilynwyr few: Dilynwyr
@ -203,6 +209,7 @@ cy:
username: Enw defnyddiwr username: Enw defnyddiwr
warn: Rhybuddio warn: Rhybuddio
web: Gwe web: Gwe
whitelisted: Rhestredig wen
action_logs: action_logs:
actions: actions:
assigned_to_self_report: Aseiniodd %{name} adroddiad %{target} i'w hunan assigned_to_self_report: Aseiniodd %{name} adroddiad %{target} i'w hunan
@ -238,6 +245,7 @@ cy:
deleted_status: "(statws wedi ei ddileu)" deleted_status: "(statws wedi ei ddileu)"
title: Log archwilio title: Log archwilio
custom_emojis: custom_emojis:
assign_category: Neilltuo categori
by_domain: Parth by_domain: Parth
copied_msg: Llwyddwyd i greu copi lleol o'r emoji copied_msg: Llwyddwyd i greu copi lleol o'r emoji
copy: Copïo copy: Copïo
@ -265,6 +273,7 @@ cy:
updated_msg: Llwyddwyd i ddiweddaru'r emoji! updated_msg: Llwyddwyd i ddiweddaru'r emoji!
upload: Uwchlwytho upload: Uwchlwytho
dashboard: dashboard:
authorized_fetch_mode: Modd nôl awdurdodedig
backlog: tasgau heb eu cwblhau backlog: tasgau heb eu cwblhau
config: Cyfluniad config: Cyfluniad
feature_deletions: Dileadau cyfrif feature_deletions: Dileadau cyfrif
@ -290,11 +299,18 @@ cy:
week_interactions: ymadweithiau yr wythnos hon week_interactions: ymadweithiau yr wythnos hon
week_users_active: gweithredol yr wythnos hon week_users_active: gweithredol yr wythnos hon
week_users_new: defnyddwyr yr wythnos hon week_users_new: defnyddwyr yr wythnos hon
whitelist_mode: Modd rhestr wen
domain_allows:
add_new: Rhestrwch parth
created_msg: Rhestrwyd wen parth yn llwyddiannus
destroyed_msg: Mae parth wedi'i dynnu o'r rhestr wen
undo: Tynnwch o'r rhestr wen
domain_blocks: domain_blocks:
add_new: Ychwanegu bloc parth newydd add_new: Ychwanegu bloc parth newydd
created_msg: Mae'r bloc parth nawr yn cael ei brosesu created_msg: Mae'r bloc parth nawr yn cael ei brosesu
destroyed_msg: Mae'r bloc parth wedi ei ddadwneud destroyed_msg: Mae'r bloc parth wedi ei ddadwneud
domain: Parth domain: Parth
edit: Golygu bloc parth
existing_domain_block_html: Rydych yn barod wedi gosod cyfyngau fwy llym ar %{name}, mae rhaid i chi ei <a href="%{unblock_url}">ddadblocio</a> yn gyntaf. existing_domain_block_html: Rydych yn barod wedi gosod cyfyngau fwy llym ar %{name}, mae rhaid i chi ei <a href="%{unblock_url}">ddadblocio</a> yn gyntaf.
new: new:
create: Creu bloc create: Creu bloc
@ -330,6 +346,7 @@ cy:
title: Dadwneud blocio parth ar gyfer %{domain} title: Dadwneud blocio parth ar gyfer %{domain}
undo: Dadwneud undo: Dadwneud
undo: Dadwneud bloc parth undo: Dadwneud bloc parth
view: Gweld bloc parth
email_domain_blocks: email_domain_blocks:
add_new: Ychwanegu add_new: Ychwanegu
created_msg: Llwyddwyd i ychwanegu parth e-bost i'r gosbrestr created_msg: Llwyddwyd i ychwanegu parth e-bost i'r gosbrestr
@ -501,6 +518,7 @@ cy:
delete: Dileu delete: Dileu
nsfw_off: Marcio fel nad yw'n sensitif nsfw_off: Marcio fel nad yw'n sensitif
nsfw_on: Marcio'n sensitif nsfw_on: Marcio'n sensitif
deleted: Dilëwyd
failed_to_execute: Methwyd a gweithredu failed_to_execute: Methwyd a gweithredu
media: media:
title: Cyfryngau title: Cyfryngau
@ -514,6 +532,7 @@ cy:
name: Hashnod name: Hashnod
reviewed: Wedi'i adolygu reviewed: Wedi'i adolygu
title: Hashnodau title: Hashnodau
trending_right_now: Yn tueddu nawr
unreviewed: Heb ei adolygu unreviewed: Heb ei adolygu
title: Gweinyddiaeth title: Gweinyddiaeth
warning_presets: warning_presets:
@ -574,6 +593,14 @@ cy:
reset_password: Ailosod cyfrinair reset_password: Ailosod cyfrinair
security: Diogelwch security: Diogelwch
set_new_password: Gosod cyfrinair newydd set_new_password: Gosod cyfrinair newydd
setup:
title: Gosodiad
status:
account_status: Statws cyfrif
confirming: Aros i gadarnhad e-bost gael ei gwblhau.
functional: Mae eich cyfrif yn gwbl weithredol.
pending: Mae'ch cais yn aros i gael ei adolygu gan ein staff. Gall hyn gymryd cryn amser. Byddwch yn derbyn e-bost os caiff eich cais ei gymeradwyo.
redirecting_to: Mae eich cyfrif yn anactif oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}.
trouble_logging_in: Trafferdd mewngofnodi? trouble_logging_in: Trafferdd mewngofnodi?
authorize_follow: authorize_follow:
already_following: Yr ydych yn dilyn y cyfrif hwn yn barod already_following: Yr ydych yn dilyn y cyfrif hwn yn barod
@ -586,6 +613,11 @@ cy:
return: Dangos proffil y defnyddiwr return: Dangos proffil y defnyddiwr
web: I'r wê web: I'r wê
title: Dilyn %{acct} title: Dilyn %{acct}
challenge:
confirm: Parhau
hint_html: "<strong>Awgrym:</strong> Ni fyddwn yn gofyn i chi am eich cyfrinair eto am yr awr nesaf."
invalid_password: Cyfrinair annilys
prompt: Cadarnhewch gyfrinair i barhau
datetime: datetime:
distance_in_words: distance_in_words:
about_x_hours: "%{count}awr" about_x_hours: "%{count}awr"
@ -601,13 +633,22 @@ cy:
x_months: "%{count}mis" x_months: "%{count}mis"
x_seconds: "%{count}eiliad" x_seconds: "%{count}eiliad"
deletes: deletes:
challenge_not_passed: Nid oedd y wybodaeth a nodoch yn gywir
confirm_password: Mewnbynnwch eich cyfrinair presennol i gadarnhau mai chi sydd yno confirm_password: Mewnbynnwch eich cyfrinair presennol i gadarnhau mai chi sydd yno
confirm_username: Rhowch eich enw defnyddiwr i gadarnhau'r weithdrefn
proceed: Dileu cyfrif proceed: Dileu cyfrif
success_msg: Llwyddwyd i ddileu eich cyfrif success_msg: Llwyddwyd i ddileu eich cyfrif
warning:
before: 'Cyn bwrw ymlaen, darllenwch y nodiadau hyn yn ofalus:'
irreversible: Ni fyddwch yn gallu adfer nac ail-greu eich cyfrif
username_available: Bydd eich enw defnyddiwr ar gael eto
username_unavailable: Ni fydd eich enw defnyddiwr ar gael
directories: directories:
directory: Cyfeiriadur proffil directory: Cyfeiriadur proffil
explanation: Darganfod defnyddwyr yn seiliedig ar eu diddordebau explanation: Darganfod defnyddwyr yn seiliedig ar eu diddordebau
explore_mastodon: Archwilio %{title} explore_mastodon: Archwilio %{title}
domain_validator:
invalid_domain: ddim yn enw parth dilys
errors: errors:
'400': The request you submitted was invalid or malformed. '400': The request you submitted was invalid or malformed.
'403': Nid oes gennych ganiatad i weld y dudalen hon. '403': Nid oes gennych ganiatad i weld y dudalen hon.
@ -665,6 +706,7 @@ cy:
developers: Datblygwyr developers: Datblygwyr
more: Mwy… more: Mwy…
resources: Adnoddau resources: Adnoddau
trending_now: Yn tueddu nawr
generic: generic:
all: Popeth all: Popeth
changes_saved_msg: Llwyddwyd i gadw y newidiadau! changes_saved_msg: Llwyddwyd i gadw y newidiadau!
@ -748,8 +790,12 @@ cy:
too_many: Ni ellir ychwanegu mwy na 4 dogfen too_many: Ni ellir ychwanegu mwy na 4 dogfen
migrations: migrations:
acct: enwdefnyddiwr@parth y cyfrif newydd acct: enwdefnyddiwr@parth y cyfrif newydd
cancel: Canslo ailgyfeirio
errors: errors:
not_found: ni ellid dod o hyd iddo not_found: ni ellid dod o hyd iddo
past_migrations: Ymfudiadau yn y gorffennol
warning:
before: 'Cyn bwrw ymlaen, darllenwch y nodiadau hyn yn ofalus:'
moderation: moderation:
title: Goruwchwyliad title: Goruwchwyliad
notification_mailer: notification_mailer:
@ -904,6 +950,7 @@ cy:
settings: settings:
account: Cyfrif account: Cyfrif
account_settings: Gosodiadau'r cyfrif account_settings: Gosodiadau'r cyfrif
aliases: Aliasau cyfrif
appearance: Arddangosiad appearance: Arddangosiad
authorized_apps: Apiau awdurdodedig authorized_apps: Apiau awdurdodedig
back: Yn ôl i Mastodon back: Yn ôl i Mastodon
@ -978,6 +1025,8 @@ cy:
pinned: Tŵt wedi'i binio pinned: Tŵt wedi'i binio
reblogged: hybwyd reblogged: hybwyd
sensitive_content: Cynnwys sensitif sensitive_content: Cynnwys sensitif
tags:
does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol
terms: terms:
body_html: | body_html: |
<h2>Polisi Preifatrwydd</h2> <h2>Polisi Preifatrwydd</h2>
@ -1095,7 +1144,9 @@ cy:
disable: Er bod eich cyfrif wedi'i rewi, mae eich data cyfrif yn parhau i fod yn gyfan, ond ni allwch chi berfformio unrhyw gamau nes ei ddatgloi. disable: Er bod eich cyfrif wedi'i rewi, mae eich data cyfrif yn parhau i fod yn gyfan, ond ni allwch chi berfformio unrhyw gamau nes ei ddatgloi.
silence: Pan mae eich cyfrif yn gyfyngiedig, dim ond pobl sydd yn barod yn eich dilyn yn gweld eich tŵtiau ar y gweinydd hon, a efallai byddwch yn cael eich tynnu o restrau cyhoeddus. Er hyn, gall eraill eich dilyn chi wrth law. silence: Pan mae eich cyfrif yn gyfyngiedig, dim ond pobl sydd yn barod yn eich dilyn yn gweld eich tŵtiau ar y gweinydd hon, a efallai byddwch yn cael eich tynnu o restrau cyhoeddus. Er hyn, gall eraill eich dilyn chi wrth law.
suspend: Mae eich cyfrif wedi cael ei wahardd, a mae gyd o'ch tŵtiau a'ch ffeiliau cyfrwng uwchlwythadwy wedi cael eu tynnu or gweinydd yn barhaol, ac o weinyddau ble yr oedd eich dilynwyr. suspend: Mae eich cyfrif wedi cael ei wahardd, a mae gyd o'ch tŵtiau a'ch ffeiliau cyfrwng uwchlwythadwy wedi cael eu tynnu or gweinydd yn barhaol, ac o weinyddau ble yr oedd eich dilynwyr.
get_in_touch: Gallwch ymateb i'r e-bost hwn i gysylltu â staff %{instance}.
review_server_policies: Adolygu polisïau'r gweinydd review_server_policies: Adolygu polisïau'r gweinydd
statuses: 'Yn benodol, ar gyfer:'
subject: subject:
disable: Mae'ch cyfrif %{acct} wedi'i rewi disable: Mae'ch cyfrif %{acct} wedi'i rewi
none: Rhybudd am %{acct} none: Rhybudd am %{acct}

View File

@ -45,6 +45,10 @@ ar:
extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الاهتمام لهذه الرسالة. فكلِمَتُك السرية تبقى هي مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد إنشاء كلمة سرية جديدة. extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الاهتمام لهذه الرسالة. فكلِمَتُك السرية تبقى هي مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد إنشاء كلمة سرية جديدة.
subject: 'ماستدون: تعليمات استعادة كلمة المرور' subject: 'ماستدون: تعليمات استعادة كلمة المرور'
title: إعادة تعيين كلمة السر title: إعادة تعيين كلمة السر
two_factor_disabled:
title: إنّ 2FA معطّل
two_factor_enabled:
title: إنّ 2FA نشِط
unlock_instructions: unlock_instructions:
subject: 'ماستدون: تعليمات فك القفل' subject: 'ماستدون: تعليمات فك القفل'
omniauth_callbacks: omniauth_callbacks:

View File

@ -1,98 +1 @@
--- es-AR:
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'
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:"

View File

@ -46,6 +46,18 @@ hu:
extra: Amennyiben nem te kezdeményezted a módosítást, kérjük tekintsd ezt az e-mailt tárgytalannak. A Mastodon fiókodhoz tartozó jelszavad változatlan marad mindaddig, amíg újat nem hozol létre a fenti linkre kattintva. extra: Amennyiben nem te kezdeményezted a módosítást, kérjük tekintsd ezt az e-mailt tárgytalannak. A Mastodon fiókodhoz tartozó jelszavad változatlan marad mindaddig, amíg újat nem hozol létre a fenti linkre kattintva.
subject: 'Mastodon: Jelszó visszaállítási lépések' subject: 'Mastodon: Jelszó visszaállítási lépések'
title: Jelszó visszaállítása title: Jelszó visszaállítása
two_factor_disabled:
explanation: A fiókod kétlépcsős hitelesítését letiltottuk. A bejelentkezés most már csak e-mail címmel és jelszóval lehetséges.
subject: Kétlépcsős azonosítás letiltva
title: Kétlépcsős hitelesítés engedélyezve
two_factor_enabled:
explanation: Kétlépcsős hitelesítés engedélyezve van a fiókodban. Bejelentkezéshez a párosított TOTP alkalmazás által létrehozott tokenre lesz szükség.
subject: Kétlépcsős azonosítás engedélyezve
title: Kétlépcsős hitelesítés engedélyezve
two_factor_recovery_codes_changed:
explanation: A korábbi helyreállítási kódokat letiltottuk, és újakat generáltunk.
subject: Kétlépcsős helyreállítási kódok újra létrejöttek
title: A kétlépcsős kódok megváltozott
unlock_instructions: unlock_instructions:
subject: 'Mastodon: Feloldási lépések' subject: 'Mastodon: Feloldási lépések'
omniauth_callbacks: omniauth_callbacks:

View File

@ -46,6 +46,18 @@ ja:
extra: この要求に心当たりがない場合、このメールを無視してください。上記リンク先にアクセスし新しいものを作成するまでパスワードは変更されません。 extra: この要求に心当たりがない場合、このメールを無視してください。上記リンク先にアクセスし新しいものを作成するまでパスワードは変更されません。
subject: 'Mastodon: パスワード再発行' subject: 'Mastodon: パスワード再発行'
title: パスワード再発行 title: パスワード再発行
two_factor_disabled:
explanation: あなたのアカウントの二段階認証が無効化されました。メールとパスワードのみでログインできます。
subject: 'Mastodon: 二段階認証が無効になりました'
title: 二段階認証が無効化されました
two_factor_enabled:
explanation: あなたのアカウントの二段階認証が有効化されました。ログインするには TOTP アプリで生成されたコードが必要です。
subject: 'Mastodon: 二段階認証が有効になりました'
title: 二段階認証が有効化されました
two_factor_recovery_codes_changed:
explanation: 以前のリカバリーコードが無効化され、新しいコードが生成されました。
subject: 'Mastodon: 二段階認証のリカバリーコードが再生成されました'
title: 二段階認証のリカバリーコードが変更されました
unlock_instructions: unlock_instructions:
subject: 'Mastodon: アカウントのロックの解除' subject: 'Mastodon: アカウントのロックの解除'
omniauth_callbacks: omniauth_callbacks:

View File

@ -133,7 +133,7 @@ ar:
read:search: البحث مكانك read:search: البحث مكانك
read:statuses: رؤية كافة المنشورات read:statuses: رؤية كافة المنشورات
write: تغيير كافة بيانات حسابك write: تغيير كافة بيانات حسابك
write:accounts: تعديل ملفك الشخصي write:accounts: تعديل صفحتك التعريفية
write:blocks: حجب الحسابات و النطاقات write:blocks: حجب الحسابات و النطاقات
write:favourites: الإعجاب بمنشورات write:favourites: الإعجاب بمنشورات
write:filters: إنشاء عوامل تصفية write:filters: إنشاء عوامل تصفية

View File

@ -1,148 +1 @@
--- es-AR:
es:
activerecord:
attributes:
doorkeeper/application:
name: Nombre de aplicación
redirect_uri: URI para redirección
scopes: Ámbitos
website: Sitio web
errors:
models:
doorkeeper/application:
attributes:
redirect_uri:
fragment_present: no puede contener un fragmento.
invalid_uri: debe ser un URI válido.
relative_uri: debe ser una URI absoluta.
secured_uri: debe ser un URI HTTPS/SSL.
doorkeeper:
applications:
buttons:
authorize: Autorizar
cancel: Cancelar
destroy: Destruir
edit: Editar
submit: Enviar
confirmations:
destroy: "¿Está seguro?"
edit:
title: Editar aplicación
form:
error: "¡Uuups! Compruebe su formulario"
help:
native_redirect_uri: Utilice %{native_redirect_uri} para pruebas locales
redirect_uri: Utilice una línea por URI
scopes: Separe los ámbitos con espacios. Déjelo en blanco para utilizar los ámbitos por defecto.
index:
application: Aplicación
callback_url: URL de callback
delete: Eliminar
name: Nombre
new: Nueva aplicación
scopes: Ámbitos
show: Mostrar
title: Sus aplicaciones
new:
title: Nueva aplicación
show:
actions: Acciones
application_id: Id de la aplicación
callback_urls: URLs de callback
scopes: Ámbitos
secret: Secreto
title: 'Aplicación: %{name}'
authorizations:
buttons:
authorize: Autorizar
deny: Desautorizar
error:
title: Ha ocurrido un error
new:
able_to: Será capaz de
prompt: La aplicación %{client_name} solicita tener acceso a su cuenta
title: Se requiere autorización
show:
title: Copia este código de autorización y pégalo en la aplicación.
authorized_applications:
buttons:
revoke: Revocar
confirmations:
revoke: "¿Está seguro?"
index:
application: Aplicación
created_at: Creado el
date_format: "%A-%m-%d %H:%M:%S"
scopes: Ámbitos
title: Sus aplicaciones autorizadas
errors:
messages:
access_denied: El propietario del recurso o servidor de autorización denegó la petición.
credential_flow_not_configured: Las credenciales de contraseña del propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_from_credentials está sin configurar.
invalid_client: La autentificación del cliente falló debido o a que es un cliente desconocido o no está incluída la autentificación del cliente o el método de autentificación no está confirmado.
invalid_grant: La concesión de autorización ofrecida es inválida, venció, se revocó, no coincide con la URI de redirección utilizada en la petición de autorización, o fue emitida para otro cliente.
invalid_redirect_uri: La URI de redirección incluida no es válida.
invalid_request: En la petición falta un parámetro necesario o incluye un valor de parámetro no soportado o tiene otro tipo de formato incorrecto.
invalid_resource_owner: Las credenciales proporcionadas del propietario del recurso no son válidas, o el propietario del recurso no puede ser encontrado
invalid_scope: El ámbito pedido es inválido, desconocido o erróneo.
invalid_token:
expired: El autentificador de acceso expiró
revoked: El autentificador de acceso fue revocado
unknown: El autentificador de acceso es inválido
resource_owner_authenticator_not_configured: El propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_authenticator está sin configurar.
server_error: El servidor de la autorización entontró una condición inesperada que le impidió cumplir con la solicitud.
temporarily_unavailable: El servidor de la autorización es actualmente incapaz de manejar la petición debido a una sobrecarga temporal o un trabajo de mantenimiento del servidor.
unauthorized_client: El cliente no está autorizado a realizar esta petición utilizando este método.
unsupported_grant_type: El tipo de concesión de autorización no está soportado por el servidor de autorización.
unsupported_response_type: El servidor de autorización no soporta este tipo de respuesta.
flash:
applications:
create:
notice: Aplicación creada.
destroy:
notice: Aplicación eliminada.
update:
notice: Aplicación actualizada.
authorized_applications:
destroy:
notice: Aplicación revocada.
layouts:
admin:
nav:
applications: Aplicaciones
oauth2_provider: Proveedor OAuth2
application:
title: OAuth autorización requerida
scopes:
admin:read: leer todos los datos en el servidor
admin:read:accounts: leer información sensible de todas las cuentas
admin:read:reports: leer información sensible de todos los informes y cuentas reportadas
admin:write: modificar todos los datos en el servidor
admin:write:accounts: realizar acciones de moderación en cuentas
admin:write:reports: realizar acciones de moderación en informes
follow: seguir, bloquear, desbloquear y dejar de seguir cuentas
push: recibir tus notificaciones push
read: leer los datos de tu cuenta
read:accounts: ver información de cuentas
read:blocks: ver a quién has bloqueado
read:favourites: ver tus favoritos
read:filters: ver tus filtros
read:follows: ver a quién sigues
read:lists: ver tus listas
read:mutes: ver a quién has silenciado
read:notifications: ver tus notificaciones
read:reports: ver tus informes
read:search: buscar en su nombre
read:statuses: ver todos los estados
write: publicar en tu nombre
write:accounts: modifica tu perfil
write:blocks: bloquear cuentas y dominios
write:favourites: toots favoritos
write:filters: crear filtros
write:follows: seguir usuarios
write:lists: crear listas
write:media: subir archivos multimedia
write:mutes: silenciar usuarios y conversaciones
write:notifications: limpia tus notificaciones
write:reports: reportar a otras personas
write:statuses: publicar estados

View File

@ -35,6 +35,9 @@ el:
status_count_before: Που έγραψαν status_count_before: Που έγραψαν
tagline: Ακολούθησε τους γνωστούς σου και ανακάλυψε νέους ανθρώπους tagline: Ακολούθησε τους γνωστούς σου και ανακάλυψε νέους ανθρώπους
terms: Όροι χρήσης terms: Όροι χρήσης
unavailable_content: Μη διαθέσιμο
unavailable_content_description:
reason: 'Αιτία:'
user_count_after: user_count_after:
one: χρήστης one: χρήστης
other: χρήστες other: χρήστες
@ -235,6 +238,7 @@ el:
disabled_msg: Επιτυχής απενεργοποίηση αυτού του emoji disabled_msg: Επιτυχής απενεργοποίηση αυτού του emoji
emoji: Emoji emoji: Emoji
enable: Ενεργοποίηση enable: Ενεργοποίηση
enabled: Ενεργοποιημένα
enabled_msg: Επιτυχής ενεργοποίηση αυτού του emoji enabled_msg: Επιτυχής ενεργοποίηση αυτού του emoji
image_hint: PNG έως 50KB image_hint: PNG έως 50KB
listed: Αναφερθέντα listed: Αναφερθέντα
@ -618,6 +622,10 @@ el:
return: Δείξε το προφίλ του χρήστη return: Δείξε το προφίλ του χρήστη
web: Πήγαινε στο δίκτυο web: Πήγαινε στο δίκτυο
title: Ακολούθησε %{acct} title: Ακολούθησε %{acct}
challenge:
confirm: Συνέχεια
invalid_password: Μη έγκυρο συνθηματικό
prompt: Επιβεβαίωση συνθηματικού για συνέχεια
datetime: datetime:
distance_in_words: distance_in_words:
about_x_hours: "%{count}ω" about_x_hours: "%{count}ω"
@ -686,7 +694,7 @@ el:
domain_blocks: Μπλοκαρίσματα κόμβων domain_blocks: Μπλοκαρίσματα κόμβων
follows: Ακολουθείς follows: Ακολουθείς
lists: Λίστες lists: Λίστες
mutes: Αποσιωπάς mutes: Αποσιωπήσεις
storage: Αποθήκευση πολυμέσων storage: Αποθήκευση πολυμέσων
featured_tags: featured_tags:
add_new: Προσθήκη νέας add_new: Προσθήκη νέας
@ -790,6 +798,10 @@ el:
too_many: Δεν γίνεται να προσθέσεις περισσότερα από 4 αρχεία too_many: Δεν γίνεται να προσθέσεις περισσότερα από 4 αρχεία
migrations: migrations:
acct: ΌνομαΧρήστη@Τομέας του νέου λογαριασμού acct: ΌνομαΧρήστη@Τομέας του νέου λογαριασμού
cancel: Ακύρωση ανακατεύθυνσης
errors:
not_found: δεν βρέθηκε
proceed_with_move: Μετακίνηση ακολούθων
moderation: moderation:
title: Συντονισμός title: Συντονισμός
notification_mailer: notification_mailer:

View File

@ -242,8 +242,10 @@ en:
disabled_msg: Successfully disabled that emoji disabled_msg: Successfully disabled that emoji
emoji: Emoji emoji: Emoji
enable: Enable enable: Enable
enabled: Enabled
enabled_msg: Successfully enabled that emoji enabled_msg: Successfully enabled that emoji
image_hint: PNG up to 50KB image_hint: PNG up to 50KB
list: List
listed: Listed listed: Listed
new: new:
title: Add new custom emoji title: Add new custom emoji
@ -252,12 +254,13 @@ en:
shortcode_hint: At least 2 characters, only alphanumeric characters and underscores shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
title: Custom emojis title: Custom emojis
uncategorized: Uncategorized uncategorized: Uncategorized
unlist: Unlist
unlisted: Unlisted unlisted: Unlisted
update_failed_msg: Could not update that emoji update_failed_msg: Could not update that emoji
updated_msg: Emoji successfully updated! updated_msg: Emoji successfully updated!
upload: Upload upload: Upload
dashboard: dashboard:
authorized_fetch_mode: Authorized fetch mode authorized_fetch_mode: Secure mode
backlog: backlogged jobs backlog: backlogged jobs
config: Configuration config: Configuration
feature_deletions: Account deletions feature_deletions: Account deletions
@ -383,6 +386,7 @@ en:
pending: Waiting for relay's approval pending: Waiting for relay's approval
save_and_enable: Save and enable save_and_enable: Save and enable
setup: Setup a relay connection setup: Setup a relay connection
signatures_not_enabled: Relays will not work correctly while secure mode or whitelist mode is enabled
status: Status status: Status
title: Relays title: Relays
report_notes: report_notes:
@ -827,13 +831,16 @@ en:
past_migrations: Past migrations past_migrations: Past migrations
proceed_with_move: Move followers proceed_with_move: Move followers
redirecting_to: Your account is redirecting to %{acct}. redirecting_to: Your account is redirecting to %{acct}.
set_redirect: Set redirect
warning: warning:
backreference_required: The new account must first be configured to back-reference this one backreference_required: The new account must first be configured to back-reference this one
before: 'Before proceeding, please read these notes carefully:' before: 'Before proceeding, please read these notes carefully:'
cooldown: After moving there is a cooldown period during which you will not be able to move again cooldown: After moving there is a cooldown period during which you will not be able to move again
disabled_account: Your current account will not be fully usable afterwards. However, you will have access to data export as well as re-activation. disabled_account: Your current account will not be fully usable afterwards. However, you will have access to data export as well as re-activation.
followers: This action will move all followers from the current account to the new account followers: This action will move all followers from the current account to the new account
only_redirect_html: Alternatively, you can <a href="%{path}">only put up a redirect on your profile</a>.
other_data: No other data will be moved automatically other_data: No other data will be moved automatically
redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches
moderation: moderation:
title: Moderation title: Moderation
notification_mailer: notification_mailer:

View File

@ -502,6 +502,9 @@ eo:
context: Kunteksto context: Kunteksto
directory: En la adresaro directory: En la adresaro
in_directory: "%{count} en adresaro" in_directory: "%{count} en adresaro"
last_active: Lasta aktiva
most_recent: Plej lasta
name: Kradvorto
review: La statuso de la recenzo review: La statuso de la recenzo
reviewed: Recenzis reviewed: Recenzis
title: Kradvortoj title: Kradvortoj
@ -530,6 +533,7 @@ eo:
advanced_web_interface_hint: 'Se vi volas uzi la tutan larĝecon de via ekrano, la kompleksa reta interfaco permesas al vi agordi multajn malsamajn kolumnojn por vidi tiom da informoj kiom vi volas samtempe: Hejmo, sciigoj, fratara tempolinio, kaj ajna kvanto de listoj kaj kradvortoj.' advanced_web_interface_hint: 'Se vi volas uzi la tutan larĝecon de via ekrano, la kompleksa reta interfaco permesas al vi agordi multajn malsamajn kolumnojn por vidi tiom da informoj kiom vi volas samtempe: Hejmo, sciigoj, fratara tempolinio, kaj ajna kvanto de listoj kaj kradvortoj.'
animations_and_accessibility: Animacioj kaj alirebleco animations_and_accessibility: Animacioj kaj alirebleco
confirmation_dialogs: Konfirmaj fenestroj confirmation_dialogs: Konfirmaj fenestroj
discovery: Eltrovo
sensitive_content: Tikla enhavo sensitive_content: Tikla enhavo
application_mailer: application_mailer:
notification_preferences: Ŝanĝi retmesaĝajn preferojn notification_preferences: Ŝanĝi retmesaĝajn preferojn
@ -552,6 +556,8 @@ eo:
checkbox_agreement_html: Mi samopinii al la <a href="%{rules_path}" target="_blank">Servo reguloj</a> kaj <a href="%{terms_path}" target="_blank">kondiĉo al servadon</a> checkbox_agreement_html: Mi samopinii al la <a href="%{rules_path}" target="_blank">Servo reguloj</a> kaj <a href="%{terms_path}" target="_blank">kondiĉo al servadon</a>
delete_account: Forigi konton delete_account: Forigi konton
delete_account_html: Se vi deziras forigi vian konton, vi povas <a href="%{path}">fari tion ĉi tie</a>. Vi bezonos konfirmi vian peton. delete_account_html: Se vi deziras forigi vian konton, vi povas <a href="%{path}">fari tion ĉi tie</a>. Vi bezonos konfirmi vian peton.
description:
prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ!
didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi? didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi?
forgot_password: Pasvorto forgesita? forgot_password: Pasvorto forgesita?
invalid_reset_password_token: Ĵetono por restarigi pasvorton nevalida aŭ eksvalida. Bonvolu peti novan. invalid_reset_password_token: Ĵetono por restarigi pasvorton nevalida aŭ eksvalida. Bonvolu peti novan.
@ -586,6 +592,10 @@ eo:
return: Montri la profilon de la uzanto return: Montri la profilon de la uzanto
web: Iri al reto web: Iri al reto
title: Sekvi %{acct} title: Sekvi %{acct}
challenge:
confirm: Daŭrigi
invalid_password: Nevalida pasvorto
prompt: Konfirmi pasvorton por daŭrigi
datetime: datetime:
distance_in_words: distance_in_words:
about_x_hours: "%{count}h" about_x_hours: "%{count}h"

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ fa:
api: رابط برنامه‌نویسی کاربردی api: رابط برنامه‌نویسی کاربردی
apps: اپ‌های موبایل apps: اپ‌های موبایل
apps_platforms: ماستدون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید apps_platforms: ماستدون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید
browse_directory: در فهرست گزیدهٔ کاربران این سرور چرخی بزنید و کاربران را بر اساس علاقه‌مندی‌هایشان پیدا کنید browse_directory: کاربران این سرور را بر اساس علاقه‌مندی‌هایشان پیدا کنید
browse_public_posts: فهرست لحظه‌ای نوشته‌های عمومی در ماستدون را ببینید browse_public_posts: فهرست لحظه‌ای نوشته‌های عمومی در ماستدون را ببینید
contact: تماس contact: تماس
contact_missing: تعیین نشده contact_missing: تعیین نشده

View File

@ -242,8 +242,10 @@ fr:
disabled_msg: Émoji désactivé avec succès! disabled_msg: Émoji désactivé avec succès!
emoji: Émoji emoji: Émoji
enable: Activer enable: Activer
enabled: Activé
enabled_msg: Émoji activé avec succès enabled_msg: Émoji activé avec succès
image_hint: PNG de moins de 50Ko image_hint: PNG de moins de 50Ko
list: Liste
listed: Listé listed: Listé
new: new:
title: Ajouter un nouvel émoji personnalisé title: Ajouter un nouvel émoji personnalisé
@ -252,6 +254,7 @@ fr:
shortcode_hint: Au moins deux caractères, seulement des caractères alphanumériques ou des tirets bas shortcode_hint: Au moins deux caractères, seulement des caractères alphanumériques ou des tirets bas
title: Émojis personnalisés title: Émojis personnalisés
uncategorized: Non catégorisé uncategorized: Non catégorisé
unlist: Délisté
unlisted: Délisté unlisted: Délisté
update_failed_msg: Na pas pu mettre à jour cet émoji update_failed_msg: Na pas pu mettre à jour cet émoji
updated_msg: Émoji mis à jour avec succès! updated_msg: Émoji mis à jour avec succès!
@ -383,6 +386,7 @@ fr:
pending: En attente de lapprobation du relai pending: En attente de lapprobation du relai
save_and_enable: Sauvegarder et activer save_and_enable: Sauvegarder et activer
setup: Paramétrer une connexion de relais setup: Paramétrer une connexion de relais
signatures_not_enabled: Les relais ne fonctionneront pas correctement lorsque le mode sécurisé ou le mode liste blanche est activé
status: Statut status: Statut
title: Relais title: Relais
report_notes: report_notes:

View File

@ -35,6 +35,13 @@ hu:
status_count_before: eddig status_count_before: eddig
tagline: Kövess barátokat és találj újakat tagline: Kövess barátokat és találj újakat
terms: Felhasználási feltételek terms: Felhasználási feltételek
unavailable_content: A tartalom nem elérhető
unavailable_content_description:
reason: 'Indok:'
rejecting_media: A szerverről származó médiafájlok nem kerülnek feldolgozásra, és nem jelennek meg miniatűrök, amelyek kézi átkattintást igényelnek a másik szerverre.
silenced: A szerver hozzászólásai csak a saját hírvonalon jelennek meg, ha követik a szerzőt.
suspended: Nem fogsz tudni követni senkit ebből a szerverből, és nem kerül feldolgozásra vagy tárolásra a tőle származó adat, és nincs adatcsere.
unavailable_content_html: A Mastodon általában mindenféle tartalomcserét és interakciót lehetővé tesz bármelyik szerverrel a fediverzumban. Ezek azok a kivételek, melyek a mi szerverünkön érvényben vannak.
user_count_after: user_count_after:
one: felhasználónk one: felhasználónk
other: felhasználónk other: felhasználónk
@ -42,6 +49,8 @@ hu:
what_is_mastodon: Mi a Mastodon? what_is_mastodon: Mi a Mastodon?
accounts: accounts:
choices_html: "%{name} választásai:" choices_html: "%{name} választásai:"
endorsements_hint: A webes felületen jóváhagyhatod a követett embereket, és itt jelennek meg.
featured_tags_hint: Szerepeltethetsz bizonyos hashtageket, melyek itt jelennek majd meg.
follow: Követés follow: Követés
followers: followers:
one: Követő one: Követő
@ -53,6 +62,7 @@ hu:
media: Média media: Média
moved_html: "%{name} ide költözött: %{new_profile_link}" moved_html: "%{name} ide költözött: %{new_profile_link}"
network_hidden: Ez az információ nem elérhető network_hidden: Ez az információ nem elérhető
never_active: Soha
nothing_here: Nincs itt semmi! nothing_here: Nincs itt semmi!
people_followed_by: "%{name} követettjei" people_followed_by: "%{name} követettjei"
people_who_follow: "%{name} követői" people_who_follow: "%{name} követői"
@ -219,10 +229,12 @@ hu:
deleted_status: "(törölt tülk)" deleted_status: "(törölt tülk)"
title: Audit napló title: Audit napló
custom_emojis: custom_emojis:
assign_category: Kategóriák
by_domain: Domain by_domain: Domain
copied_msg: Sikeresen létrehoztuk az emoji helyi másolatát copied_msg: Sikeresen létrehoztuk az emoji helyi másolatát
copy: Másolás copy: Másolás
copy_failed_msg: Emoji helyi másolatának létrehozása sikertelen copy_failed_msg: Emoji helyi másolatának létrehozása sikertelen
create_new_category: Új kategória létrehozása
created_msg: Emoji létrehozva! created_msg: Emoji létrehozva!
delete: Törlés delete: Törlés
destroyed_msg: Emoji törlése sikeres! destroyed_msg: Emoji törlése sikeres!
@ -239,6 +251,7 @@ hu:
shortcode: Rövidítés shortcode: Rövidítés
shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás
title: Egyedi emojik title: Egyedi emojik
uncategorized: Nem kategorizált
unlisted: Nincs listázva unlisted: Nincs listázva
update_failed_msg: Nem sikerült frissíteni az emojit update_failed_msg: Nem sikerült frissíteni az emojit
updated_msg: Emoji sikeresen frissítve! updated_msg: Emoji sikeresen frissítve!
@ -418,6 +431,16 @@ hu:
custom_css: custom_css:
desc_html: Változtasd meg a kinézetet ebben a CSS-ben, mely minden oldalon be fog töltődni desc_html: Változtasd meg a kinézetet ebben a CSS-ben, mely minden oldalon be fog töltődni
title: Egyedi CSS title: Egyedi CSS
default_noindex:
desc_html: Olyan felhasználókat érinti, akik nem módosították ezt a beállítást
title: Alapértelmezésként ne indexeljék a keresők a felhasználóinkat
domain_blocks:
all: Mindenkinek
disabled: Senkinek
title: Domain tiltások megjelenitése
users: Bejelentkezett helyi felhasználóknak
domain_blocks_rationale:
title: Mutasd meg az indokolást
hero: hero:
desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk
title: Hősi kép title: Hősi kép
@ -487,6 +510,7 @@ hu:
delete: Törlés delete: Törlés
nsfw_off: Szenzitív megjelölés törlése nsfw_off: Szenzitív megjelölés törlése
nsfw_on: Megjelölés szenzitív tartalomként nsfw_on: Megjelölés szenzitív tartalomként
deleted: Törölve
failed_to_execute: Végrehajtás sikertelen failed_to_execute: Végrehajtás sikertelen
media: media:
title: Média title: Média
@ -501,6 +525,10 @@ hu:
context: Környezet context: Környezet
directory: Katalógusban directory: Katalógusban
in_directory: "%{count} a katalógusban" in_directory: "%{count} a katalógusban"
last_active: Utoljára aktív
most_popular: Legnépszerűbb
most_recent: Legutóbbi
name: Címke
review: Engedélyezés állapota review: Engedélyezés állapota
reviewed: Engedélyezett reviewed: Engedélyezett
title: Hashtagek title: Hashtagek
@ -526,6 +554,12 @@ hu:
new_trending_tag: new_trending_tag:
body: 'A #%{name} hashtag trendi a mai napon, de még nem engedélyeztük eddig. Nem mutatjuk meg nyilvánosan, hacsak nem engedélyezed. Csak simán mentsd az űrlapot, ha soha többé nem akarsz erről a hashtagről hallani.' body: 'A #%{name} hashtag trendi a mai napon, de még nem engedélyeztük eddig. Nem mutatjuk meg nyilvánosan, hacsak nem engedélyezed. Csak simán mentsd az űrlapot, ha soha többé nem akarsz erről a hashtagről hallani.'
subject: Új hashtag (#%{name}) engedélyezésre vár a %{instance} szerveren subject: Új hashtag (#%{name}) engedélyezésre vár a %{instance} szerveren
aliases:
add_new: Alias készítése
created_msg: Elkészült az új aliasod. Most már elkezdheted a költöztetést a régi fiókból.
deleted_msg: Sikeresen eltávolítottad az aliast. A fiókról erre a fiókra való áttérés már nem lehetséges.
hint_html: Ha másik fiókról kívánsz átlépni erre a fiókra, itt létrehozhatsz egy aliast, amelyre szükség van, mielőtt folytathatod a követők áthelyezését a régi fiókból erre. Ez az áthelyezés önmagában <strong>ártalmatlan és visszafordítható</strong> folyamat. <strong>A fiók áttelepítését a régi fiókból indul el. </strong>
remove: Alias szétkapcsolása
appearance: appearance:
advanced_web_interface: Haladó webes felület advanced_web_interface: Haladó webes felület
advanced_web_interface_hint: 'Ha szeretnéd, a teljes képernyőszélességet felhasználhatod. A haladó webes felülettel különböző oszlopokat állíthatsz be, hogy egyszerre annyi infót láthass, amennyit csak akarsz: Saját idővonal, értesítések, föderációs idővonal, bármennyi lista vagy hashtag.' advanced_web_interface_hint: 'Ha szeretnéd, a teljes képernyőszélességet felhasználhatod. A haladó webes felülettel különböző oszlopokat állíthatsz be, hogy egyszerre annyi infót láthass, amennyit csak akarsz: Saját idővonal, értesítések, föderációs idővonal, bármennyi lista vagy hashtag.'
@ -555,6 +589,10 @@ hu:
checkbox_agreement_without_rules_html: Egyetértek a <a href="%{terms_path}" target="_blank">felhasználási feltételekkel</a> checkbox_agreement_without_rules_html: Egyetértek a <a href="%{terms_path}" target="_blank">felhasználási feltételekkel</a>
delete_account: Felhasználói fiók törlése delete_account: Felhasználói fiók törlése
delete_account_html: Felhasználói fiókod törléséhez <a href="%{path}">kattints ide</a>. A rendszer újbóli megerősítést fog kérni. delete_account_html: Felhasználói fiókod törléséhez <a href="%{path}">kattints ide</a>. A rendszer újbóli megerősítést fog kérni.
description:
prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz erre a Mastodon szerverre!"
prefix_sign_up: Regisztrláj még ma a Mastodonra!
suffix: Egy fiókkal követhetsz másokat, tülkölhetsz, eszmét cserélhetsz más Mastodon szerverek felhasználóival!
didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket? didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket?
forgot_password: Elfelejtetted a jelszavad? forgot_password: Elfelejtetted a jelszavad?
invalid_reset_password_token: A jelszó-visszaállítási kulcs nem megfelelő vagy lejárt. Kérlek generálj egy újat. invalid_reset_password_token: A jelszó-visszaállítási kulcs nem megfelelő vagy lejárt. Kérlek generálj egy újat.
@ -581,6 +619,7 @@ hu:
confirming: Várakozás a visszaigazolásra. confirming: Várakozás a visszaigazolásra.
functional: A fiókod teljesen működőképes. functional: A fiókod teljesen működőképes.
pending: A jelentkezésed engedélyezésre vár. Ez eltarthat egy ideig. Kapsz egy e-mailt, ha az elbírálás megtörtént. pending: A jelentkezésed engedélyezésre vár. Ez eltarthat egy ideig. Kapsz egy e-mailt, ha az elbírálás megtörtént.
redirecting_to: A fiókod inaktív, mert jelenleg ide %{acct} van átirányítva.
trouble_logging_in: Problémád van a bejelentkezéssel? trouble_logging_in: Problémád van a bejelentkezéssel?
authorize_follow: authorize_follow:
already_following: Már követed ezt a felhasználót already_following: Már követed ezt a felhasználót
@ -593,6 +632,11 @@ hu:
return: Visszatérés a felhasználó profiloldalára return: Visszatérés a felhasználó profiloldalára
web: Megtekintés a weben web: Megtekintés a weben
title: "%{acct} követése" title: "%{acct} követése"
challenge:
confirm: Folytatás
hint_html: "<strong>Hasznos:</strong> Nem fogjuk megint a jelszavadat kérdezni a következő órában."
invalid_password: Érvénytelen jelszó
prompt: Add meg a jelszót a folytatáshoz
datetime: datetime:
distance_in_words: distance_in_words:
about_x_hours: "%{count}ó" about_x_hours: "%{count}ó"
@ -608,9 +652,22 @@ hu:
x_months: "%{count}h" x_months: "%{count}h"
x_seconds: "%{count}mp" x_seconds: "%{count}mp"
deletes: deletes:
challenge_not_passed: A beírt információ helytelen
confirm_password: Személyazonosságod megerősítéséhez írd be a jelenlegi jelszavad confirm_password: Személyazonosságod megerősítéséhez írd be a jelenlegi jelszavad
confirm_username: Add meg a felhasználói nevedet a jóváhagyáshoz
proceed: Felhasználói fiók törlése proceed: Felhasználói fiók törlése
success_msg: Felhasználói fiókod sikeresen töröltük success_msg: Felhasználói fiókod sikeresen töröltük
warning:
before: 'Mielőtt továbbmész, kérlek olvasd el ezt alaposan:'
caches: Más szerverek által cache-elt tartalmak még megmaradhatnak
data_removal: A tülkjeid és minden más adatod véglegesen törlődni fog
email_change_html: <a href="%{path}">Megváltoztathatod az email címed</a> a fiókod törlése nélkül
email_contact_html: Ha még mindig nem érkezik meg, emailezhetsz ide <a href="mailto:%{email}">%{email}</a> segítségért
email_reconfirmation_html: Ha nem kaptad meg a megerősítő emailt, <a href="%{path}">itt újrakérheted</a>
irreversible: Nem fogod tudni visszaállítani vagy újraaktiválni a fiókodat
more_details_html: A részletekért nézd meg az <a href="%{terms_path}">adatvédelmi szabályzatot</a>.
username_available: A fiókod ismét elérhetővé válik
username_unavailable: A fiókod elérhetetlen marad
directories: directories:
directory: Profilok directory: Profilok
explanation: Találj másokra érdeklődésük alapján explanation: Találj másokra érdeklődésük alapján
@ -618,10 +675,10 @@ hu:
domain_validator: domain_validator:
invalid_domain: nem egy valódi domain név invalid_domain: nem egy valódi domain név
errors: errors:
'400': The request you submitted was invalid or malformed. '400': A küldött kérés érvénytelen vagy hibás volt.
'403': Nincs jogosultságod az oldal megtekintéséhez. '403': Nincs jogosultságod az oldal megtekintéséhez.
'404': Az általad keresett oldal nem található. '404': Az általad keresett oldal nem található.
'406': This page is not available in the requested format. '406': Ez az oldal a kért formátumban nem áll rendelkezésre.
'410': Az általad keresett oldal már nem létezik. '410': Az általad keresett oldal már nem létezik.
'422': '422':
content: Megerősítés sikertelen. Nem tiltottad le esetleg a sütiket? content: Megerősítés sikertelen. Nem tiltottad le esetleg a sütiket?
@ -630,7 +687,7 @@ hu:
'500': '500':
content: Sajnáljuk, valami hiba történt a mi oldalunkon. content: Sajnáljuk, valami hiba történt a mi oldalunkon.
title: Az oldal nem megfelelő title: Az oldal nem megfelelő
'503': The page could not be served due to a temporary server failure. '503': Az oldalt nem tudjuk megmutatni átmeneti szerverprobléma miatt.
noscript_html: A Mastodon webalkalmazás használatához engedélyezned kell a JavaScriptet. A másik megoldás, hogy kipróbálsz egy platformodnak megfelelő <a href="%{apps_path}">alkalmazást</a>. noscript_html: A Mastodon webalkalmazás használatához engedélyezned kell a JavaScriptet. A másik megoldás, hogy kipróbálsz egy platformodnak megfelelő <a href="%{apps_path}">alkalmazást</a>.
existing_username_validator: existing_username_validator:
not_found: ezzel a névvel nem találtunk helyi felhasználót not_found: ezzel a névvel nem találtunk helyi felhasználót
@ -654,6 +711,7 @@ hu:
add_new: Új hozzáadása add_new: Új hozzáadása
errors: errors:
limit: Már kiemelted a maximálisan engedélyezett számú hashtaget limit: Már kiemelted a maximálisan engedélyezett számú hashtaget
hint_html: "<strong>Mik a kiemelt hashtagek?</strong> Ezek állandóan megjelennek a nyilvános profilodon és lehetővé teszik, hogy mások kifejezetten az ezekhez tartozó tülkjeidet böngésszék. Jó eszköz ez kreatív munkák vagy hosszútávú projektek nyomonkövetésére."
filters: filters:
contexts: contexts:
home: Saját idővonal home: Saját idővonal
@ -674,10 +732,12 @@ hu:
developers: Fejlesztőknek developers: Fejlesztőknek
more: Többet… more: Többet…
resources: Segédanyagok resources: Segédanyagok
trending_now: Most trendi
generic: generic:
all: Mind all: Mind
changes_saved_msg: A változásokat elmentettük! changes_saved_msg: A változásokat elmentettük!
copy: Másolás copy: Másolás
no_batch_actions_available: Ezen az oldalon nem elérhetőek kötegelt műveletek
order_by: Rendezés order_by: Rendezés
save_changes: Változások mentése save_changes: Változások mentése
validation_errors: validation_errors:
@ -749,6 +809,31 @@ hu:
too_many: Maximum négy fájlt csatolhatsz a tülkhöz too_many: Maximum négy fájlt csatolhatsz a tülkhöz
migrations: migrations:
acct: Az új fiók felhasznalonev@domain formátumban acct: Az új fiók felhasznalonev@domain formátumban
cancel: Átirányítás törlése
cancel_explanation: Az átirányítás törlése reaktiválja a fiókodat, de nem fogja visszahozni azokat a követőidet, akik közben a másik fiókhoz kerültek át.
cancelled_msg: Az átirányítást sikeresen töröltük.
errors:
already_moved: ugyanaz a fiók, ahová már elköltöztél
missing_also_known_as: nem hivatkozza vissza ezt a fiókot
move_to_self: nem lehet az aktuális fiók
not_found: nem található
on_cooldown: Még tart a türelmi idő
followers_count: Követő a költözéskor
incoming_migrations: Más fiókból költöző
incoming_migrations_html: Ahhoz, hogy egy másik fiókból ebbe költözz, először <a href="%{path}">hozz létre egy fiók aliast</a>.
moved_msg: A fiókod mostantól ide %{acct} irányít át, a követőidet átköltöztetjük.
not_redirecting: A fiókod nincs átirányítva jelenleg sehová sem.
on_cooldown: Nemrég költöztetted a fiókod. Ez a funkció %{count} nap múlva lesz megint elérhető.
past_migrations: Eddigi költözések
proceed_with_move: Követők átköltöztetése
redirecting_to: A fiókod át van irányítva ide %{acct}.
warning:
backreference_required: Az új fiókot először be kell úgy állítani, hogy ezt visszahivatkozza
before: 'Mielőtt továbbmész, olvasd el ezeket kérlek figyelmesen:'
cooldown: A költözés után van egy türelmi idő, mely alatt nem tudsz majd újra költözni
disabled_account: A jelenlegi fiókod nem lesz teljesen használható ezután. Viszont elérhető lesz majd az adatexport funkció, valamint a reaktiválás is.
followers: Ez a művelet az összes követődet a jelenlegi fiókról az újra fogja költöztetni
other_data: Más adatot nem fogunk automatikusan mozgatni
moderation: moderation:
title: Moderáció title: Moderáció
notification_mailer: notification_mailer:
@ -893,6 +978,7 @@ hu:
settings: settings:
account: Fiók account: Fiók
account_settings: Fiók beállítások account_settings: Fiók beállítások
aliases: Fiók aliasok
appearance: Megjelenés appearance: Megjelenés
authorized_apps: Jóváhagyott alkalmazások authorized_apps: Jóváhagyott alkalmazások
back: Vissza a Mastodonhoz back: Vissza a Mastodonhoz
@ -1072,7 +1158,9 @@ hu:
disable: A fiókod befagyasztott állapotban megtartja minden adatát, de feloldásig nem csinálhatsz vele semmit. disable: A fiókod befagyasztott állapotban megtartja minden adatát, de feloldásig nem csinálhatsz vele semmit.
silence: A fiókod korlátozott állapotában csak a követőid láthatják a tülkjeidet, valamint nem kerülsz rá nyilvános idővonalakra. Ugyanakkor mások manuálisan még követhetnek. silence: A fiókod korlátozott állapotában csak a követőid láthatják a tülkjeidet, valamint nem kerülsz rá nyilvános idővonalakra. Ugyanakkor mások manuálisan még követhetnek.
suspend: A fiókodat felfüggesztették, így minden tülköd és feltöltött fájlod menthetetlenül elveszett erről a szerverről és minden olyanról is, ahol voltak követőid. suspend: A fiókodat felfüggesztették, így minden tülköd és feltöltött fájlod menthetetlenül elveszett erről a szerverről és minden olyanról is, ahol voltak követőid.
get_in_touch: Válaszolhatsz erre az emailre, hogy kapcsolatba lépj a %{instance} csapatával.
review_server_policies: Szerver szabályzat átnézése review_server_policies: Szerver szabályzat átnézése
statuses: 'Különösen hozzá:'
subject: subject:
disable: A fiókodat %{acct} befagyasztották disable: A fiókodat %{acct} befagyasztották
none: Figyelmeztetés a %{acct} fióknak none: Figyelmeztetés a %{acct} fióknak

View File

@ -238,8 +238,10 @@ ja:
disabled_msg: 絵文字を無効化しました disabled_msg: 絵文字を無効化しました
emoji: 絵文字 emoji: 絵文字
enable: 有効化 enable: 有効化
enabled: 有効
enabled_msg: 絵文字を有効化しました enabled_msg: 絵文字を有効化しました
image_hint: 50KBまでのPNG画像を利用できます image_hint: 50KBまでのPNG画像を利用できます
list: 表示
listed: 収載 listed: 収載
new: new:
title: 新規カスタム絵文字の追加 title: 新規カスタム絵文字の追加
@ -248,6 +250,7 @@ ja:
shortcode_hint: 2文字以上の半角英数字とアンダーバーのみ利用できます shortcode_hint: 2文字以上の半角英数字とアンダーバーのみ利用できます
title: カスタム絵文字 title: カスタム絵文字
uncategorized: 未分類 uncategorized: 未分類
unlist: 非表示
unlisted: 未収載 unlisted: 未収載
update_failed_msg: 絵文字を更新できませんでした update_failed_msg: 絵文字を更新できませんでした
updated_msg: 絵文字の更新に成功しました! updated_msg: 絵文字の更新に成功しました!
@ -377,6 +380,7 @@ ja:
pending: リレーサーバーの承認待ちです pending: リレーサーバーの承認待ちです
save_and_enable: 保存して有効にする save_and_enable: 保存して有効にする
setup: リレー接続を設定する setup: リレー接続を設定する
signatures_not_enabled: セキュアモードまたはホワイトリストモードが有効の場合、リレーは正常に動作しません
status: ステータス status: ステータス
title: リレー title: リレー
report_notes: report_notes:
@ -646,9 +650,22 @@ ja:
x_months: "%{count}月" x_months: "%{count}月"
x_seconds: "%{count}秒" x_seconds: "%{count}秒"
deletes: deletes:
challenge_not_passed: 入力された情報は正しくありません
confirm_password: 本人確認のため、現在のパスワードを入力してください confirm_password: 本人確認のため、現在のパスワードを入力してください
confirm_username: 確認のためユーザー名を入力してください
proceed: アカウントを削除する proceed: アカウントを削除する
success_msg: アカウントは正常に削除されました success_msg: アカウントは正常に削除されました
warning:
before: '続行する前に、次の点を再度確認してください:'
caches: 削除しても他のサーバーに残り続ける場合があります
data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます
email_change_html: アカウントを削除しなくても<a href="%{path}">メールアドレスを変更</a>できます
email_contact_html: それでも届かない場合、<a href="mailto:%{email}">%{email}</a> までメールで問い合わせてください
email_reconfirmation_html: 確認のメールが届かない場合、<a href="%{path}">もう一度申請</a>できます。
irreversible: アカウントを元に戻したり復活させることはできません
more_details_html: 詳しくは<a href="%{terms_path}">プライバシーポリシー</a>をご覧ください。
username_available: あなたのユーザー名は再利用できるようになります
username_unavailable: あなたのユーザー名は引き続き利用できません
directories: directories:
directory: ディレクトリ directory: ディレクトリ
explanation: 関心を軸にユーザーを発見しよう explanation: 関心を軸にユーザーを発見しよう
@ -718,6 +735,7 @@ ja:
all: すべて all: すべて
changes_saved_msg: 正常に変更されました! changes_saved_msg: 正常に変更されました!
copy: コピー copy: コピー
no_batch_actions_available: 利用可能なバッチアクションはありません
order_by: 並び順 order_by: 並び順
save_changes: 変更を保存 save_changes: 変更を保存
validation_errors: validation_errors:
@ -787,6 +805,31 @@ ja:
too_many: 追加できるファイルは4つまでです too_many: 追加できるファイルは4つまでです
migrations: migrations:
acct: 引っ越し先の ユーザー名@ドメイン acct: 引っ越し先の ユーザー名@ドメイン
cancel: 引っ越しを取り消す
cancel_explanation: 引っ越しを取り消すと現在のアカウントが再度有効化されますが、引き継がれたフォロワーは戻されません。
cancelled_msg: 引っ越し設定を取り消しました。
errors:
already_moved: は既に引っ越したアカウントと同じです
missing_also_known_as: はこのアカウントとエイリアスの設定がされていません
move_to_self: 同じアカウントに引っ越すことはできません
not_found: 見つかりませんでした
on_cooldown: クールダウン期間中です
followers_count: 引き継がれるフォロワー
incoming_migrations: 別のアカウントから引っ越す
incoming_migrations_html: 別のアカウントからこのアカウントに引っ越すには、まず<a href="%{path}">アカウントエイリアスを作成</a>する必要があります。
moved_msg: アカウントは %{acct} に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。
not_redirecting: アカウントは現在引っ越し設定されていません。
on_cooldown: あなたは最近アカウントを引っ越ししています。この機能は %{count} 日後に再度利用できるようになります。
past_migrations: 過去の引っ越し
proceed_with_move: フォロワーを引き継ぐ
redirecting_to: アカウントは %{acct} に引っ越し設定されています。
warning:
backreference_required: まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成する必要があります
before: '続行する前に、次の点を再度確認してください:'
cooldown: 引っ越し後はクールダウン期間があります。その間再度引っ越すことはできません
disabled_account: 引っ越すと現在のアカウントの機能は完全には利用できなくなります。ただしデータのエクスポートと再有効化は利用できます。
followers: この操作により、すべてのフォロワーを現在のアカウントから新しいアカウントに引き継ぎます。
other_data: その他のデータは自動的に引き継がれません
moderation: moderation:
title: モデレーション title: モデレーション
notification_mailer: notification_mailer:
@ -929,6 +972,7 @@ ja:
settings: settings:
account: アカウント account: アカウント
account_settings: セキュリティ account_settings: セキュリティ
aliases: アカウントエイリアス
appearance: 外観 appearance: 外観
authorized_apps: 認証済みアプリ authorized_apps: 認証済みアプリ
back: Mastodon に戻る back: Mastodon に戻る
@ -1079,7 +1123,7 @@ ja:
default: "%Y年%m月%d日 %H:%M" default: "%Y年%m月%d日 %H:%M"
month: "%Y年 %b" month: "%Y年 %b"
two_factor_authentication: two_factor_authentication:
code_hint: 確認するには認証アプリで表示されたコードを入力してください code_hint: 続行するには認証アプリで表示されたコードを入力してください
description_html: "<strong>二段階認証</strong>を有効にするとログイン時、認証アプリからコードを入力する必要があります。" description_html: "<strong>二段階認証</strong>を有効にするとログイン時、認証アプリからコードを入力する必要があります。"
disable: 無効 disable: 無効
enable: 有効 enable: 有効

View File

@ -37,6 +37,10 @@ ko:
unavailable_content: 이용 불가능한 컨텐츠 unavailable_content: 이용 불가능한 컨텐츠
unavailable_content_description: unavailable_content_description:
reason: '이유:' reason: '이유:'
rejecting_media: 이 서버의 미디어 파일들은 처리되지 않고 썸네일또한 보이지 않게 됩니다. 수동으로 클릭하여 해당 서버로 가게 됩니다.
silenced: 이 서버의 게시물은 작성자를 팔로우 한 경우에만 홈 피드에 나타나며 이를 제외한 어디에도 나타나지 않습니다.
suspended: 이 서버의 아무도 팔로우 할 수 없으며, 어떤 데이터도 처리되거나 저장 되지 않고 데이터가 교환 되지도 않습니다.
unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.
user_count_after: user_count_after:
other: other:
user_count_before: 사용자 수 user_count_before: 사용자 수
@ -525,7 +529,7 @@ ko:
reviewed: 심사 됨 reviewed: 심사 됨
title: 해시태그 title: 해시태그
trending_right_now: 지금 유행 중 trending_right_now: 지금 유행 중
unique_uses_today: 오늘 %{count}개의 포스팅 unique_uses_today: 오늘 %{count}명이 포스팅
unreviewed: 심사 되지 않음 unreviewed: 심사 되지 않음
updated_msg: 해시태그 설정이 성공적으로 갱신되었습니다 updated_msg: 해시태그 설정이 성공적으로 갱신되었습니다
title: 관리 title: 관리
@ -546,6 +550,12 @@ ko:
new_trending_tag: new_trending_tag:
body: "#%{name}가 오늘 유행하고 있습니다, 하지만 심사 된 적이 없습니다. 허용하지 않는 한 공개적으로 나타나지 않습니다. 또는 그냥 저장을 눌러 더이상 나타나지 않게 할 수 있습니다." body: "#%{name}가 오늘 유행하고 있습니다, 하지만 심사 된 적이 없습니다. 허용하지 않는 한 공개적으로 나타나지 않습니다. 또는 그냥 저장을 눌러 더이상 나타나지 않게 할 수 있습니다."
subject: 새 해시태그가 %{instance}에서 심사 대기 중입니다(#%{name}) subject: 새 해시태그가 %{instance}에서 심사 대기 중입니다(#%{name})
aliases:
add_new: 별칭 만들기
created_msg: 새 별칭이 성공적으로 만들어졌습니다. 이제 기존 계정에서 이주를 시작할 수 있습니다.
deleted_msg: 성공적으로 별칭을 삭제했습니다. 해당 계정에서 이 계정으로의 이주는 더이상 가능하지 않습니다.
hint_html: 다른 계정에서 이 계정으로 옮기길 원하는 경우, 여기에서 별칭을 만들 수 있습니다, 기존 계정의 팔로워를 이쪽으로 옮기고 싶은 경우 필요한 과정입니다. 이 행동 자체는 <strong>해롭지 않고 되돌리기가 가능합니다</strong>.<strong>계정 이주는 이전 계정에서 착수하게 됩니다</strong>
remove: 별칭 연결 끊기
appearance: appearance:
advanced_web_interface: 고급 웹 인터페이스 advanced_web_interface: 고급 웹 인터페이스
advanced_web_interface_hint: '화면의 가로폭을 가득 채우고 싶다면, 고급 웹 인터페이스는 한 번에 여러 정보를 볼 수 있도록 여러 컬럼을 설정할 수 있도록 합니다: 홈, 알림, 연합타임라인, 리스트, 해시태그 등' advanced_web_interface_hint: '화면의 가로폭을 가득 채우고 싶다면, 고급 웹 인터페이스는 한 번에 여러 정보를 볼 수 있도록 여러 컬럼을 설정할 수 있도록 합니다: 홈, 알림, 연합타임라인, 리스트, 해시태그 등'
@ -605,6 +615,7 @@ ko:
confirming: 이메일 확인 과정이 완료되기를 기다리는 중. confirming: 이메일 확인 과정이 완료되기를 기다리는 중.
functional: 계정이 완벽이 작동합니다. functional: 계정이 완벽이 작동합니다.
pending: 당신의 가입 신청은 스태프의 검사를 위해 대기중입니다. 이것은 시간이 다소 소요됩니다. 가입 신청이 승인 될 경우 이메일을 받게 됩니다. pending: 당신의 가입 신청은 스태프의 검사를 위해 대기중입니다. 이것은 시간이 다소 소요됩니다. 가입 신청이 승인 될 경우 이메일을 받게 됩니다.
redirecting_to: 계정이 %{acct}로 리다이렉트 중이기 때문에 비활성 상태입니다.
trouble_logging_in: 로그인 하는데 문제가 있나요? trouble_logging_in: 로그인 하는데 문제가 있나요?
authorize_follow: authorize_follow:
already_following: 이미 이 계정을 팔로우 하고 있습니다 already_following: 이미 이 계정을 팔로우 하고 있습니다
@ -793,15 +804,28 @@ ko:
migrations: migrations:
acct: 새 계정의 username@domain acct: 새 계정의 username@domain
cancel: 리디렉션 취소 cancel: 리디렉션 취소
cancel_explanation: 리다이렉트를 취소하면 현재 계정이 다시 활성화 됩니다, 새 계정으로 이동한 팔로워를 되찾을 수는 없습니다.
cancelled_msg: 리다이렉트를 성공적으로 취소했습니다.
errors: errors:
already_moved: 이미 이동한 계정과 동일합니다
missing_also_known_as: 이 계정을 역으로 참조하지 않고 있습니다
move_to_self: 현재 계정은 사용할 수 없습니다
not_found: 찾을 수 없습니다 not_found: 찾을 수 없습니다
on_cooldown: 쿨다운 기간입니다
followers_count: 이주 될 팔로워들
incoming_migrations: 다른 계정으로부터 옮기기 incoming_migrations: 다른 계정으로부터 옮기기
incoming_migrations_html: 다른 계정을 이 계정으로 이주하고 싶은 경우, 먼저 <a href="%{path}">계정 별칭을 만들어야 합니다</a>.
moved_msg: 당신의 계정은 %{acct}로 리다이렉트 되고 있으며 팔로워들은 이주 될 것입니다.
not_redirecting: 현재 이 계정은 어디로도 리다이렉트 되고 있지 않습니다.
on_cooldown: 당신은 최근에 이미 계정을 이동했습니다. 이 기능은 %{count} 일 후에 다시 이용 가능합니다. on_cooldown: 당신은 최근에 이미 계정을 이동했습니다. 이 기능은 %{count} 일 후에 다시 이용 가능합니다.
past_migrations: 이전 마이그레이션 past_migrations: 이전 마이그레이션
proceed_with_move: 팔로워 이동 proceed_with_move: 팔로워 이동
redirecting_to: 당신의 계정은 %{acct} 로 리다이렉트됩니다. redirecting_to: 당신의 계정은 %{acct} 로 리다이렉트됩니다.
warning: warning:
backreference_required: 새 계정은 이 계정으로 역참조를 하도록 설정되어 있어야 합니다
before: '진행하기 전, 주의사항을 꼼꼼히 읽어보세요:' before: '진행하기 전, 주의사항을 꼼꼼히 읽어보세요:'
cooldown: 이주 뒤에는 새로운 이주를 하지 못하는 쿨다운 기간이 존재합니다
disabled_account: 이 계정은 완전한 사용이 불가능하게 됩니다. 하지만, 데이터 내보내기나 재활성화를 위해 접근할 수 있습니다.
followers: 이 행동은 현재 계정의 모든 팔로워를 새 계정으로 이동시킵니다 followers: 이 행동은 현재 계정의 모든 팔로워를 새 계정으로 이동시킵니다
other_data: 다른 어떤 데이터도 자동적으로 옮겨지지 않을 것입니다 other_data: 다른 어떤 데이터도 자동적으로 옮겨지지 않을 것입니다
moderation: moderation:

View File

@ -41,6 +41,7 @@ nl:
rejecting_media: Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken. rejecting_media: Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken.
silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt. silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt.
suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld. suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld.
unavailable_content_html: Met Mastodon kun je in het algemeen berichten bekijken van en communiceren met gebruikers van elke andere server in de fediverse. Dit zijn de uitzonderingen die door deze server zijn gemaakt en expliciet alleen hier gelden.
user_count_after: user_count_after:
one: gebruiker one: gebruiker
other: gebruikers other: gebruikers
@ -48,6 +49,8 @@ nl:
what_is_mastodon: Wat is Mastodon? what_is_mastodon: Wat is Mastodon?
accounts: accounts:
choices_html: 'Aanbevelingen van %{name}:' choices_html: 'Aanbevelingen van %{name}:'
endorsements_hint: Je kunt mensen die je volgt in de webomgeving aanbevelen, waarna ze dan hier zullen verschijnen.
featured_tags_hint: Je kunt specifieke hashtags uitlichten, waarna ze dan hier zullen verschijnen.
follow: Volgen follow: Volgen
followers: followers:
one: Volger one: Volger
@ -428,6 +431,9 @@ nl:
custom_css: custom_css:
desc_html: Het uiterlijk van deze server met CSS aanpassen desc_html: Het uiterlijk van deze server met CSS aanpassen
title: Aangepaste CSS title: Aangepaste CSS
default_noindex:
desc_html: Heeft invloed op alle gebruikers die deze instelling niet zelf hebben veranderd
title: Toots van gebruikers standaard niet door zoekmachines laten indexeren
domain_blocks: domain_blocks:
all: Naar iedereen all: Naar iedereen
disabled: Naar niemand disabled: Naar niemand
@ -486,6 +492,7 @@ nl:
title: Aangepaste gebruiksvoorwaarden title: Aangepaste gebruiksvoorwaarden
site_title: Naam Mastodonserver site_title: Naam Mastodonserver
spam_check_enabled: spam_check_enabled:
desc_html: Mastodon kan accounts die herhaaldelijk ongevraagde berichten versturen automatisch negeren of rapporteren. Het is mogelijk dat er foutpositieven tussen zitten.
title: Automatische spambestrijding title: Automatische spambestrijding
thumbnail: thumbnail:
desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen
@ -495,6 +502,7 @@ nl:
title: Tijdlijn op de voorpagina tonen title: Tijdlijn op de voorpagina tonen
title: Server-instellingen title: Server-instellingen
trends: trends:
desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen
title: Trending hashtags title: Trending hashtags
statuses: statuses:
back_to_account: Terug naar accountpagina back_to_account: Terug naar accountpagina
@ -543,10 +551,14 @@ nl:
body: "%{reporter} heeft %{target} gerapporteerd" body: "%{reporter} heeft %{target} gerapporteerd"
body_remote: Iemand van %{domain} heeft %{target} gerapporteerd body_remote: Iemand van %{domain} heeft %{target} gerapporteerd
subject: Nieuwe rapportage op %{instance} (#%{id}) subject: Nieuwe rapportage op %{instance} (#%{id})
new_trending_tag:
body: 'De hashtag #%{name} is vandaag trending, maar is nog niet beoordeeld. Het wordt niet in het openbaar getoond alvorens je de hashtag goedkeurt. Je kunt ook het formulier zoals het nu is opslaan, waarna je er niks meer over zult horen.'
subject: Nieuwe hashtag te beoordelen op %{instance} (#%{name})
aliases: aliases:
add_new: Alias aanmaken add_new: Alias aanmaken
created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen. created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen.
deleted_msg: De alias is succesvol verwijderd. Verhuizen vanaf dat account naar dit account is niet meer mogelijk. deleted_msg: De alias is succesvol verwijderd. Verhuizen vanaf dat account naar dit account is niet meer mogelijk.
hint_html: Wanneer je vanaf een ander account naar dit account wilt verhuizen, kun je hier een alias aanmaken. Dit is nodig voordat je verder kunt gaan met het verhuizen van volgers van het oude naar dit nieuwe account. Deze actie is op zich <strong>ongevaarlijk en omkeerbaar</strong>. <strong>De accountmigratie wordt gestart vanaf het oude account</strong>.
remove: Alias ontkoppelen remove: Alias ontkoppelen
appearance: appearance:
advanced_web_interface: Geavanceerde webomgeving advanced_web_interface: Geavanceerde webomgeving
@ -574,10 +586,13 @@ nl:
apply_for_account: Een uitnodiging aanvragen apply_for_account: Een uitnodiging aanvragen
change_password: Wachtwoord change_password: Wachtwoord
checkbox_agreement_html: Ik ga akkoord met de <a href="%{rules_path}" target="_blank">regels van deze server</a> en de <a href="%{terms_path}" target="_blank">gebruiksvoorwaarden</a> checkbox_agreement_html: Ik ga akkoord met de <a href="%{rules_path}" target="_blank">regels van deze server</a> en de <a href="%{terms_path}" target="_blank">gebruiksvoorwaarden</a>
checkbox_agreement_without_rules_html: Ik ga akkoord met de <a href="%{terms_path}" target="_blank">gebruiksvoorwaarden</a>
delete_account: Account verwijderen delete_account: Account verwijderen
delete_account_html: Wanneer je jouw account graag wilt verwijderen, kun je dat <a href="%{path}">hier doen</a>. We vragen jou daar om een bevestiging. delete_account_html: Wanneer je jouw account graag wilt verwijderen, kun je dat <a href="%{path}">hier doen</a>. We vragen jou daar om een bevestiging.
description: description:
prefix_invited_by_user: "@%{name} nodigt je hierbij uit om een account aan te maken op deze Mastodonserver!"
prefix_sign_up: Registreer je vandaag nog op Mastodon! prefix_sign_up: Registreer je vandaag nog op Mastodon!
suffix: Met een account ben je in staat om mensen te volgen, berichten te plaatsen en uit te wisselen met mensen die zich op andere Mastodonservers bevinden en meer!
didnt_get_confirmation: Geen bevestigingsinstructies ontvangen? didnt_get_confirmation: Geen bevestigingsinstructies ontvangen?
forgot_password: Wachtwoord vergeten? forgot_password: Wachtwoord vergeten?
invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan. invalid_reset_password_token: De code om jouw wachtwoord opnieuw in te stellen is verlopen. Vraag een nieuwe aan.
@ -596,10 +611,15 @@ nl:
security: Beveiliging security: Beveiliging
set_new_password: Nieuw wachtwoord instellen set_new_password: Nieuw wachtwoord instellen
setup: setup:
email_below_hint_html: Wanneer onderstaand e-mailadres niet klopt, kun je dat hier veranderen. Je ontvangt dan hierna een bevestigingsmail.
email_settings_hint_html: De bevestigingsmail is verzonden naar %{email}. Wanneer dat e-mailadres niet klopt, kun je dat veranderen in je accountinstellingen.
title: Instellen title: Instellen
status: status:
account_status: Accountstatus account_status: Accountstatus
confirming: Aan het wachten totdat de e-mail is bevestigd.
functional: Jouw account is volledig operationeel. functional: Jouw account is volledig operationeel.
pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd.
redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}.
trouble_logging_in: Problemen met inloggen? trouble_logging_in: Problemen met inloggen?
authorize_follow: authorize_follow:
already_following: Je volgt dit account al already_following: Je volgt dit account al
@ -614,6 +634,7 @@ nl:
title: Volg %{acct} title: Volg %{acct}
challenge: challenge:
confirm: Doorgaan confirm: Doorgaan
hint_html: "<strong>Tip:</strong> We vragen jou het komende uur niet meer naar jouw wachtwoord."
invalid_password: Ongeldig wachtwoord invalid_password: Ongeldig wachtwoord
prompt: Bevestig wachtwoord om door te gaan prompt: Bevestig wachtwoord om door te gaan
datetime: datetime:
@ -637,6 +658,10 @@ nl:
proceed: Account verwijderen proceed: Account verwijderen
success_msg: Jouw account is succesvol verwijderd success_msg: Jouw account is succesvol verwijderd
warning: warning:
before: 'Lees deze tekst zorgvuldig voordat je verder gaat:'
caches: Toots en media die op andere servers zijn opgeslagen kunnen daar achterblijven
data_removal: Jouw toots en andere gegevens worden permanent verwijderd
email_change_html: Je kunt <a href="%{path}">je e-mailadres wijzigen</a> zonder dat je jouw account hoeft te verwijderen
username_available: Jouw gebruikersnaam zal weer beschikbaar komen username_available: Jouw gebruikersnaam zal weer beschikbaar komen
username_unavailable: Jouw gebruikersnaam zal onbeschikbaar blijven username_unavailable: Jouw gebruikersnaam zal onbeschikbaar blijven
directories: directories:
@ -788,7 +813,7 @@ nl:
on_cooldown: Jouw laatste migratie is nog te kort geleden on_cooldown: Jouw laatste migratie is nog te kort geleden
followers_count: Volgers op het moment van verhuizing followers_count: Volgers op het moment van verhuizing
incoming_migrations: Verhuizen vanaf een ander account incoming_migrations: Verhuizen vanaf een ander account
incoming_migrations_html: Om te vanaf een ander account naar dit account te verhuizen, moet je eerst <a href="%{path}">een accountalias aanmaken</a>. incoming_migrations_html: Om vanaf een ander account naar dit account te verhuizen, dien je eerst <a href="%{path}">een accountalias aan te maken</a>.
moved_msg: Jouw account wordt nu naar %{acct} doorverwezen en jouw volgers worden verhuisd. moved_msg: Jouw account wordt nu naar %{acct} doorverwezen en jouw volgers worden verhuisd.
not_redirecting: Jouw account wordt momenteel niet naar een ander account doorverwezen. not_redirecting: Jouw account wordt momenteel niet naar een ander account doorverwezen.
on_cooldown: Je hebt recentelijk jouw account verhuisd. Deze mogelijkheid is weer beschikbaar over %{count} dagen. on_cooldown: Je hebt recentelijk jouw account verhuisd. Deze mogelijkheid is weer beschikbaar over %{count} dagen.

Some files were not shown because too many files have changed in this diff Show More