mirror of
https://github.com/glitch-soc/mastodon.git
synced 2026-03-29 03:00:33 +02:00
Compare commits
198 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6ba52a933 | ||
|
|
fc99996d13 | ||
|
|
02c9c71294 | ||
|
|
6b92c28bd3 | ||
|
|
8a1bdd4ccb | ||
|
|
efcbeb74c8 | ||
|
|
d9bdae0bae | ||
|
|
f3b47c9436 | ||
|
|
2010bf5f05 | ||
|
|
dcdbaecdc9 | ||
|
|
eca84d1c15 | ||
|
|
3bab7a5498 | ||
|
|
fa553d8484 | ||
|
|
8beb150516 | ||
|
|
d5050227e9 | ||
|
|
0a58ed0303 | ||
|
|
69b09edcd2 | ||
|
|
9cd5a9ad6a | ||
|
|
6704bf7834 | ||
|
|
afd4420989 | ||
|
|
04ecb5c319 | ||
|
|
b28fdf2d49 | ||
|
|
7c9e17c20a | ||
|
|
06bae4a936 | ||
|
|
eff2d57cdb | ||
|
|
444a360c11 | ||
|
|
94ee9c5a29 | ||
|
|
2d567a78ae | ||
|
|
80062846d6 | ||
|
|
004f3aa235 | ||
|
|
b2bcd34486 | ||
|
|
0f4e8a6240 | ||
|
|
4467365c34 | ||
|
|
b76d94bc4b | ||
|
|
8a1965e522 | ||
|
|
eeadda0e71 | ||
|
|
96a5d173f1 | ||
|
|
5057735a54 | ||
|
|
27b74ba7b8 | ||
|
|
770cf42085 | ||
|
|
ef1af11956 | ||
|
|
140e011e73 | ||
|
|
43f8760c95 | ||
|
|
473c112dae | ||
|
|
821e735524 | ||
|
|
167c46adce | ||
|
|
7040d14476 | ||
|
|
3260d25a8e | ||
|
|
b635c419fc | ||
|
|
d2f1767b81 | ||
|
|
9636fc22cc | ||
|
|
3924b33914 | ||
|
|
99efed9aee | ||
|
|
f97834019a | ||
|
|
6dee9a12d2 | ||
|
|
81ed241061 | ||
|
|
aa1d3825cd | ||
|
|
032aa9eb68 | ||
|
|
50b586ef02 | ||
|
|
233f7570b3 | ||
|
|
51b1a49834 | ||
|
|
90955d4ca5 | ||
|
|
5ef8a632bf | ||
|
|
6d55436687 | ||
|
|
5983f8292b | ||
|
|
30c34606a1 | ||
|
|
a53edd223e | ||
|
|
22c9f190e8 | ||
|
|
f88b139a70 | ||
|
|
82edd1bcf5 | ||
|
|
414f8ff60d | ||
|
|
9e1c33f96a | ||
|
|
ef4ecd5eeb | ||
|
|
a86078e8bb | ||
|
|
a3a02549e8 | ||
|
|
06081721ef | ||
|
|
60771df3e7 | ||
|
|
21b324cc88 | ||
|
|
5f07606955 | ||
|
|
51b29f4c30 | ||
|
|
0ec46833fa | ||
|
|
de488fbea2 | ||
|
|
d595641b73 | ||
|
|
fd733d0603 | ||
|
|
055be70c59 | ||
|
|
0eeb0f00ba | ||
|
|
6e406e119f | ||
|
|
789df6b196 | ||
|
|
6b78be274b | ||
|
|
a3d4b7c9b9 | ||
|
|
d2b544e584 | ||
|
|
84c5ffb565 | ||
|
|
1d26fa9fed | ||
|
|
62f21ab1fc | ||
|
|
42594f253e | ||
|
|
b21e29cc7c | ||
|
|
ef8b45f004 | ||
|
|
16a3fcbe26 | ||
|
|
65f1d77043 | ||
|
|
6202cf6b65 | ||
|
|
8ee8228d46 | ||
|
|
18869e9c90 | ||
|
|
70ca99224f | ||
|
|
2232de0bfa | ||
|
|
37b642d59c | ||
|
|
11ec1a8d7b | ||
|
|
ec8c7dca2f | ||
|
|
b6264ea625 | ||
|
|
36c5b0e2f0 | ||
|
|
645c910d38 | ||
|
|
a076fa2063 | ||
|
|
f6dbb2206c | ||
|
|
ea6736681b | ||
|
|
9ee5872f14 | ||
|
|
447527c154 | ||
|
|
973eb0a1d3 | ||
|
|
5039e9d474 | ||
|
|
980c336ca4 | ||
|
|
4632be68eb | ||
|
|
8db52f2e66 | ||
|
|
b38bbd04ea | ||
|
|
bd0c865bbb | ||
|
|
936827013b | ||
|
|
f1cfde4152 | ||
|
|
8c25742d4c | ||
|
|
44a88ad4d5 | ||
|
|
45fa4d99b3 | ||
|
|
11a466ab53 | ||
|
|
e517c2a1bf | ||
|
|
787702c26b | ||
|
|
91b3859b7b | ||
|
|
9b31a5fc4c | ||
|
|
b6aa0b4990 | ||
|
|
7868b545ed | ||
|
|
bd8d96e699 | ||
|
|
e6591bf322 | ||
|
|
30e25ff7fc | ||
|
|
5ef82d7937 | ||
|
|
e14bf631b5 | ||
|
|
6d46225718 | ||
|
|
022af54ea2 | ||
|
|
bcf788dad7 | ||
|
|
7917b495d2 | ||
|
|
ec2023233d | ||
|
|
e6a6c26c36 | ||
|
|
86a8aa5e5c | ||
|
|
a9f8b1ad96 | ||
|
|
698e4fdef2 | ||
|
|
72b1af137e | ||
|
|
8291afae35 | ||
|
|
1ce0733cac | ||
|
|
8bfbf2abaf | ||
|
|
a63511425f | ||
|
|
459e3451b6 | ||
|
|
58d2c7b481 | ||
|
|
ae43b6bb09 | ||
|
|
6f16011c5a | ||
|
|
f79810313c | ||
|
|
65a6840f71 | ||
|
|
527d9200d0 | ||
|
|
cbb9b83160 | ||
|
|
51fcb9ca99 | ||
|
|
4a271072f5 | ||
|
|
6d53e8c6c5 | ||
|
|
d9fb61f305 | ||
|
|
6af733d1d8 | ||
|
|
29eae75ca0 | ||
|
|
8a3f25a4fa | ||
|
|
0615febd84 | ||
|
|
86d8df0c03 | ||
|
|
105e5b1d76 | ||
|
|
d6442b5455 | ||
|
|
653868bb0c | ||
|
|
4cb3fe35be | ||
|
|
8197e65cb3 | ||
|
|
c48413ad4c | ||
|
|
9be391514b | ||
|
|
2340f4df81 | ||
|
|
db86ec3d62 | ||
|
|
da6e667123 | ||
|
|
cdcd77ebff | ||
|
|
c79c9e8c42 | ||
|
|
e84031ea97 | ||
|
|
d01e407177 | ||
|
|
e1ff48978d | ||
|
|
24304fbbe6 | ||
|
|
644caeb156 | ||
|
|
ad92660de6 | ||
|
|
c5d17a3997 | ||
|
|
a8613b7cda | ||
|
|
0c2fa2aab4 | ||
|
|
62f019252a | ||
|
|
4228ca614c | ||
|
|
7e20ee7695 | ||
|
|
1ed1cdba1b | ||
|
|
b73e968641 | ||
|
|
559f7a8e61 | ||
|
|
bcfd6ab3e4 |
1
.github/actions/setup-ruby/action.yml
vendored
1
.github/actions/setup-ruby/action.yml
vendored
@@ -21,3 +21,4 @@ runs:
|
||||
with:
|
||||
ruby-version: ${{ inputs.ruby-version }}
|
||||
bundler-cache: true
|
||||
cache-version: 4.3
|
||||
|
||||
4
.github/workflows/build-releases.yml
vendored
4
.github/workflows/build-releases.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
# Only tag with latest when ran against the latest stable branch
|
||||
# This needs to be updated after each minor version release
|
||||
flavor: |
|
||||
latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }}
|
||||
latest=false
|
||||
tags: |
|
||||
type=pep440,pattern={{raw}}
|
||||
type=pep440,pattern=v{{major}}.{{minor}}
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
# Only tag with latest when ran against the latest stable branch
|
||||
# This needs to be updated after each minor version release
|
||||
flavor: |
|
||||
latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }}
|
||||
latest=false
|
||||
tags: |
|
||||
type=pep440,pattern={{raw}}
|
||||
type=pep440,pattern=v{{major}}.{{minor}}
|
||||
|
||||
4
.github/workflows/test-ruby.yml
vendored
4
.github/workflows/test-ruby.yml
vendored
@@ -127,6 +127,7 @@ jobs:
|
||||
- '3.1'
|
||||
- '3.2'
|
||||
- '.ruby-version'
|
||||
- '3.4'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -229,6 +230,7 @@ jobs:
|
||||
- '3.1'
|
||||
- '3.2'
|
||||
- '.ruby-version'
|
||||
- '3.4'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -308,6 +310,7 @@ jobs:
|
||||
- '3.1'
|
||||
- '3.2'
|
||||
- '.ruby-version'
|
||||
- '3.4'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -425,6 +428,7 @@ jobs:
|
||||
- '3.1'
|
||||
- '3.2'
|
||||
- '.ruby-version'
|
||||
- '3.4'
|
||||
search-image:
|
||||
- docker.elastic.co/elasticsearch/elasticsearch:7.17.13
|
||||
include:
|
||||
|
||||
@@ -21,11 +21,11 @@ Metrics/BlockNesting:
|
||||
|
||||
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
||||
Metrics/CyclomaticComplexity:
|
||||
Max: 25
|
||||
Enabled: false
|
||||
|
||||
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 27
|
||||
Enabled: false
|
||||
|
||||
Rails/OutputSafety:
|
||||
Exclude:
|
||||
|
||||
208
CHANGELOG.md
208
CHANGELOG.md
@@ -2,6 +2,214 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [4.3.19] - 2026-02-03
|
||||
|
||||
### Security
|
||||
|
||||
- Fix ActivityPub collection caching logic for pinned posts and featured tags not checking blocked accounts ([GHSA-ccpr-m53r-mfwr](https://github.com/mastodon/mastodon/security/advisories/GHSA-ccpr-m53r-mfwr))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix relationship cache not being cleared when handling account migrations (#37664 by @ClearlyClaire)
|
||||
- Fix error when encountering invalid tag in updated object (#37635 by @ClearlyClaire)
|
||||
- Fix recycled connections not being immediately closed (#37335 and #37674 by @ClearlyClaire and @shleeable)
|
||||
|
||||
## [4.3.18] - 2026-01-20
|
||||
|
||||
### Security
|
||||
|
||||
- Fix missing limits on various federated properties [GHSA-gg8q-rcg7-p79g](https://github.com/mastodon/mastodon/security/advisories/GHSA-gg8q-rcg7-p79g)
|
||||
- Fix remote user suspension bypass [GHSA-5h2f-wg8j-xqwp](https://github.com/mastodon/mastodon/security/advisories/GHSA-5h2f-wg8j-xqwp)
|
||||
- Fix missing length limits on some user-provided fields [GHSA-6x3w-9g92-gvf3](https://github.com/mastodon/mastodon/security/advisories/GHSA-6x3w-9g92-gvf3)
|
||||
- Fix missing access check for push notification settings update [GHSA-f3q8-7vw3-69v4](https://github.com/mastodon/mastodon/security/advisories/GHSA-f3q8-7vw3-69v4)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix `FeedManager#filter_from_home` error when handling a reblog of a deleted status (#37486 by @ClearlyClaire)
|
||||
- Fix needlessly complicated SQL query in status batch removal (#37469 by @ClearlyClaire)
|
||||
- Fix `Vary` parsing in cache control enforcement (#37426 by @MegaManSec)
|
||||
- Fix thread-unsafe ActivityPub activity dispatch (#37423 by @MegaManSec)
|
||||
- Fix SignatureParser accepting duplicate parameters in HTTP Signature header (#37375 by @shleeable)
|
||||
|
||||
## [4.3.17] - 2026-01-07
|
||||
|
||||
### Security
|
||||
|
||||
- Fix SSRF protection bypass ([GHSA](https://github.com/mastodon/mastodon/security/advisories/GHSA-xfrj-c749-jxxq))
|
||||
- Fix missing ownership check in severed relationships controller ([GHSA](https://github.com/mastodon/mastodon/security/advisories/GHSA-ww85-x9cp-5v24))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix mentions of domain-blocked users being processed (#37257 by @ClearlyClaire)
|
||||
|
||||
## [4.3.16] - 2025-12-08
|
||||
|
||||
### Security
|
||||
|
||||
- Fix inconsistent error handling leaking information on existence of private posts ([GHSA-gwhw-gcjx-72v8](https://github.com/mastodon/mastodon/security/advisories/GHSA-gwhw-gcjx-72v8))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix YouTube embeds by sending referer (#37126 by @ChaosExAnima)
|
||||
- Fix YouTube iframe not being able to start at a defined time (#26584 by @BrunoViveiros)
|
||||
- Fix known expensive S3 batch delete operation failing because of short timeouts (#37004 by @ClearlyClaire)
|
||||
|
||||
## [4.3.15] - 2025-11-20
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix `tootctl upgrade storage-schema` failing with `ArgumentError` (#36914 by @shugo)
|
||||
- Fix old previously-undiscovered posts being treated as new when receiving an `Update` (#36848 by @ClearlyClaire)
|
||||
|
||||
## [4.3.14] - 2025-10-13
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependencies `rack` and `uri`
|
||||
- Fix streaming server connection not being closed on user suspension (by @ThisIsMissEm, [GHSA-r2fh-jr9c-9pxh](https://github.com/mastodon/mastodon/security/advisories/GHSA-r2fh-jr9c-9pxh))
|
||||
- Fix password change through admin CLI not invalidating existing sessions and access tokens (by @ThisIsMissEm, [GHSA-f3q3-rmf7-9655](https://github.com/mastodon/mastodon/security/advisories/GHSA-f3q3-rmf7-9655))
|
||||
- Fix streaming server allowing access to public timelines even without the `read` or `read:statuses` OAuth scopes (by @ThisIsMissEm, [GHSA-7gwh-mw97-qjgp](https://github.com/mastodon/mastodon/security/advisories/GHSA-7gwh-mw97-qjgp))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix redirect to external object when URL is missing or malformed (#36347 by @ClearlyClaire)
|
||||
|
||||
## [4.3.13] - 2025-09-23
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependencies
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix processing of out-of-order `Update` as implicit updates (#36190 by @ClearlyClaire)
|
||||
- Fix getting `Create` and `Update` out of order (#36176 by @ClearlyClaire)
|
||||
|
||||
## [4.3.12] - 2025-09-16
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependencies
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix processing of remote edited statuses with new media and no text (#35970 by @unfokus)
|
||||
- Fix “Edit” and “Delete & Redraft” on a poll not inserting empty option (#35892 by @ClearlyClaire)
|
||||
- Fix self-destruct scheduler behavior on some Redis setups (#35823 by @ClearlyClaire)
|
||||
|
||||
## [4.3.11] - 2025-08-05
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependencies
|
||||
- Fix incorrect rate-limit handling [GHSA-84ch-6436-c7mg](https://github.com/mastodon/mastodon/security/advisories/GHSA-84ch-6436-c7mg)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix race condition caused by ActiveRecord query cache in `Create` critical path (#35662 by @ClearlyClaire)
|
||||
- Fix WebUI crashing for accounts with `null` URL (#35651 by @ClearlyClaire)
|
||||
- Fix friends-of-friends recommendations suggesting already-requested accounts (#35604 by @ClearlyClaire)
|
||||
|
||||
## [4.3.10] - 2025-07-23
|
||||
|
||||
### Security
|
||||
|
||||
- Updated dependencies
|
||||
|
||||
## [4.3.9] - 2025-07-02
|
||||
|
||||
### Changed
|
||||
|
||||
- Change passthrough video processing to emit `moov` atom at start of video (#34726 by @ClearlyClaire)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix `NoMethodError` in edge case of emoji cache handling (#34749 by @dariusk)
|
||||
- Fix error when viewing statuses to deleted replies in moderation view (#32986 by @ClearlyClaire)
|
||||
- Fix search operators sometimes getting lost (#35190 by @ClearlyClaire)
|
||||
- Fix “Alt text” button submitting form in moderation interface (#35147 by @ClearlyClaire)
|
||||
- Fix handling of remote attachments with multiple media types (#34996 by @ClearlyClaire)
|
||||
- Fix blocked accounts not being automatically removed from trending statuses (#34891 by @ClearlyClaire)
|
||||
- Fix inconsistent filtering of silenced accounts for other silenced accounts (#34863 by @ClearlyClaire)
|
||||
- Fix handling of inlined `featured` collections in ActivityPub actor objects (#34789 and #34811 by @ClearlyClaire)
|
||||
- Fix admin dashboard crash on specific Elasticsearch connection errors (#34683 by @ClearlyClaire)
|
||||
- Fix OIDC account creation failing for long display names (#34639 by @defnull)
|
||||
- Fix `/share` not using server-set characters limit (#33459 by @kescherCode)
|
||||
- Fix wrong video dimensions for some rotated videos (#33008 and #33261 by @Gargron and @tribela)
|
||||
- Fix missing autofocus on boost modal (#32953 by @tribela)
|
||||
|
||||
## [4.3.8] - 2025-05-06
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependencies
|
||||
- Check scheme on account, profile, and media URLs ([GHSA-x2rc-v5wx-g3m5](https://github.com/mastodon/mastodon/security/advisories/GHSA-x2rc-v5wx-g3m5))
|
||||
|
||||
### Added
|
||||
|
||||
- Add warning for REDIS_NAMESPACE deprecation at startup (#34581 by @ClearlyClaire)
|
||||
- Add built-in context for interaction policies (#34574 by @ClearlyClaire)
|
||||
|
||||
### Changed
|
||||
|
||||
- Change activity distribution error handling to skip retrying for deleted accounts (#33617 by @ClearlyClaire)
|
||||
|
||||
### Removed
|
||||
|
||||
- Remove double-query for signed query strings (#34610 by @ClearlyClaire)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix incorrect redirect in response to unauthenticated API requests in limited federation mode (#34549 by @ClearlyClaire)
|
||||
- Fix sign-up e-mail confirmation page reloading on error or redirect (#34548 by @ClearlyClaire)
|
||||
|
||||
## [4.3.7] - 2025-04-02
|
||||
|
||||
### Added
|
||||
|
||||
- Add delay to profile updates to debounce them (#34137 by @ClearlyClaire)
|
||||
- Add support for paginating partial collections in `SynchronizeFollowersService` (#34272 and #34277 by @ClearlyClaire)
|
||||
|
||||
### Changed
|
||||
|
||||
- Change account suspensions to be federated to recently-followed accounts as well (#34294 by @ClearlyClaire)
|
||||
- Change `AccountReachFinder` to consider statuses based on suspension date (#32805 and #34291 by @ClearlyClaire and @mjankowski)
|
||||
- Change user archive signed URL TTL from 10 seconds to 1 hour (#34254 by @ClearlyClaire)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix static version of animated PNG emojis not being properly extracted (#34337 by @ClearlyClaire)
|
||||
- Fix filters not applying in detailed view, favourites and bookmarks (#34259 and #34260 by @ClearlyClaire)
|
||||
- Fix handling of malformed/unusual HTML (#34201 by @ClearlyClaire)
|
||||
- Fix `CacheBuster` being queued for missing media attachments (#34253 by @ClearlyClaire)
|
||||
- Fix incorrect URL being used when cache busting (#34189 by @ClearlyClaire)
|
||||
- Fix streaming server refusing unix socket path in `DATABASE_URL` (#34091 by @ClearlyClaire)
|
||||
- Fix “x” hotkey not working on boosted filtered posts (#33758 by @ClearlyClaire)
|
||||
|
||||
## [4.3.6] - 2025-03-13
|
||||
|
||||
### Security
|
||||
|
||||
- Update dependency `omniauth-saml`
|
||||
- Update dependency `rack`
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix Stoplight errors when using `REDIS_NAMESPACE` (#34126 by @ClearlyClaire)
|
||||
|
||||
## [4.3.5] - 2025-03-10
|
||||
|
||||
### Changed
|
||||
|
||||
- Change hashtag suggestion to prefer personal history capitalization (#34070 by @ClearlyClaire)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix processing errors for some HEIF images from iOS 18 (#34086 by @renchap)
|
||||
- Fix streaming server not filtering unknown-language posts from public timelines (#33774 by @ClearlyClaire)
|
||||
- Fix preview cards under Content Warnings not being shown in detailed statuses (#34068 by @ClearlyClaire)
|
||||
- Fix username and display name being hidden on narrow screens in moderation interface (#33064 by @ClearlyClaire)
|
||||
|
||||
## [4.3.4] - 2025-02-27
|
||||
|
||||
### Security
|
||||
|
||||
@@ -92,6 +92,9 @@ RUN \
|
||||
# Set /opt/mastodon as working directory
|
||||
WORKDIR /opt/mastodon
|
||||
|
||||
# Add backport repository for some specific packages where we need the latest version
|
||||
RUN echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list
|
||||
|
||||
# hadolint ignore=DL3008,DL3005
|
||||
RUN \
|
||||
# Mount Apt cache and lib directories from Docker buildx caches
|
||||
@@ -161,7 +164,7 @@ RUN \
|
||||
libexif-dev \
|
||||
libexpat1-dev \
|
||||
libgirepository1.0-dev \
|
||||
libheif-dev \
|
||||
libheif-dev/bookworm-backports \
|
||||
libimagequant-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
liblcms2-dev \
|
||||
@@ -344,7 +347,7 @@ RUN \
|
||||
# libvips components
|
||||
libcgif0 \
|
||||
libexif12 \
|
||||
libheif1 \
|
||||
libheif1/bookworm-backports \
|
||||
libimagequant0 \
|
||||
libjpeg62-turbo \
|
||||
liblcms2-2 \
|
||||
|
||||
@@ -47,3 +47,22 @@ Mastodon requires all `POST` requests to be signed, and MAY require `GET` reques
|
||||
### Additional documentation
|
||||
|
||||
- [Mastodon documentation](https://docs.joinmastodon.org/)
|
||||
|
||||
## Size limits
|
||||
|
||||
Mastodon imposes a few hard limits on federated content.
|
||||
These limits are intended to be very generous and way above what the Mastodon user experience is optimized for, so as to accomodate future changes and unusual or unforeseen usage patterns, while still providing some limits for performance reasons.
|
||||
The following table attempts to summary those limits.
|
||||
|
||||
| Limited property | Size limit | Consequence of exceeding the limit |
|
||||
| ------------------------------------------------------------- | ---------- | ---------------------------------- |
|
||||
| Serialized JSON-LD | 1MB | **Activity is rejected/dropped** |
|
||||
| Profile fields (actor `PropertyValue` attachments) name/value | 2047 | Field name/value is truncated |
|
||||
| Number of profile fields (actor `PropertyValue` attachments) | 50 | Fields list is truncated |
|
||||
| Poll options (number of `anyOf`/`oneOf` in a `Question`) | 500 | Items list is truncated |
|
||||
| Account username (actor `preferredUsername`) length | 2048 | **Actor will be rejected** |
|
||||
| Account display name (actor `name`) length | 2048 | Display name will be truncated |
|
||||
| Account note (actor `summary`) length | 20kB | Account note will be truncated |
|
||||
| Account `attributionDomains` | 256 | List will be truncated |
|
||||
| Account aliases (actor `alsoKnownAs`) | 256 | List will be truncated |
|
||||
| Custom emoji shortcode (`Emoji` `name`) | 2048 | Emoji will be rejected |
|
||||
|
||||
3
Gemfile
3
Gemfile
@@ -158,6 +158,9 @@ group :test do
|
||||
|
||||
# Stub web requests for specs
|
||||
gem 'webmock', '~> 3.18'
|
||||
|
||||
# Websocket driver for testing integration between rails/sidekiq and streaming
|
||||
gem 'websocket-driver', '~> 0.8', require: false
|
||||
end
|
||||
|
||||
group :development do
|
||||
|
||||
144
Gemfile.lock
144
Gemfile.lock
@@ -10,35 +10,35 @@ GIT
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actioncable (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actionmailbox (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
activejob (= 7.1.5.2)
|
||||
activerecord (= 7.1.5.2)
|
||||
activestorage (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
mail (>= 2.7.1)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailer (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actionmailer (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
actionview (= 7.1.5.2)
|
||||
activejob (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actionpack (7.1.5.2)
|
||||
actionview (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
rack (>= 2.2.4)
|
||||
@@ -46,15 +46,15 @@ GEM
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
actiontext (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actiontext (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
activerecord (= 7.1.5.2)
|
||||
activestorage (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
actionview (7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
@@ -64,22 +64,22 @@ GEM
|
||||
activemodel (>= 4.1)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
activejob (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
activejob (7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
activerecord (7.1.5.1)
|
||||
activemodel (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
activemodel (7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
activerecord (7.1.5.2)
|
||||
activemodel (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
activestorage (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
activejob (= 7.1.5.2)
|
||||
activerecord (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
marcel (~> 1.0)
|
||||
activesupport (7.1.5.1)
|
||||
activesupport (7.1.5.2)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
@@ -190,7 +190,7 @@ GEM
|
||||
activerecord (>= 5.a)
|
||||
database_cleaner-core (~> 2.0.0)
|
||||
database_cleaner-core (2.0.1)
|
||||
date (3.3.4)
|
||||
date (3.4.1)
|
||||
debug (1.9.2)
|
||||
irb (~> 1.10)
|
||||
reline (>= 0.3.8)
|
||||
@@ -270,11 +270,11 @@ GEM
|
||||
ffi-compiler (1.3.2)
|
||||
ffi (>= 1.15.5)
|
||||
rake
|
||||
flatware (2.3.3)
|
||||
flatware (2.3.4)
|
||||
drb
|
||||
thor (< 2.0)
|
||||
flatware-rspec (2.3.3)
|
||||
flatware (= 2.3.3)
|
||||
flatware-rspec (2.3.4)
|
||||
flatware (= 2.3.4)
|
||||
rspec (>= 3.6)
|
||||
fog-core (2.5.0)
|
||||
builder
|
||||
@@ -437,7 +437,7 @@ GEM
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2024.0820)
|
||||
mini_mime (1.1.5)
|
||||
mini_portile2 (2.8.8)
|
||||
mini_portile2 (2.8.9)
|
||||
minitest (5.25.1)
|
||||
msgpack (1.7.2)
|
||||
multi_json (1.15.0)
|
||||
@@ -447,7 +447,7 @@ GEM
|
||||
uri
|
||||
net-http-persistent (4.0.2)
|
||||
connection_pool (~> 2.2)
|
||||
net-imap (0.4.19)
|
||||
net-imap (0.5.8)
|
||||
date
|
||||
net-protocol
|
||||
net-ldap (0.19.0)
|
||||
@@ -458,13 +458,13 @@ GEM
|
||||
net-smtp (0.5.1)
|
||||
net-protocol
|
||||
nio4r (2.7.3)
|
||||
nokogiri (1.18.3)
|
||||
nokogiri (1.18.9)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
oj (3.16.6)
|
||||
bigdecimal (>= 3.0)
|
||||
ostruct (>= 0.2)
|
||||
omniauth (2.1.2)
|
||||
omniauth (2.1.3)
|
||||
hashie (>= 3.4.6)
|
||||
rack (>= 2.2.3)
|
||||
rack-protection
|
||||
@@ -475,9 +475,9 @@ GEM
|
||||
omniauth-rails_csrf_protection (1.0.2)
|
||||
actionpack (>= 4.2)
|
||||
omniauth (~> 2.0)
|
||||
omniauth-saml (2.2.1)
|
||||
omniauth-saml (2.2.3)
|
||||
omniauth (~> 2.1)
|
||||
ruby-saml (~> 1.17)
|
||||
ruby-saml (~> 1.18)
|
||||
omniauth_openid_connect (0.6.1)
|
||||
omniauth (>= 1.9, < 3)
|
||||
openid_connect (~> 1.1)
|
||||
@@ -492,7 +492,7 @@ GEM
|
||||
validate_email
|
||||
validate_url
|
||||
webfinger (~> 1.2)
|
||||
openssl (3.2.0)
|
||||
openssl (3.2.2)
|
||||
openssl-signature_algorithm (1.3.0)
|
||||
openssl (> 2.0)
|
||||
opentelemetry-api (1.4.0)
|
||||
@@ -619,7 +619,7 @@ GEM
|
||||
activesupport (>= 3.0.0)
|
||||
raabro (1.4.0)
|
||||
racc (1.8.1)
|
||||
rack (2.2.11)
|
||||
rack (2.2.20)
|
||||
rack-attack (6.7.0)
|
||||
rack (>= 1.0, < 4)
|
||||
rack-cors (2.0.2)
|
||||
@@ -642,20 +642,20 @@ GEM
|
||||
rackup (1.0.0)
|
||||
rack (< 3)
|
||||
webrick
|
||||
rails (7.1.5.1)
|
||||
actioncable (= 7.1.5.1)
|
||||
actionmailbox (= 7.1.5.1)
|
||||
actionmailer (= 7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
actiontext (= 7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activemodel (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
rails (7.1.5.2)
|
||||
actioncable (= 7.1.5.2)
|
||||
actionmailbox (= 7.1.5.2)
|
||||
actionmailer (= 7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
actiontext (= 7.1.5.2)
|
||||
actionview (= 7.1.5.2)
|
||||
activejob (= 7.1.5.2)
|
||||
activemodel (= 7.1.5.2)
|
||||
activerecord (= 7.1.5.2)
|
||||
activestorage (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 7.1.5.1)
|
||||
railties (= 7.1.5.2)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
actionview (>= 5.0.1.rc1)
|
||||
@@ -670,9 +670,9 @@ GEM
|
||||
rails-i18n (7.0.9)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 6.0.0, < 8)
|
||||
railties (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
railties (7.1.5.2)
|
||||
actionpack (= 7.1.5.2)
|
||||
activesupport (= 7.1.5.2)
|
||||
irb
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
@@ -702,7 +702,7 @@ GEM
|
||||
responders (3.1.1)
|
||||
actionpack (>= 5.2)
|
||||
railties (>= 5.2)
|
||||
rexml (3.3.9)
|
||||
rexml (3.4.4)
|
||||
rotp (6.3.0)
|
||||
rouge (4.3.0)
|
||||
rpam2 (4.0.2)
|
||||
@@ -767,7 +767,7 @@ GEM
|
||||
rubocop-rspec (~> 3, >= 3.0.1)
|
||||
ruby-prof (1.7.0)
|
||||
ruby-progressbar (1.13.0)
|
||||
ruby-saml (1.17.0)
|
||||
ruby-saml (1.18.1)
|
||||
nokogiri (>= 1.13.10)
|
||||
rexml
|
||||
ruby-vips (2.2.3)
|
||||
@@ -840,7 +840,7 @@ GEM
|
||||
terrapin (1.0.1)
|
||||
climate_control
|
||||
test-prof (1.4.2)
|
||||
thor (1.3.2)
|
||||
thor (1.4.0)
|
||||
tilt (2.4.0)
|
||||
timeout (0.4.3)
|
||||
tpm-key_attestation (0.12.1)
|
||||
@@ -868,7 +868,7 @@ GEM
|
||||
unf_ext
|
||||
unf_ext (0.0.9.1)
|
||||
unicode-display_width (2.5.0)
|
||||
uri (0.13.2)
|
||||
uri (0.13.3)
|
||||
validate_email (0.1.6)
|
||||
activemodel (>= 3.0)
|
||||
mail (>= 2.2.5)
|
||||
@@ -900,7 +900,8 @@ GEM
|
||||
semantic_range (>= 2.3.0)
|
||||
webrick (1.8.2)
|
||||
websocket (1.2.11)
|
||||
websocket-driver (0.7.6)
|
||||
websocket-driver (0.8.0)
|
||||
base64
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
wisper (2.0.1)
|
||||
@@ -1059,10 +1060,11 @@ DEPENDENCIES
|
||||
webmock (~> 3.18)
|
||||
webpacker (~> 5.4)
|
||||
webpush!
|
||||
websocket-driver (~> 0.8)
|
||||
xorcist (~> 1.1)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 3.3.4p94
|
||||
|
||||
BUNDLED WITH
|
||||
2.5.18
|
||||
2.6.5
|
||||
|
||||
@@ -15,7 +15,6 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ---------------- |
|
||||
| 4.3.x | Yes |
|
||||
| 4.2.x | Yes |
|
||||
| 4.1.x | Until 2025-04-08 |
|
||||
| < 4.1 | No |
|
||||
| 4.4.x | Yes |
|
||||
| 4.3.x | Until 2026-05-06 |
|
||||
| < 4.3 | No |
|
||||
|
||||
@@ -4,17 +4,31 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
|
||||
vary_by -> { 'Signature' if authorized_fetch_mode? }
|
||||
|
||||
before_action :require_account_signature!, if: :authorized_fetch_mode?
|
||||
before_action :check_authorization
|
||||
before_action :set_items
|
||||
before_action :set_size
|
||||
before_action :set_type
|
||||
|
||||
def show
|
||||
expires_in 3.minutes, public: public_fetch_mode?
|
||||
render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
|
||||
|
||||
if @unauthorized
|
||||
render json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
|
||||
else
|
||||
render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_authorization
|
||||
# Because in public fetch mode we cache the response, there would be no
|
||||
# benefit from performing the check below, since a blocked account or domain
|
||||
# would likely be served the cache from the reverse proxy anyway
|
||||
|
||||
@unauthorized = authorized_fetch_mode? && !signed_request_account.nil? && (@account.blocking?(signed_request_account) || (!signed_request_account.domain.nil? && @account.domain_blocking?(signed_request_account.domain)))
|
||||
end
|
||||
|
||||
def set_items
|
||||
case params[:id]
|
||||
when 'featured'
|
||||
@@ -57,11 +71,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
|
||||
end
|
||||
|
||||
def for_signed_account
|
||||
# Because in public fetch mode we cache the response, there would be no
|
||||
# benefit from performing the check below, since a blocked account or domain
|
||||
# would likely be served the cache from the reverse proxy anyway
|
||||
|
||||
if authorized_fetch_mode? && !signed_request_account.nil? && (@account.blocking?(signed_request_account) || (!signed_request_account.domain.nil? && @account.domain_blocking?(signed_request_account.domain)))
|
||||
if @unauthorized
|
||||
[]
|
||||
else
|
||||
yield
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
class ActivityPub::InboxesController < ActivityPub::BaseController
|
||||
include JsonLdHelper
|
||||
|
||||
before_action :skip_large_payload
|
||||
before_action :skip_unknown_actor_activity
|
||||
before_action :require_actor_signature!
|
||||
skip_before_action :authenticate_user!
|
||||
@@ -16,6 +17,10 @@ class ActivityPub::InboxesController < ActivityPub::BaseController
|
||||
|
||||
private
|
||||
|
||||
def skip_large_payload
|
||||
head 413 if request.content_length > ActivityPub::Activity::MAX_JSON_SIZE
|
||||
end
|
||||
|
||||
def skip_unknown_actor_activity
|
||||
head 202 if unknown_affected_account?
|
||||
end
|
||||
|
||||
@@ -22,7 +22,7 @@ class ActivityPub::LikesController < ActivityPub::BaseController
|
||||
def set_status
|
||||
@status = @account.statuses.find(params[:status_id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
|
||||
def set_status
|
||||
@status = @account.statuses.find(params[:status_id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class ActivityPub::SharesController < ActivityPub::BaseController
|
||||
def set_status
|
||||
@status = @account.statuses.find(params[:status_id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -72,6 +72,13 @@ class Api::BaseController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
# Redefine `require_functional!` to properly output JSON instead of HTML redirects
|
||||
def require_functional!
|
||||
return if current_user.functional?
|
||||
|
||||
require_user!
|
||||
end
|
||||
|
||||
def render_empty
|
||||
render json: {}, status: 200
|
||||
end
|
||||
|
||||
@@ -14,7 +14,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
|
||||
@account = current_account
|
||||
UpdateAccountService.new.call(@account, account_params, raise_error: true)
|
||||
current_user.update(user_params) if user_params
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
render json: @account, serializer: REST::CredentialAccountSerializer
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
render json: ValidationErrorFormatter.new(e).as_json, status: 422
|
||||
|
||||
@@ -17,7 +17,7 @@ class Api::V1::Polls::VotesController < Api::BaseController
|
||||
def set_poll
|
||||
@poll = Poll.attached.find(params[:poll_id])
|
||||
authorize @poll.status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class Api::V1::PollsController < Api::BaseController
|
||||
def set_poll
|
||||
@poll = Poll.attached.find(params[:id])
|
||||
authorize @poll.status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class Api::V1::Profile::AvatarsController < Api::BaseController
|
||||
def destroy
|
||||
@account = current_account
|
||||
UpdateAccountService.new.call(@account, { avatar: nil }, raise_error: true)
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
render json: @account, serializer: REST::CredentialAccountSerializer
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,7 +7,7 @@ class Api::V1::Profile::HeadersController < Api::BaseController
|
||||
def destroy
|
||||
@account = current_account
|
||||
UpdateAccountService.new.call(@account, { header: nil }, raise_error: true)
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
render json: @account, serializer: REST::CredentialAccountSerializer
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,7 +10,7 @@ class Api::V1::Statuses::BaseController < Api::BaseController
|
||||
def set_status
|
||||
@status = Status.find(params[:status_id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
@@ -23,7 +23,7 @@ class Api::V1::Statuses::BookmarksController < Api::V1::Statuses::BaseController
|
||||
bookmark&.destroy!
|
||||
|
||||
render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, bookmarks_map: { @status.id => false })
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ class Api::V1::Statuses::FavouritesController < Api::V1::Statuses::BaseControlle
|
||||
|
||||
relationships = StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }, attributes_map: { @status.id => { favourites_count: count } })
|
||||
render json: @status, serializer: REST::StatusSerializer, relationships: relationships
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
@@ -36,7 +36,7 @@ class Api::V1::Statuses::ReblogsController < Api::V1::Statuses::BaseController
|
||||
|
||||
relationships = StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }, attributes_map: { @reblog.id => { reblogs_count: count } })
|
||||
render json: @reblog, serializer: REST::StatusSerializer, relationships: relationships
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
@@ -45,7 +45,7 @@ class Api::V1::Statuses::ReblogsController < Api::V1::Statuses::BaseController
|
||||
def set_reblog
|
||||
@reblog = Status.find(params[:status_id])
|
||||
authorize @reblog, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ class Api::V1::StatusesController < Api::BaseController
|
||||
def set_status
|
||||
@status = Status.find(params[:id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ class Api::Web::EmbedsController < Api::Web::BaseController
|
||||
def set_status
|
||||
@status = Status.find(params[:id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
@@ -55,7 +55,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
|
||||
end
|
||||
|
||||
def set_push_subscription
|
||||
@push_subscription = ::Web::PushSubscription.find(params[:id])
|
||||
@push_subscription = ::Web::PushSubscription.where(user_id: active_session.user_id).find(params[:id])
|
||||
end
|
||||
|
||||
def subscription_params
|
||||
|
||||
@@ -74,7 +74,23 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def require_functional!
|
||||
redirect_to edit_user_registration_path unless current_user.functional?
|
||||
return if current_user.functional?
|
||||
|
||||
respond_to do |format|
|
||||
format.any do
|
||||
redirect_to edit_user_registration_path
|
||||
end
|
||||
|
||||
format.json do
|
||||
if !current_user.confirmed?
|
||||
render json: { error: 'Your login is missing a confirmed e-mail address' }, status: 403
|
||||
elsif !current_user.approved?
|
||||
render json: { error: 'Your login is currently pending approval' }, status: 403
|
||||
elsif !current_user.functional?
|
||||
render json: { error: 'Your login is currently disabled' }, status: 403
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def skip_csrf_meta_tags?
|
||||
|
||||
@@ -21,7 +21,7 @@ class AuthorizeInteractionsController < ApplicationController
|
||||
def set_resource
|
||||
@resource = located_resource
|
||||
authorize(@resource, :show?) if @resource.is_a?(Status)
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -9,13 +9,15 @@ class BackupsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :set_backup
|
||||
|
||||
BACKUP_LINK_TIMEOUT = 1.hour.freeze
|
||||
|
||||
def download
|
||||
case Paperclip::Attachment.default_options[:storage]
|
||||
when :s3, :azure
|
||||
redirect_to @backup.dump.expiring_url(10), allow_other_host: true
|
||||
redirect_to @backup.dump.expiring_url(BACKUP_LINK_TIMEOUT.to_i), allow_other_host: true
|
||||
when :fog
|
||||
if Paperclip::Attachment.default_options.dig(:fog_credentials, :openstack_temp_url_key).present?
|
||||
redirect_to @backup.dump.expiring_url(Time.now.utc + 10), allow_other_host: true
|
||||
redirect_to @backup.dump.expiring_url(BACKUP_LINK_TIMEOUT.from_now), allow_other_host: true
|
||||
else
|
||||
redirect_to full_asset_url(@backup.dump.url), allow_other_host: true
|
||||
end
|
||||
|
||||
@@ -19,7 +19,7 @@ module CacheConcern
|
||||
# from being used as cache keys, while allowing to `Vary` on them (to not serve
|
||||
# anonymous cached data to authenticated requests when authentication matters)
|
||||
def enforce_cache_control!
|
||||
vary = response.headers['Vary']&.split&.map { |x| x.strip.downcase }
|
||||
vary = response.headers['Vary'].to_s.split(',').map { |x| x.strip.downcase }.reject(&:empty?)
|
||||
return unless vary.present? && %w(cookie authorization signature).any? { |header| vary.include?(header) && request.headers[header].present? }
|
||||
|
||||
response.cache_control.replace(private: true, no_store: true)
|
||||
|
||||
@@ -34,7 +34,7 @@ class MediaController < ApplicationController
|
||||
|
||||
def verify_permitted_status!
|
||||
authorize @media_attachment.status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ module Settings
|
||||
def destroy
|
||||
if valid_picture?
|
||||
if UpdateAccountService.new.call(@account, { @picture => nil, "#{@picture}_remote_url" => '' })
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
redirect_to settings_profile_path, notice: I18n.t('generic.changes_saved_msg'), status: 303
|
||||
else
|
||||
redirect_to settings_profile_path
|
||||
|
||||
@@ -8,7 +8,7 @@ class Settings::PrivacyController < Settings::BaseController
|
||||
def update
|
||||
if UpdateAccountService.new.call(@account, account_params.except(:settings))
|
||||
current_user.update!(settings_attributes: account_params[:settings])
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
redirect_to settings_privacy_path, notice: I18n.t('generic.changes_saved_msg')
|
||||
else
|
||||
render :show
|
||||
|
||||
@@ -9,7 +9,7 @@ class Settings::ProfilesController < Settings::BaseController
|
||||
|
||||
def update
|
||||
if UpdateAccountService.new.call(@account, account_params)
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
redirect_to settings_profile_path, notice: I18n.t('generic.changes_saved_msg')
|
||||
else
|
||||
@account.build_fields
|
||||
|
||||
@@ -8,7 +8,7 @@ class Settings::VerificationsController < Settings::BaseController
|
||||
|
||||
def update
|
||||
if UpdateAccountService.new.call(@account, account_params)
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
|
||||
redirect_to settings_verification_path, notice: I18n.t('generic.changes_saved_msg')
|
||||
else
|
||||
render :show
|
||||
|
||||
@@ -27,7 +27,7 @@ class SeveredRelationshipsController < ApplicationController
|
||||
private
|
||||
|
||||
def set_event
|
||||
@event = AccountRelationshipSeveranceEvent.find(params[:id])
|
||||
@event = AccountRelationshipSeveranceEvent.where(account: current_account).find(params[:id])
|
||||
end
|
||||
|
||||
def following_data
|
||||
|
||||
@@ -59,7 +59,7 @@ class StatusesController < ApplicationController
|
||||
def set_status
|
||||
@status = @account.statuses.find(params[:id])
|
||||
authorize @status, :show?
|
||||
rescue Mastodon::NotPermittedError
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
not_found
|
||||
end
|
||||
|
||||
|
||||
@@ -2,11 +2,18 @@
|
||||
|
||||
module Admin::Trends::StatusesHelper
|
||||
def one_line_preview(status)
|
||||
text = if status.local?
|
||||
status.text.split("\n").first
|
||||
else
|
||||
Nokogiri::HTML5(status.text).css('html > body > *').first&.text
|
||||
end
|
||||
text = begin
|
||||
if status.local?
|
||||
status.text.split("\n").first
|
||||
else
|
||||
Nokogiri::HTML5(status.text).css('html > body > *').first&.text
|
||||
end
|
||||
rescue ArgumentError
|
||||
# This can happen if one of the Nokogumbo limits is encountered
|
||||
# Unfortunately, it does not use a more precise error class
|
||||
# nor allows more graceful handling
|
||||
''
|
||||
end
|
||||
|
||||
return '' if text.blank?
|
||||
|
||||
|
||||
@@ -26,6 +26,13 @@ module ContextHelper
|
||||
voters_count: { 'toot' => 'http://joinmastodon.org/ns#', 'votersCount' => 'toot:votersCount' },
|
||||
suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' },
|
||||
attribution_domains: { 'toot' => 'http://joinmastodon.org/ns#', 'attributionDomains' => { '@id' => 'toot:attributionDomains', '@type' => '@id' } },
|
||||
interaction_policies: {
|
||||
'gts' => 'https://gotosocial.org/ns#',
|
||||
'interactionPolicy' => { '@id' => 'gts:interactionPolicy', '@type' => '@id' },
|
||||
'canQuote' => { '@id' => 'gts:canQuote', '@type' => '@id' },
|
||||
'automaticApproval' => { '@id' => 'gts:automaticApproval', '@type' => '@id' },
|
||||
'manualApproval' => { '@id' => 'gts:manualApproval', '@type' => '@id' },
|
||||
},
|
||||
}.freeze
|
||||
|
||||
def full_context
|
||||
|
||||
@@ -26,6 +26,8 @@ module JsonLdHelper
|
||||
# The url attribute can be a string, an array of strings, or an array of objects.
|
||||
# The objects could include a mimeType. Not-included mimeType means it's text/html.
|
||||
def url_to_href(value, preferred_type = nil)
|
||||
value = [value] if value.is_a?(Hash)
|
||||
|
||||
single_value = if value.is_a?(Array) && !value.first.is_a?(String)
|
||||
value.find { |link| preferred_type.nil? || ((link['mimeType'].presence || 'text/html') == preferred_type) }
|
||||
elsif value.is_a?(Array)
|
||||
@@ -41,6 +43,15 @@ module JsonLdHelper
|
||||
end
|
||||
end
|
||||
|
||||
def url_to_media_type(value, preferred_type = nil)
|
||||
value = [value] if value.is_a?(Hash)
|
||||
return unless value.is_a?(Array) && !value.first.is_a?(String)
|
||||
|
||||
single_value = value.find { |link| preferred_type.nil? || ((link['mimeType'].presence || 'text/html') == preferred_type) }
|
||||
|
||||
single_value['mediaType'] unless single_value.nil?
|
||||
end
|
||||
|
||||
def as_array(value)
|
||||
if value.nil?
|
||||
[]
|
||||
|
||||
@@ -4,9 +4,12 @@ import axios from 'axios';
|
||||
import ready from '../mastodon/ready';
|
||||
|
||||
async function checkConfirmation() {
|
||||
const response = await axios.get('/api/v1/emails/check_confirmation');
|
||||
const response = await axios.get('/api/v1/emails/check_confirmation', {
|
||||
headers: { Accept: 'application/json' },
|
||||
withCredentials: true,
|
||||
});
|
||||
|
||||
if (response.data) {
|
||||
if (response.status === 200 && response.data === true) {
|
||||
window.location.href = '/start';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,12 +102,17 @@ export const ensureComposeIsVisible = (getState) => {
|
||||
};
|
||||
|
||||
export function setComposeToStatus(status, text, spoiler_text, content_type) {
|
||||
return{
|
||||
type: COMPOSE_SET_STATUS,
|
||||
status,
|
||||
text,
|
||||
spoiler_text,
|
||||
content_type,
|
||||
return (dispatch, getState) => {
|
||||
const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']);
|
||||
|
||||
dispatch({
|
||||
type: COMPOSE_SET_STATUS,
|
||||
status,
|
||||
text,
|
||||
spoiler_text,
|
||||
content_type,
|
||||
maxOptions
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,17 @@ export function normalizeStatus(status, normalOldStatus, settings) {
|
||||
normalStatus.contentHtml = emojify(normalStatus.content, emojiMap);
|
||||
normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(spoilerText), emojiMap);
|
||||
normalStatus.hidden = (spoilerText.length > 0 || normalStatus.sensitive) && autoHideCW(settings, spoilerText);
|
||||
|
||||
if (normalStatus.url && !(normalStatus.url.startsWith('http://') || normalStatus.url.startsWith('https://'))) {
|
||||
normalStatus.url = null;
|
||||
}
|
||||
|
||||
normalStatus.url ||= normalStatus.uri;
|
||||
|
||||
normalStatus.media_attachments.forEach(item => {
|
||||
if (item.remote_url && !(item.remote_url.startsWith('http://') || item.remote_url.startsWith('https://')))
|
||||
item.remote_url = null;
|
||||
});
|
||||
}
|
||||
|
||||
if (normalOldStatus) {
|
||||
|
||||
@@ -90,11 +90,16 @@ export function fetchStatusFail(id, error, skipLoading) {
|
||||
}
|
||||
|
||||
export function redraft(status, raw_text, content_type) {
|
||||
return {
|
||||
type: REDRAFT,
|
||||
status,
|
||||
raw_text,
|
||||
content_type,
|
||||
return (dispatch, getState) => {
|
||||
const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']);
|
||||
|
||||
dispatch({
|
||||
type: REDRAFT,
|
||||
status,
|
||||
raw_text,
|
||||
content_type,
|
||||
maxOptions,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { apiRequestPost } from 'flavours/glitch/api';
|
||||
import type { Status, StatusVisibility } from 'flavours/glitch/models/status';
|
||||
import type { ApiStatusJSON } from 'flavours/glitch/api_types/statuses';
|
||||
import type { StatusVisibility } from 'flavours/glitch/models/status';
|
||||
|
||||
export const apiReblog = (statusId: string, visibility: StatusVisibility) =>
|
||||
apiRequestPost<{ reblog: Status }>(`v1/statuses/${statusId}/reblog`, {
|
||||
apiRequestPost<{ reblog: ApiStatusJSON }>(`v1/statuses/${statusId}/reblog`, {
|
||||
visibility,
|
||||
});
|
||||
|
||||
export const apiUnreblog = (statusId: string) =>
|
||||
apiRequestPost<Status>(`v1/statuses/${statusId}/unreblog`);
|
||||
apiRequestPost<ApiStatusJSON>(`v1/statuses/${statusId}/unreblog`);
|
||||
|
||||
@@ -28,6 +28,7 @@ export const AltTextBadge: React.FC<{
|
||||
return (
|
||||
<>
|
||||
<button
|
||||
type='button'
|
||||
ref={anchorRef}
|
||||
className='media-gallery__alt__label'
|
||||
onClick={handleClick}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Provider } from 'react-redux';
|
||||
|
||||
import { fetchCustomEmojis } from 'flavours/glitch/actions/custom_emojis';
|
||||
import { fetchServer } from 'flavours/glitch/actions/server';
|
||||
import { hydrateStore } from 'flavours/glitch/actions/store';
|
||||
import { Router } from 'flavours/glitch/components/router';
|
||||
import Compose from 'flavours/glitch/features/standalone/compose';
|
||||
@@ -13,6 +14,7 @@ if (initialState) {
|
||||
}
|
||||
|
||||
store.dispatch(fetchCustomEmojis());
|
||||
store.dispatch(fetchServer());
|
||||
|
||||
const ComposeContainer = () => (
|
||||
<IntlProvider>
|
||||
|
||||
@@ -4,9 +4,12 @@ import axios from 'axios';
|
||||
import ready from 'flavours/glitch/ready';
|
||||
|
||||
async function checkConfirmation() {
|
||||
const response = await axios.get('/api/v1/emails/check_confirmation');
|
||||
const response = await axios.get('/api/v1/emails/check_confirmation', {
|
||||
headers: { Accept: 'application/json' },
|
||||
withCredentials: true,
|
||||
});
|
||||
|
||||
if (response.data) {
|
||||
if (response.status === 200 && response.data === true) {
|
||||
window.location.href = '/start';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@ class Bookmarks extends ImmutablePureComponent {
|
||||
onLoadMore={this.handleLoadMore}
|
||||
emptyMessage={emptyMessage}
|
||||
bindToDocument={!multiColumn}
|
||||
timelineId='bookmarks'
|
||||
/>
|
||||
|
||||
<Helmet>
|
||||
|
||||
@@ -100,6 +100,7 @@ class Favourites extends ImmutablePureComponent {
|
||||
onLoadMore={this.handleLoadMore}
|
||||
emptyMessage={emptyMessage}
|
||||
bindToDocument={!multiColumn}
|
||||
timelineId='favourites'
|
||||
/>
|
||||
|
||||
<Helmet>
|
||||
|
||||
@@ -169,6 +169,15 @@ class LocalSettingsPage extends PureComponent {
|
||||
<FormattedMessage id='settings.wide_view' defaultMessage='Wide view (Desktop mode only)' />
|
||||
<span className='hint'><FormattedMessage id='settings.wide_view_hint' defaultMessage='Stretches columns to better fill the available space.' /></span>
|
||||
</LocalSettingsPageItem>
|
||||
<LocalSettingsPageItem
|
||||
settings={settings}
|
||||
item={['fullwidth_columns']}
|
||||
id='mastodon-settings--fullwidth_columns'
|
||||
onChange={onChange}
|
||||
>
|
||||
<FormattedMessage id='settings.fullwidth_view' defaultMessage='Stretch columns to full width (Desktop mode only)' />
|
||||
<span className='hint'><FormattedMessage id='settings.fullwidth_view_hint' defaultMessage='Stretches columns to fill all the available space.' /></span>
|
||||
</LocalSettingsPageItem>
|
||||
</section>
|
||||
</div>
|
||||
),
|
||||
|
||||
@@ -26,18 +26,23 @@ const getHostname = url => {
|
||||
|
||||
const domParser = new DOMParser();
|
||||
|
||||
const addAutoPlay = html => {
|
||||
const handleIframeUrl = (html, url, providerName) => {
|
||||
const document = domParser.parseFromString(html, 'text/html').documentElement;
|
||||
const iframe = document.querySelector('iframe');
|
||||
const startTime = new URL(url).searchParams.get('t');
|
||||
|
||||
if (iframe) {
|
||||
if (iframe.src.indexOf('?') !== -1) {
|
||||
iframe.src += '&';
|
||||
} else {
|
||||
iframe.src += '?';
|
||||
const iframeUrl = new URL(iframe.src);
|
||||
|
||||
iframeUrl.searchParams.set('autoplay', 1);
|
||||
iframeUrl.searchParams.set('auto_play', 1);
|
||||
|
||||
if (providerName === 'YouTube') {
|
||||
iframeUrl.searchParams.set('start', startTime || '');
|
||||
iframe.referrerPolicy = 'strict-origin-when-cross-origin';
|
||||
}
|
||||
|
||||
iframe.src += 'autoplay=1&auto_play=1';
|
||||
iframe.src = iframeUrl.href;
|
||||
|
||||
// DOM parser creates html/body elements around original HTML fragment,
|
||||
// so we need to get innerHTML out of the body and not the entire document
|
||||
@@ -103,7 +108,7 @@ export default class Card extends PureComponent {
|
||||
|
||||
renderVideo () {
|
||||
const { card } = this.props;
|
||||
const content = { __html: addAutoPlay(card.get('html')) };
|
||||
const content = { __html: handleIframeUrl(card.get('html'), card.get('url'), card.get('provider_name')) };
|
||||
|
||||
return (
|
||||
<div
|
||||
|
||||
@@ -14,6 +14,7 @@ import { Link } from 'react-router-dom';
|
||||
import { AnimatedNumber } from 'flavours/glitch/components/animated_number';
|
||||
import AttachmentList from 'flavours/glitch/components/attachment_list';
|
||||
import EditedTimestamp from 'flavours/glitch/components/edited_timestamp';
|
||||
import { FilterWarning } from 'flavours/glitch/components/filter_warning';
|
||||
import type { StatusLike } from 'flavours/glitch/components/hashtag_bar';
|
||||
import { getHashtagBarForStatus } from 'flavours/glitch/components/hashtag_bar';
|
||||
import { IconLogo } from 'flavours/glitch/components/logo';
|
||||
@@ -72,6 +73,7 @@ export const DetailedStatus: React.FC<{
|
||||
}) => {
|
||||
const properStatus = status?.get('reblog') ?? status;
|
||||
const [height, setHeight] = useState(0);
|
||||
const [showDespiteFilter, setShowDespiteFilter] = useState(false);
|
||||
const nodeRef = useRef<HTMLDivElement>();
|
||||
const history = useAppHistory();
|
||||
|
||||
@@ -108,6 +110,10 @@ export const DetailedStatus: React.FC<{
|
||||
[onOpenVideo, status],
|
||||
);
|
||||
|
||||
const handleFilterToggle = useCallback(() => {
|
||||
setShowDespiteFilter(!showDespiteFilter);
|
||||
}, [showDespiteFilter, setShowDespiteFilter]);
|
||||
|
||||
const _measureHeight = useCallback(
|
||||
(heightJustChanged?: boolean) => {
|
||||
if (measureHeight && nodeRef.current) {
|
||||
@@ -273,12 +279,12 @@ export const DetailedStatus: React.FC<{
|
||||
);
|
||||
mediaIcons.push('video-camera');
|
||||
}
|
||||
} else if (status.get('spoiler_text').length === 0) {
|
||||
} else if (status.get('card')) {
|
||||
media.push(
|
||||
<Card
|
||||
sensitive={status.get('sensitive')}
|
||||
onOpenMedia={onOpenMedia}
|
||||
card={status.get('card', null)}
|
||||
card={status.get('card')}
|
||||
/>,
|
||||
);
|
||||
mediaIcons.push('link');
|
||||
@@ -358,6 +364,8 @@ export const DetailedStatus: React.FC<{
|
||||
);
|
||||
contentMedia.push(hashtagBar);
|
||||
|
||||
const matchedFilters = status.get('matched_filters');
|
||||
|
||||
return (
|
||||
<div style={outerStyle}>
|
||||
<div
|
||||
@@ -386,22 +394,32 @@ export const DetailedStatus: React.FC<{
|
||||
)}
|
||||
</Permalink>
|
||||
|
||||
<StatusContent
|
||||
status={status}
|
||||
media={contentMedia}
|
||||
extraMedia={extraMedia}
|
||||
mediaIcons={contentMediaIcons}
|
||||
expanded={expanded}
|
||||
collapsed={false}
|
||||
onExpandedToggle={onToggleHidden}
|
||||
onTranslate={handleTranslate}
|
||||
onUpdate={handleChildUpdate}
|
||||
tagLinks={tagMisleadingLinks}
|
||||
rewriteMentions={rewriteMentions}
|
||||
parseClick={parseClick}
|
||||
disabled
|
||||
{...(statusContentProps as any)}
|
||||
/>
|
||||
{matchedFilters && (
|
||||
<FilterWarning
|
||||
title={matchedFilters.join(', ')}
|
||||
expanded={showDespiteFilter}
|
||||
onClick={handleFilterToggle}
|
||||
/>
|
||||
)}
|
||||
|
||||
{(!matchedFilters || showDespiteFilter) && (
|
||||
<StatusContent
|
||||
status={status}
|
||||
media={contentMedia}
|
||||
extraMedia={extraMedia}
|
||||
mediaIcons={contentMediaIcons}
|
||||
expanded={expanded}
|
||||
collapsed={false}
|
||||
onExpandedToggle={onToggleHidden}
|
||||
onTranslate={handleTranslate}
|
||||
onUpdate={handleChildUpdate}
|
||||
tagLinks={tagMisleadingLinks}
|
||||
rewriteMentions={rewriteMentions}
|
||||
parseClick={parseClick}
|
||||
disabled
|
||||
{...(statusContentProps as any)}
|
||||
/>
|
||||
)}
|
||||
|
||||
<div className='detailed-status__meta'>
|
||||
<div className='detailed-status__meta__line'>
|
||||
|
||||
@@ -133,7 +133,7 @@ const makeMapStateToProps = () => {
|
||||
});
|
||||
|
||||
const mapStateToProps = (state, props) => {
|
||||
const status = getStatus(state, { id: props.params.statusId });
|
||||
const status = getStatus(state, { id: props.params.statusId, contextType: 'detailed' });
|
||||
|
||||
let ancestorsIds = Immutable.List();
|
||||
let descendantsIds = Immutable.List();
|
||||
|
||||
@@ -136,6 +136,8 @@ export const BoostModal: React.FC<{
|
||||
? messages.cancel_reblog
|
||||
: messages.reblog,
|
||||
)}
|
||||
/* eslint-disable-next-line jsx-a11y/no-autofocus -- We are in the modal */
|
||||
autoFocus
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -91,6 +91,7 @@ const mapStateToProps = state => ({
|
||||
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
|
||||
canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,
|
||||
isWide: state.getIn(['local_settings', 'stretch']),
|
||||
fullWidthColumns: state.getIn(['local_settings', 'fullwidth_columns']),
|
||||
unreadNotifications: selectUnreadNotificationGroupsCount(state),
|
||||
showFaviconBadge: state.getIn(['local_settings', 'notifications', 'favicon_badge']),
|
||||
hicolorPrivacyIcons: state.getIn(['local_settings', 'hicolor_privacy_icons']),
|
||||
@@ -270,6 +271,7 @@ class UI extends PureComponent {
|
||||
dispatch: PropTypes.func.isRequired,
|
||||
children: PropTypes.node,
|
||||
isWide: PropTypes.bool,
|
||||
fullWidthColumns: PropTypes.bool,
|
||||
systemFontUi: PropTypes.bool,
|
||||
isComposing: PropTypes.bool,
|
||||
hasComposingText: PropTypes.bool,
|
||||
@@ -608,6 +610,7 @@ class UI extends PureComponent {
|
||||
|
||||
const className = classNames('ui', {
|
||||
'wide': isWide,
|
||||
'fullwidth-columns': this.props.fullWidthColumns,
|
||||
'system-font': this.props.systemFontUi,
|
||||
'hicolor-privacy-icons': this.props.hicolorPrivacyIcons,
|
||||
});
|
||||
|
||||
@@ -1,17 +1,55 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc je svobodný software s otevřeným zdrojovým kódem založený na Mastodonu.",
|
||||
"account.disclaimer_full": "Níže uvedené informace mohou popisovat uživatelský profil neúplně.",
|
||||
"account.follows": "Sleduje",
|
||||
"account.follows_you": "Sleduje vás",
|
||||
"account.suspended_disclaimer_full": "Tento uživatel byl pozastaven moderátorem.",
|
||||
"account.view_full_profile": "Zobrazit celý profil",
|
||||
"boost_modal.missing_description": "Příspěvek obsahuje obrázky bez popisků",
|
||||
"column.favourited_by": "Oblíbeno uživatelem",
|
||||
"column.heading": "Různé",
|
||||
"column.reblogged_by": "Boostnuto uživatelem",
|
||||
"column.subheading": "Různé",
|
||||
"column_header.profile": "Profil",
|
||||
"column_subheading.lists": "Seznamy",
|
||||
"column_subheading.navigation": "Navigace",
|
||||
"community.column_settings.allow_local_only": "Zobrazit pouze místní tooty",
|
||||
"compose.attach.doodle": "Nakreslete něco",
|
||||
"compose.change_federation": "Změnit nastavení federace",
|
||||
"compose.content-type.change": "Změnit pokročilé možnosti formátování",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Formátovat příspěvky pomocí HTML",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Formátovat příspěvky pomocí Markdown",
|
||||
"compose.content-type.plain": "Prostý text",
|
||||
"compose.content-type.plain_meta": "Psát bez pokročilého formátování",
|
||||
"compose.disable_threaded_mode": "Zakázat režim vláken",
|
||||
"compose.enable_threaded_mode": "Povolit režim vláken",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Označit médium za citlivé} other {Označit média za citlivá}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Médium je označeno jako citlivé} other {Média jsou označena jako citlivá}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Médium není označeno za citlivé} other {Média nejsou označena za citlivá}}",
|
||||
"confirmation_modal.do_not_ask_again": "Příště se už neptat",
|
||||
"confirmations.deprecated_settings.confirm": "Použít nastavení Mastodon",
|
||||
"confirmations.deprecated_settings.message": "Některé z glitch-soc, zařízeních specifických {app_settings}, které používáte, byly nahrazeny {preferences} Mastodonu a budou přepsány:",
|
||||
"confirmations.missing_media_description.confirm": "Přesto odeslat",
|
||||
"confirmations.missing_media_description.edit": "Upravit média",
|
||||
"confirmations.missing_media_description.message": "Alespoň jedna příloha nemá popisek. Zvažte popsání všech příloh pro zrakově postižené před odesláním tootu.",
|
||||
"direct.group_by_conversations": "Seskupit do konverzací",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Vybrané účty",
|
||||
"favourite_modal.favourite": "Oblíbit si příspěvek?",
|
||||
"federation.federated.long": "Povolit tomuto příspěvku přístup na jiné servery",
|
||||
"federation.federated.short": "Federováno",
|
||||
"federation.local_only.long": "Zabránit tomuto příspěvku v přístupu k jiným serverům",
|
||||
"federation.local_only.short": "Lokální příspěvek",
|
||||
"firehose.column_settings.allow_local_only": "Zobrazit pouze lokální příspěvky ve \"Vše\"",
|
||||
"home.column_settings.advanced": "Pokročilé",
|
||||
"home.column_settings.filter_regex": "Filtrovat podle regulárních výrazů",
|
||||
"home.column_settings.show_direct": "Zobrazit přímé zprávy",
|
||||
"home.column_settings.show_direct": "Zobrazit soukromé zmínky",
|
||||
"home.settings": "Nastavení sloupců",
|
||||
"keyboard_shortcuts.bookmark": "Přidat do záložek",
|
||||
"keyboard_shortcuts.secondary_toot": "Odeslat příspěvek s druhotným nastavením soukromí",
|
||||
"keyboard_shortcuts.secondary_toot": "pro odeslání příspěvku s sekundárním nastavením soukromí",
|
||||
"keyboard_shortcuts.toggle_collapse": "Sbalit/rozbalit příspěvek",
|
||||
"moved_to_warning": "Tento účet je označen jako přesunut na {moved_to_link}, a proto nemusí přijímat nové sledování.",
|
||||
"navigation_bar.app_settings": "Nastavení aplikace",
|
||||
"navigation_bar.featured_users": "Vybraní uživatelé",
|
||||
"navigation_bar.keyboard_shortcuts": "Klávesové zkratky",
|
||||
@@ -22,11 +60,13 @@
|
||||
"notification_purge.btn_invert": "Obrátit\nvýběr",
|
||||
"notification_purge.btn_none": "Nevybrat\nnic",
|
||||
"notification_purge.start": "Čistící režim",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Zobrazit panel filtrů",
|
||||
"notifications.marked_clear": "Smazat vybraná oznámení",
|
||||
"notifications.marked_clear_confirmation": "Určitě chcete trvale smazat všechna vybraná oznámení?",
|
||||
"settings.always_show_spoilers_field": "Vždy zobrazit pole pro varování o obsahu",
|
||||
"settings.auto_collapse": "Automaticky sbalit",
|
||||
"settings.auto_collapse_all": "Všechno",
|
||||
"settings.auto_collapse_height": "Výška (v pixelech) pro toot považována za dlouhou",
|
||||
"settings.auto_collapse_lengthy": "Dlouhé příspěvky",
|
||||
"settings.auto_collapse_media": "Příspěvky s přílohami",
|
||||
"settings.auto_collapse_notifications": "Oznámení",
|
||||
@@ -50,6 +90,8 @@
|
||||
"settings.enable_collapsed": "Povolit sbalené příspěvky",
|
||||
"settings.enable_collapsed_hint": "U sbalených příspěvků je část jejich obsahu skrytá, aby zabraly méně místa na obrazovce. (Tohle není stejná funkce jako varování o obsahu.)",
|
||||
"settings.enable_content_warnings_auto_unfold": "Vždy rozbalit příspěvky označené varováním o obsahu",
|
||||
"settings.fullwidth_view": "Roztáhnout sloupce na celou šířku (pouze ve verzi pro počítač)",
|
||||
"settings.fullwidth_view_hint": "Sloupce se roztáhnou, aby vyplnily veškerý dostupný prostor.",
|
||||
"settings.general": "Obecné",
|
||||
"settings.hicolor_privacy_icons": "Barevné ikony soukromí",
|
||||
"settings.hicolor_privacy_icons.hint": "Zobrazit ikony úrovně soukromí příspěvků v jasných, snadno rozlišitelných barvách",
|
||||
@@ -73,17 +115,18 @@
|
||||
"settings.pop_in_player": "Povolit plovoucí okno přehrávače",
|
||||
"settings.pop_in_position": "Pozice plovoucího okna:",
|
||||
"settings.pop_in_right": "Vpravo",
|
||||
"settings.preferences": "Předvolby",
|
||||
"settings.preferences": "Uživatelské předvolby",
|
||||
"settings.prepend_cw_re": "Při odpovídání přidat před varování o obsahu “re: ”",
|
||||
"settings.preselect_on_reply": "Při odpovědi označit uživatelská jména",
|
||||
"settings.preselect_on_reply": "Při odpovědi před-vybrat uživatelská jména",
|
||||
"settings.preselect_on_reply_hint": "Při odpovídání na konverzaci s více účastníky se jména všech kromě prvního označí, aby šla jednoduše smazat",
|
||||
"settings.rewrite_mentions": "Přepsat zmínky v zobrazených příspěvcích",
|
||||
"settings.rewrite_mentions_acct": "Přepsat uživatelským jménem a doménou (pokud je účet na jiném serveru)",
|
||||
"settings.rewrite_mentions_no": "Nepřepisovat zmínky",
|
||||
"settings.rewrite_mentions_username": "Přepsat uživatelským jménem",
|
||||
"settings.shared_settings_link": "předvolbách Mastodonu",
|
||||
"settings.shared_settings_link": "uživatelské předvolby",
|
||||
"settings.show_action_bar": "Zobrazit ve sbalených příspěvcích tlačítka s akcemi",
|
||||
"settings.show_content_type_choice": "Zobrazit volbu formátu příspěvku",
|
||||
"settings.show_published_toast": "Zobrazit gratulaci při publikování/ukládání příspěvku",
|
||||
"settings.show_reply_counter": "Zobrazit odhad počtu odpovědí",
|
||||
"settings.side_arm": "Vedlejší odesílací tlačítko:",
|
||||
"settings.side_arm.none": "Žádné",
|
||||
@@ -92,22 +135,26 @@
|
||||
"settings.side_arm_reply_mode.keep": "Použít svou nastavenou úroveň soukromí",
|
||||
"settings.side_arm_reply_mode.restrict": "Zvýšit úroveň soukromí nejméně na úroveň příspěvku, na který odpovídáte",
|
||||
"settings.status_icons": "Ikony u příspěvků",
|
||||
"settings.status_icons_language": "Indikace jazyk",
|
||||
"settings.status_icons_language": "Indikátor jazyka",
|
||||
"settings.status_icons_local_only": "Indikace lokálního příspěvku",
|
||||
"settings.status_icons_media": "Indikace obrázků a anket",
|
||||
"settings.status_icons_reply": "Indikace odpovědi",
|
||||
"settings.status_icons_visibility": "Indikace úrovně soukromí",
|
||||
"settings.swipe_to_change_columns": "Povolit změnu sloupců přejetím (pouze na mobilním telefonu)",
|
||||
"settings.tag_misleading_links": "Označit zavádějící odkazy",
|
||||
"settings.tag_misleading_links.hint": "Zobrazit skutečný cíl u každého odkazu, který ho explicitně nezmiňuje",
|
||||
"settings.wide_view": "Široké sloupce (pouze v režimu Desktop)",
|
||||
"settings.wide_view_hint": "Sloupce se roztáhnout, aby lépe vyplnily dostupný prostor.",
|
||||
"settings.wide_view_hint": "Sloupce se roztáhnou, aby lépe vyplnily dostupný prostor.",
|
||||
"status.collapse": "Sbalit",
|
||||
"status.filtered": "Filtrováno",
|
||||
"status.has_audio": "Obsahuje audio",
|
||||
"status.has_pictures": "Obsahuje obrázky",
|
||||
"status.has_preview_card": "Obsahuje náhled odkazu",
|
||||
"status.has_video": "Obsahuje video",
|
||||
"status.hide": "Skrýt příspěvek",
|
||||
"status.in_reply_to": "Tento příspěvek je odpověď",
|
||||
"status.is_poll": "Tento příspěvek je anketa",
|
||||
"status.local_only": "Viditelné pouze z vaší instance",
|
||||
"status.show_filter_reason": "Přesto zobrazit",
|
||||
"status.uncollapse": "Rozbalit"
|
||||
}
|
||||
|
||||
@@ -154,7 +154,5 @@
|
||||
"status.is_poll": "Dieser Toot ist eine Umfrage",
|
||||
"status.local_only": "Nur auf deiner Instanz sichtbar",
|
||||
"status.show_filter_reason": "Trotzdem anzeigen",
|
||||
"status.show_less": "Weniger anzeigen",
|
||||
"status.show_more": "Mehr anzeigen",
|
||||
"status.uncollapse": "Ausklappen"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,134 @@
|
||||
{
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"about.fork_disclaimer": "Το Glitch-soc είναι ελεύθερο λογισμικό ανοιχτού κώδικα που είναι αντιγραφή από το Mastodon.",
|
||||
"account.disclaimer_full": "Οι παρακάτω πληροφορίες μπορεί να αντικατοπτρίζουν το προφίλ του χρήστη ελλιπώς.",
|
||||
"account.follows": "Ακολουθεί",
|
||||
"account.follows_you": "Σε ακολουθεί",
|
||||
"account.suspended_disclaimer_full": "Αυτός ο χρήστης έχει ανασταλεί από έναν συντονιστή.",
|
||||
"account.view_full_profile": "Προβολή πλήρους προφίλ",
|
||||
"boost_modal.missing_description": "Αυτό το τουτ περιέχει κάποια μέσα χωρίς περιγραφή",
|
||||
"column.favourited_by": "Αγαπήθηκε από",
|
||||
"column.heading": "Διάφορα",
|
||||
"column.reblogged_by": "Ενισχύθηκε από",
|
||||
"column.subheading": "Διάφορες επιλογές",
|
||||
"column_header.profile": "Προφίλ",
|
||||
"column_subheading.lists": "Λίστες",
|
||||
"column_subheading.navigation": "Πλοήγηση",
|
||||
"community.column_settings.allow_local_only": "Εμφάνιση τοπικών τουτ",
|
||||
"compose.attach.doodle": "Σχεδίασε κάτι",
|
||||
"compose.change_federation": "Αλλαγή ρυθμίσεων ομοσπονδίας",
|
||||
"compose.content-type.change": "Αλλαγή προηγμένων επιλογών μορφοποίησης",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Μορφοποίηση των αναρτήσεων σας με χρήση HTML",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Μορφοποίηση των αναρτήσεων σας με χρήση Markdown",
|
||||
"compose.content-type.plain": "Απλό κείμενο",
|
||||
"compose.content-type.plain_meta": "Γράψιμο χωρίς προηγμένη μορφοποίηση",
|
||||
"compose.disable_threaded_mode": "Απενεργοποίηση λειτουργίας νημάτων",
|
||||
"compose.enable_threaded_mode": "Ενεργοποίηση λειτουργίας νημάτων",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Επισήμανση πολυμέσου ως ευαίσθητο} other {Επισήμανση πολυμέσων ως ευαίσθητα}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Το πολυμέσο έχει σημανθεί ως ευαίσθητο} other {Τα πολυμέσα έχουν σημανθεί ως ευαίσθητα}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Το πολυμέσο δεν έχει σημανθεί ως ευαίσθητο} other {Τα πολυμέσα δεν έχουν σημανθεί ως ευαίσθητα}}",
|
||||
"confirmation_modal.do_not_ask_again": "Να μην ζητηθεί επιβεβαίωση ξανά",
|
||||
"confirmations.deprecated_settings.confirm": "Χρήση προτιμήσεων του Mastodon",
|
||||
"confirmations.missing_media_description.confirm": "Αποστολή ούτως ή άλλως",
|
||||
"confirmations.missing_media_description.edit": "Επεξεργασία πολυμέσου",
|
||||
"confirmations.missing_media_description.message": "Τουλάχιστον ένα συνημμένο πολυμέσων δεν έχει περιγραφή. Σκεφτείτε να προσθέσετε περιγραφή σε όλα τα συνημμένα πολυμέσων για τα άτομα με προβλήματα όρασης πριν από την αποστολή του τουτ σας.",
|
||||
"direct.group_by_conversations": "Ομαδοποίηση ανά συζήτηση",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Αναδεικνυόμενοι λογαριασμοί",
|
||||
"favourite_modal.favourite": "Αγάπησε την ανάρτηση;",
|
||||
"federation.federated.long": "Επιτρέψτε σε αυτήν την ανάρτηση να φτάσει σε άλλους διακομιστές",
|
||||
"federation.local_only.long": "Αποτρέψτε αυτήν την ανάρτηση να φτάσει σε άλλους διακομιστές",
|
||||
"federation.local_only.short": "Τοπικά μόνο",
|
||||
"firehose.column_settings.allow_local_only": "Εμφάνιση τοπικών αναρτήσεων σε \"Όλα\"",
|
||||
"home.column_settings.advanced": "Για προχωρημένους",
|
||||
"home.column_settings.filter_regex": "Φιλτράρισμα βάσει των κανονικών εκφράσεων",
|
||||
"home.column_settings.show_direct": "Εμφάνιση ιδιωτικών επισημάνσεων",
|
||||
"home.settings": "Ρυθμίσεις στήλης",
|
||||
"keyboard_shortcuts.bookmark": "για να σελιδοποιήσει",
|
||||
"keyboard_shortcuts.secondary_toot": "για αποστολή τουτ χρησιμοποιώντας δευτερεύουσα ρύθμιση απορρήτου",
|
||||
"keyboard_shortcuts.toggle_collapse": "για να συμπτύξει/επεκτείνει τα τουτς",
|
||||
"moved_to_warning": "Αυτός ο λογαριασμός έχει σημανθεί ως μετακινημένος στο {moved_to_link} και έτσι δεν μπορεί να δεχτεί νέους ακολούθους.",
|
||||
"navigation_bar.app_settings": "Ρυθμίσεις εφαρμογής",
|
||||
"navigation_bar.featured_users": "Αναδεικνυόμενοι χρήστες",
|
||||
"navigation_bar.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου",
|
||||
"navigation_bar.misc": "Διάφορα",
|
||||
"notification.markForDeletion": "Σήμανση για διαγραφή",
|
||||
"notification_purge.btn_all": "Επιλογή\nόλων",
|
||||
"notification_purge.btn_apply": "Εκκαθάριση\nεπιλεγμένων",
|
||||
"notification_purge.btn_invert": "Αντιστροφή\nεπιλογής",
|
||||
"notification_purge.btn_none": "Επιλογή\nκανενός",
|
||||
"notification_purge.start": "Εισαγωγή στη λειτουργία καθαρισμού ειδοποιήσεων",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Εμφάνιση μπάρας φίλτρου",
|
||||
"notifications.marked_clear": "Εκκαθάριση επιλεγμένων ειδοποιήσεων",
|
||||
"notifications.marked_clear_confirmation": "Είστε βέβαιοι ότι θέλετε να καθαρίσετε μόνιμα όλες τις επιλεγμένες ειδοποιήσεις;",
|
||||
"settings.always_show_spoilers_field": "Πάντα ενεργοποίηση του πεδίου Προειδοποίηση Περιεχομένου",
|
||||
"settings.auto_collapse": "Αυτόματη σύμπτυξη",
|
||||
"settings.auto_collapse_all": "Τα πάντα",
|
||||
"settings.auto_collapse_height": "Ύψος (σε pixels) για να θεωρηθεί ένα τουτ μακροσκελές",
|
||||
"settings.auto_collapse_lengthy": "Μακροσκελή τουτς",
|
||||
"settings.auto_collapse_media": "Τουτς με πολυμέσα",
|
||||
"settings.auto_collapse_notifications": "Ειδοποιήσεις",
|
||||
"settings.auto_collapse_reblogs": "Ενισχύσεις",
|
||||
"settings.auto_collapse_replies": "Απαντήσεις",
|
||||
"settings.close": "Κλείσιμο",
|
||||
"settings.collapsed_statuses": "Συμπτυγμένα τουτς",
|
||||
"settings.compose_box_opts": "Πλαίσιο σύνθεσης",
|
||||
"settings.confirm_missing_media_description": "Εμφάνιση διαλόγου επιβεβαίωσης πριν την αποστολή τουτς χωρίς περιγραφές πολυμέσων",
|
||||
"settings.content_warnings": "Προειδοποιήσεις περιεχομένου",
|
||||
"settings.content_warnings.regexp": "Κανονική έκφραση (regex)",
|
||||
"settings.content_warnings_filter": "Προειδοποιήσεις περιεχομένου να μην ξεδιπλώνονται αυτόματα:",
|
||||
"settings.content_warnings_media_outside": "Εμφάνιση συνημμένων πολυμέσων έξω από τις προειδοποιήσεις περιεχομένου",
|
||||
"settings.content_warnings_media_outside_hint": "Αναπαράγει την συμπεριφορά του Mastodon έχοντας την εναλλαγή προειδοποίησης περιεχομένου να μην επηρεάζει τα συνημμένα πολυμέσων",
|
||||
"settings.content_warnings_shared_state": "Εμφάνιση/απόκρυψη περιεχομένου όλων των αντιγράφων ταυτόχρονα",
|
||||
"settings.content_warnings_unfold_opts": "Επιλογές αυτόματου ξεδιπλώματος",
|
||||
"settings.deprecated_setting": "Αυτή η ρύθμιση τώρα ελέγχεται από τις {settings_page_link} του Mastodon",
|
||||
"settings.enable_collapsed": "Ενεργοποίηση συμπτυγμένων τουτς",
|
||||
"settings.enable_collapsed_hint": "Τα συμπτηγμένα τουτ έχουν τμήματα του περιεχομένου τους κρυμμένα για να καταλαμβάνουν λιγότερο χώρο στην οθόνη. Αυτό είναι διαφορετικό από τη λειτουργία Προειδοποίησης Περιεχομένου",
|
||||
"settings.enable_content_warnings_auto_unfold": "Αυτόματη ξεδίπλωμα προειδοποιήσεων περιεχομένου",
|
||||
"settings.general": "Γενικά",
|
||||
"settings.image_backgrounds": "Εικόνες φόντου",
|
||||
"settings.image_backgrounds_media": "Προεπισκόπηση συμπτυγμένων πολυμέσων τουτ",
|
||||
"settings.image_backgrounds_media_hint": "Αν η δημοσίευση έχει οποιοδήποτε συνημμένο πολυμέσων, χρησιμοποιήστε το πρώτο ως φόντο",
|
||||
"settings.image_backgrounds_users": "Δώστε στα συμπτυγμένα τουτ μια εικόνα φόντου",
|
||||
"settings.layout_opts": "Επιλογές διάταξης",
|
||||
"settings.media": "Πολυμέσα",
|
||||
"settings.notifications.tab_badge": "Σήμα μη αναγνωσμένων ειδοποιήσεων",
|
||||
"settings.notifications.tab_badge.hint": "Εμφανίζει ένα σήμα για μη αναγνωσμένες ειδοποιήσεις στα εικονίδια της στήλης όταν η στήλη ειδοποιήσεων δεν είναι ανοιχτή",
|
||||
"settings.notifications_opts": "Ρυθμίσεις ειδοποιήσεων",
|
||||
"settings.pop_in_left": "Αριστερά",
|
||||
"settings.pop_in_right": "Δεξιά",
|
||||
"settings.preferences": "Προτιμήσεις χρήστη",
|
||||
"settings.preselect_on_reply": "Προεπιλογή ονομάτων χρηστών στην απάντηση",
|
||||
"settings.preselect_on_reply_hint": "Όταν απαντάτε σε μια συνομιλία με πολλαπλούς συμμετέχοντες, προεπιλέξτε τα ονόματα χρηστών μετά τον πρώτο",
|
||||
"settings.rewrite_mentions": "Ξαναγράψε επισημάνσεις στις προβαλλόμενες καταστάσεις",
|
||||
"settings.rewrite_mentions_acct": "Ξαναγράψε με όνομα χρήστη και τομέα (όταν ο λογαριασμός είναι απομακρυσμένος)",
|
||||
"settings.rewrite_mentions_no": "Μην ξαναγράψεις επισημάνσεις",
|
||||
"settings.rewrite_mentions_username": "Ξαναγράψε με όνομα χρήστη",
|
||||
"settings.shared_settings_link": "προτιμήσεις χρήστη",
|
||||
"settings.show_action_bar": "Εμφάνιση κουμπιών ενεργειών σε συμπτυγμένα τουτ",
|
||||
"settings.side_arm": "Δευτερεύον κουμπί τουτ:",
|
||||
"settings.side_arm.none": "Κανένα",
|
||||
"settings.side_arm_reply_mode": "Όταν απαντάτε σε ένα τουτ, το κουμπί δευτερεύοντος τουτ πρέπει να:",
|
||||
"settings.side_arm_reply_mode.copy": "Αντιγράψει τη ρύθμιση απορρήτου του τουτ που απαντάται",
|
||||
"settings.side_arm_reply_mode.keep": "Διατηρήσει το καθορισμένο απόρρητο",
|
||||
"settings.side_arm_reply_mode.restrict": "Περιορίσει τη ρύθμιση απορρήτου σε εκείνη του τουτ που απαντάται",
|
||||
"settings.status_icons": "Εικονίδια τουτ",
|
||||
"settings.status_icons_language": "Ένδειξη γλώσσας",
|
||||
"settings.status_icons_local_only": "Ένδειξη τοπικό μόνο",
|
||||
"settings.status_icons_media": "Ενδείξεις μέσων και δημοσκοπήσεων",
|
||||
"settings.status_icons_reply": "Ένδειξη απαντήσεων",
|
||||
"settings.status_icons_visibility": "Ένδειξη απορρήτου τουτ",
|
||||
"settings.tag_misleading_links": "Σήμανση παραπλανητικών συνδέσμων",
|
||||
"settings.tag_misleading_links.hint": "Προσθήκη οπτικής ένδειξης με τον εξυπηρετητή στόχο του συνδέσμου σε κάθε σύνδεσμο που δεν αναφέρεται ρητά",
|
||||
"status.collapse": "Σύμπτυξη",
|
||||
"status.filtered": "Φιλτραρισμένο",
|
||||
"status.has_audio": "Διαθέτει συνημμένα αρχεία ήχου",
|
||||
"status.has_pictures": "Διαθέτει συνημμένες εικόνες",
|
||||
"status.has_preview_card": "Διαθέτει συνημμένη κάρτα προεπισκόπησης",
|
||||
"status.has_video": "Διαθέτει συνημμένα βίντεο",
|
||||
"status.hide": "Απόκρυψη ανάρτησης",
|
||||
"status.in_reply_to": "Αυτό το τουτ είναι απάντηση",
|
||||
"status.is_poll": "Αυτό το τουτ είναι δημοσκόπηση",
|
||||
"status.show_filter_reason": "Εμφάνιση ούτως ή άλλως",
|
||||
"status.uncollapse": "Επέκταση"
|
||||
}
|
||||
|
||||
@@ -90,6 +90,8 @@
|
||||
"settings.enable_collapsed": "Enable collapsed toots",
|
||||
"settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature",
|
||||
"settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings",
|
||||
"settings.fullwidth_view": "Stretch columns to full width (Desktop mode only)",
|
||||
"settings.fullwidth_view_hint": "Stretches columns to fill all the available space.",
|
||||
"settings.general": "General",
|
||||
"settings.hicolor_privacy_icons": "High color privacy icons",
|
||||
"settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"about.fork_disclaimer": "Glitch-soc estas libera malfermitkoda programo forkigita el Mastodon.",
|
||||
"account.disclaimer_full": "Subaj informoj povas nekomplete prezenti la profilon de la uzanto.",
|
||||
"account.follows": "Sekvatoj",
|
||||
"account.follows_you": "Sekvas vin",
|
||||
"account.suspended_disclaimer_full": "Ĉi tiu uzanto estis suspendita de moderiganto.",
|
||||
"account.view_full_profile": "Vidi plenan profilon",
|
||||
"boost_modal.missing_description": "Ĉi tiu afiŝo enhavas plurmedion, ke ne havas priskribon",
|
||||
@@ -13,37 +14,118 @@
|
||||
"column_subheading.lists": "Listoj",
|
||||
"column_subheading.navigation": "Navigado",
|
||||
"community.column_settings.allow_local_only": "Montri nur-lokajn afiŝojn",
|
||||
"compose.attach.doodle": "Skribu ion",
|
||||
"compose.change_federation": "Ŝanĝi agordojn de federacio",
|
||||
"compose.content-type.change": "Ŝanĝi altnivelajn agordojn de formatado",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Formati viajn afiŝojn per HTML",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Formati viajn afiŝojn per Markdown",
|
||||
"compose.content-type.plain": "Plata teksto",
|
||||
"compose.content-type.plain_meta": "Skribi sen altnivela formatado",
|
||||
"compose.disable_threaded_mode": "Malŝalti treditan reĝimon",
|
||||
"compose.enable_threaded_mode": "Ŝalti treditan reĝimon",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Stampi enhavon kiel sentema} other {Stampi enhavon kiel sentema}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Enhavo delikatiĝis} other {Enhavo delikatiĝis}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Enhavo ne delikatiĝis} other {Enhavo ne delikatiĝis}}",
|
||||
"confirmation_modal.do_not_ask_again": "Ne peti por konfirmo plue",
|
||||
"confirmations.deprecated_settings.confirm": "Uzi la agordojn de Mastodon",
|
||||
"confirmations.deprecated_settings.message": "{preferences} de Mastodon anstataŭigis iom da ilo-nivela {app_settings} de glitch-soc, kaj superos ĝin:",
|
||||
"confirmations.missing_media_description.confirm": "Sendi ĉiuokaze",
|
||||
"confirmations.missing_media_description.edit": "Redakti aŭdovidaĵon",
|
||||
"confirmations.missing_media_description.message": "Unu aŭ pli da plurmedioj mankas priskribo. Bonvolu priskribi ĉiujn plurmediojn por la vida-malkapabluloj antaŭ ol sendi vian afiŝon.",
|
||||
"direct.group_by_conversations": "Grupu de konversado",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Prezentitaj kontoj",
|
||||
"favourite_modal.favourite": "Ĉu vi volas stelumi ĉi tiun afiŝon?",
|
||||
"federation.federated.long": "Permesu ĉi tiun afiŝon atingi aliajn servilojn",
|
||||
"federation.federated.short": "Federatita",
|
||||
"federation.local_only.long": "Malpermesu ĉi tiun afiŝon atingi aliajn servilojn",
|
||||
"federation.local_only.short": "Nurloka",
|
||||
"firehose.column_settings.allow_local_only": "Montri nurlokaj afiŝoj en \"Ĉio\"",
|
||||
"home.column_settings.advanced": "Altnivela",
|
||||
"home.column_settings.filter_regex": "Filtri per regulaj esprimoj",
|
||||
"home.column_settings.show_direct": "Montri malpublikajn menciojn",
|
||||
"home.settings": "Agordoj de rubriko",
|
||||
"keyboard_shortcuts.bookmark": "legosignigi",
|
||||
"keyboard_shortcuts.secondary_toot": "sendi afiŝon per dua agordo de privateco",
|
||||
"keyboard_shortcuts.toggle_collapse": "malmontri/montri afiŝojn",
|
||||
"moved_to_warning": "Ĉi tiun konton sigelas, kiel movinta al {moved_to_link}, kaj pro ne permesos novajn sekvantojn.",
|
||||
"navigation_bar.app_settings": "Agordoj de aplikaĵo",
|
||||
"navigation_bar.featured_users": "Prezentitaj uzantoj",
|
||||
"navigation_bar.keyboard_shortcuts": "Fulmoklavoj",
|
||||
"navigation_bar.misc": "Aliaj",
|
||||
"notification.markForDeletion": "Sigeli por forigi",
|
||||
"notification_purge.btn_all": "Selekti ĉiujn",
|
||||
"notification_purge.btn_apply": "Forigi selektajn",
|
||||
"notification_purge.btn_invert": "Inverti selekton",
|
||||
"notification_purge.btn_none": "Elekti neniun",
|
||||
"notification_purge.start": "Eniri reĝimon de la purigo de sciigojn",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Montri mezuron de filtrilo",
|
||||
"notifications.marked_clear": "Forigi selektajn sciigojn",
|
||||
"notifications.marked_clear_confirmation": "Ĉu vi certas, ke vi volas forigi tutajn selektitajn sciigojn?",
|
||||
"settings.always_show_spoilers_field": "Ĉiam ŝaltiĝu la arealo de Enhava Averto",
|
||||
"settings.auto_collapse": "Aŭtomata kolapsado",
|
||||
"settings.auto_collapse_all": "Ĉiuj",
|
||||
"settings.auto_collapse_height": "Alteco (en rastrumeroj) por afiŝo konsideriĝi longa",
|
||||
"settings.auto_collapse_lengthy": "Longaj afiŝoj",
|
||||
"settings.auto_collapse_media": "Afiŝoj kun aŭdovidaĵoj",
|
||||
"settings.auto_collapse_notifications": "Sciigoj",
|
||||
"settings.auto_collapse_reblogs": "Diskonigoj",
|
||||
"settings.auto_collapse_replies": "Respondoj",
|
||||
"settings.close": "Fermi",
|
||||
"settings.collapsed_statuses": "Kolapsitaj afiŝoj",
|
||||
"settings.compose_box_opts": "Skatolo por verki",
|
||||
"settings.confirm_before_clearing_draft": "Montri dialogujon antaŭ superskribas la verkantan mesaĝon",
|
||||
"settings.confirm_boost_missing_media_description": "Montri dialogujon antaŭ stimulas afiŝojn sen prikskribaĵojn por enhavo",
|
||||
"settings.confirm_missing_media_description": "Montri dialogujon antaŭ sendas afiŝojn sen prikskribaĵojn por enhavo",
|
||||
"settings.content_warnings": "Enhavaj avertoj",
|
||||
"settings.content_warnings.regexp": "Regula esprimo",
|
||||
"settings.content_warnings_filter": "Enhavaj avertoj, kiujn ne aŭtomate malkaŝu:",
|
||||
"settings.content_warnings_media_outside": "Montri plurmediojn ekstere de enhavaj avertoj",
|
||||
"settings.content_warnings_media_outside_hint": "Fari same, kiel la originala programaro Mastodon, por ke la enhavaj avertoj ne influas plurmediojn",
|
||||
"settings.content_warnings_shared_state": "Montri/Malmontri enhavon de kopiaĵoj tuje",
|
||||
"settings.content_warnings_shared_state_hint": "Redonu normalan kondukton de Mastodon per havante la butonon por la Averto por la Enhavo rezultas tutajn kopiaĵojn tuje. Tion preventos aŭtomatan kolapsadon de kopiiaĵo de afiŝo ajn, kiu havus malkolapsan EA-on",
|
||||
"settings.content_warnings_unfold_opts": "Aŭtomat-malkolapsintaj agordoj",
|
||||
"settings.deprecated_setting": "Ĉi tiun agordon nun kontrolas de la {settings_page_link} de Mastodon",
|
||||
"settings.enable_collapsed": "Ŝaltigi kolaptsitajn afiŝojn",
|
||||
"settings.enable_collapsed_hint": "Kolapsitaj afiŝoj havas partojn de siaj enhavoj malkovritaj por uzi malpli da spacon de la ekrano. Ĉi tion estas malsama ol la Enhava Averto",
|
||||
"settings.enable_content_warnings_auto_unfold": "Aŭtomate malkovri avertojn por enhavo",
|
||||
"settings.general": "Ĝenerala",
|
||||
"settings.hicolor_privacy_icons": "Helaj piktogramoj de privateco",
|
||||
"settings.hicolor_privacy_icons.hint": "Montri piktogramojn de privateco en helaj kaj distingigeblaj koloroj",
|
||||
"settings.image_backgrounds": "Fonoj de bildoj",
|
||||
"settings.image_backgrounds_media": "Antaŭrigardi la kolapsitajn plurmediojn de afiŝoj",
|
||||
"settings.image_backgrounds_media_hint": "Se la afiŝo havas plurmediojn, uzi la unuan kiel fono",
|
||||
"settings.image_backgrounds_users": "Donu al kolapsitaj afiŝoj bildfonon",
|
||||
"settings.inline_preview_cards": "Enliniaj antaŭrigardoj por eksteraj ligiloj",
|
||||
"settings.layout_opts": "Opcioj por tekstaranĝo",
|
||||
"settings.media": "Plurenhavo",
|
||||
"settings.media_fullwidth": "Tutlarĝaj antaŭrigardoj por plurenhavoj",
|
||||
"settings.media_letterbox": "Skatoligi plurenhavojn",
|
||||
"settings.media_letterbox_hint": "Skali malsupren kaj kesti plurmediojn por plenigi la bildujojn anstataŭ streĉi kaj tondi ilin",
|
||||
"settings.media_reveal_behind_cw": "Montri sensativajn plurmediajn per AE defaŭlte",
|
||||
"settings.notifications.favicon_badge": "Favikono por nelegitaj sciigoj",
|
||||
"settings.notifications.favicon_badge.hint": "Doni insignon por nelegitaj sciigoj al la favikono",
|
||||
"settings.notifications.tab_badge": "Insigno por nelegitaj sciigoj",
|
||||
"settings.notifications.tab_badge.hint": "Montru insignon por nelegitaj sciigoj en la kolumno de piktogramoj, kiam la kolumno de sciigoj ne malfermas",
|
||||
"settings.notifications_opts": "Agordoj por sciigoj",
|
||||
"settings.pop_in_left": "Maldekstre",
|
||||
"settings.pop_in_player": "Permesu pop-ena filmspektilon",
|
||||
"settings.pop_in_position": "Posteno de la pop-ena filmspektilon:",
|
||||
"settings.pop_in_right": "Dekstre",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.prepend_cw_re": "Donu \"re:\" al avertoj de enhavo, kiam respondante",
|
||||
"settings.preselect_on_reply": "Antaŭselekti uzuantnomojn en la respondo",
|
||||
"settings.preselect_on_reply_hint": "Kiam respondas al konversacio, kiu havas multajn uzantojn, antaŭselekti uzantnomojn post la unua",
|
||||
"settings.rewrite_mentions": "Reskribu menciiojn en montritaj statusoj",
|
||||
"settings.rewrite_mentions_acct": "Reskribu kun uzantnomon kaj domajno (kiam la konto malproksimas)",
|
||||
"settings.rewrite_mentions_no": "Ne reskribu menciiojn",
|
||||
"settings.rewrite_mentions_username": "Reskribu kun uzantnomo",
|
||||
"settings.shared_settings_link": "preferoj de uzanto",
|
||||
"settings.show_action_bar": "Montri agajn butonojn en kolapsitaj afiŝoj",
|
||||
"settings.show_content_type_choice": "Montru elekton de enhava-tipo dum skribante afiŝojn",
|
||||
"settings.show_published_toast": "Montri sciigetojn dum eldonante/savante afiŝon",
|
||||
"settings.show_reply_counter": "Montri takson de la nombro da respondoj",
|
||||
"settings.side_arm": "Duaranga butono por afiŝi:",
|
||||
"settings.side_arm.none": "Neniu",
|
||||
"settings.status_icons": "Ikonoj sur la afiŝoj",
|
||||
|
||||
@@ -90,6 +90,8 @@
|
||||
"settings.enable_collapsed": "Habilitar toots colapsados",
|
||||
"settings.enable_collapsed_hint": "Las publicaciones colapsadas tienen partes de su contenido ocultas para ocupar menos espacio en pantalla. Esto es distinto de la función Advertencia de Contenido",
|
||||
"settings.enable_content_warnings_auto_unfold": "Descolapsar automáticamente advertencias de contenido",
|
||||
"settings.fullwidth_view": "Estirar columnas al ancho total (solo en Modo escritorio)",
|
||||
"settings.fullwidth_view_hint": "Estira las columnas para rellenar todo el espacio disponible.",
|
||||
"settings.general": "General",
|
||||
"settings.hicolor_privacy_icons": "Íconos de privacidad más visibles",
|
||||
"settings.hicolor_privacy_icons.hint": "Mostrar iconos de privacidad en colores brillantes y fácilmente distinguibles",
|
||||
@@ -154,7 +156,5 @@
|
||||
"status.is_poll": "Esta publicación es una encuesta",
|
||||
"status.local_only": "Sólo visible para tu instancia",
|
||||
"status.show_filter_reason": "Mostrar de todos modos",
|
||||
"status.show_less": "Mostrar menos",
|
||||
"status.show_more": "Mostrar más",
|
||||
"status.uncollapse": "Descolapsar"
|
||||
}
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
"compose.content-type.plain_meta": "Écrire sans formatage avancé",
|
||||
"compose.disable_threaded_mode": "Désactiver le mode thread",
|
||||
"compose.enable_threaded_mode": "Activer le mode thread",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Marquer le média comme sensible} other {Marquer les médias comme sensibles}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Le média n’est pas marqué comme sensible} other {Les médias ne sont pas marqué comme sensible}}",
|
||||
"confirmation_modal.do_not_ask_again": "Ne plus demander confirmation",
|
||||
"confirmations.deprecated_settings.confirm": "Utiliser les préférences de Mastodon",
|
||||
"confirmations.deprecated_settings.message": "Certaines {app_settings} de glitch-soc que vous utilisez ont été remplacées par les {preferences} de Mastodon et seront remplacées :",
|
||||
@@ -33,6 +36,7 @@
|
||||
"confirmations.missing_media_description.message": "Au moins un média joint manque d'une description. Pensez à décrire tous les médias attachés pour les malvoyant·e·s avant de publier votre post.",
|
||||
"direct.group_by_conversations": "Grouper par conversation",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Comptes mis en avant",
|
||||
"favourite_modal.favourite": "Ajouter le message aux favoris ?",
|
||||
"federation.federated.long": "Permettre à ce post d’atteindre d'autres serveurs",
|
||||
"federation.federated.short": "Fédéré",
|
||||
"federation.local_only.long": "Empêcher ce post d’atteindre d'autres serveurs",
|
||||
@@ -56,6 +60,7 @@
|
||||
"notification_purge.btn_invert": "Inverser\nla sélection",
|
||||
"notification_purge.btn_none": "Annuler\nla sélection",
|
||||
"notification_purge.start": "Activer le mode de nettoyage des notifications",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Afficher la barre de filtre",
|
||||
"notifications.marked_clear": "Effacer les notifications sélectionnées",
|
||||
"notifications.marked_clear_confirmation": "Voulez-vous vraiment effacer de manière permanente toutes les notifications sélectionnées ?",
|
||||
"settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu",
|
||||
@@ -85,6 +90,8 @@
|
||||
"settings.enable_collapsed": "Activer le repliement des posts",
|
||||
"settings.enable_collapsed_hint": "Les posts repliés ont une partie de leur contenu caché pour libérer de l'espace sur l'écran. C'est une option différente de l'avertissement de contenu",
|
||||
"settings.enable_content_warnings_auto_unfold": "Déplier automatiquement les avertissements de contenu",
|
||||
"settings.fullwidth_view": "Étirer les colonnes sur toute la largeur (mode bureau uniquement)",
|
||||
"settings.fullwidth_view_hint": "Étire les colonnes pour remplir tout l'espace disponible.",
|
||||
"settings.general": "Général",
|
||||
"settings.hicolor_privacy_icons": "Indicateurs de confidentialité en couleurs",
|
||||
"settings.hicolor_privacy_icons.hint": "Affiche les indicateurs de confidentialité dans des couleurs facilement distinguables",
|
||||
@@ -139,12 +146,15 @@
|
||||
"settings.wide_view": "Vue élargie (mode ordinateur uniquement)",
|
||||
"settings.wide_view_hint": "Étire les colonnes pour mieux remplir l'espace disponible.",
|
||||
"status.collapse": "Replier",
|
||||
"status.filtered": "Filtré",
|
||||
"status.has_audio": "Contient des fichiers audio attachés",
|
||||
"status.has_pictures": "Contient des images attachées",
|
||||
"status.has_preview_card": "Contient une carte de prévisualisation attachée",
|
||||
"status.has_video": "Contient des vidéos attachées",
|
||||
"status.hide": "Masquer la publication",
|
||||
"status.in_reply_to": "Ce post est une réponse",
|
||||
"status.is_poll": "Ce post est un sondage",
|
||||
"status.local_only": "Visible uniquement depuis votre instance",
|
||||
"status.show_filter_reason": "Afficher quand même",
|
||||
"status.uncollapse": "Déplier"
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"account.disclaimer_full": "Les informations ci-dessous peuvent être incomplètes.",
|
||||
"account.follows": "Abonnements",
|
||||
"account.follows_you": "Vous suit",
|
||||
"account.suspended_disclaimer_full": "Cet utilisateur a été suspendu par un modérateur.",
|
||||
"account.suspended_disclaimer_full": "Ce compte a été suspendu par un modérateur.",
|
||||
"account.view_full_profile": "Voir le profil complet",
|
||||
"boost_modal.missing_description": "Ce post contient des médias sans description",
|
||||
"column.favourited_by": "Ajouté en favori par",
|
||||
@@ -21,10 +21,13 @@
|
||||
"compose.content-type.html_meta": "Formatez vos messages en HTML",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Formatez vos messages en Markdown",
|
||||
"compose.content-type.plain": "Text brut",
|
||||
"compose.content-type.plain": "Texte brut",
|
||||
"compose.content-type.plain_meta": "Écrire sans formatage avancé",
|
||||
"compose.disable_threaded_mode": "Désactiver le mode thread",
|
||||
"compose.enable_threaded_mode": "Activer le mode thread",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Marquer le média comme sensible} other {Marquer les médias comme sensibles}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Le média n’est pas marqué comme sensible} other {Les médias ne sont pas marqué comme sensible}}",
|
||||
"confirmation_modal.do_not_ask_again": "Ne plus demander confirmation",
|
||||
"confirmations.deprecated_settings.confirm": "Utiliser les préférences de Mastodon",
|
||||
"confirmations.deprecated_settings.message": "Certaines {app_settings} de glitch-soc que vous utilisez ont été remplacées par les {preferences} de Mastodon et seront remplacées :",
|
||||
@@ -33,6 +36,7 @@
|
||||
"confirmations.missing_media_description.message": "Au moins un média joint manque d'une description. Pensez à décrire tous les médias attachés pour les malvoyant·e·s avant de publier votre post.",
|
||||
"direct.group_by_conversations": "Grouper par conversation",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Comptes mis en avant",
|
||||
"favourite_modal.favourite": "Ajouter le message aux favoris ?",
|
||||
"federation.federated.long": "Permettre à ce post d’atteindre d'autres serveurs",
|
||||
"federation.federated.short": "Fédéré",
|
||||
"federation.local_only.long": "Empêcher ce post d’atteindre d'autres serveurs",
|
||||
@@ -56,6 +60,7 @@
|
||||
"notification_purge.btn_invert": "Inverser\nla sélection",
|
||||
"notification_purge.btn_none": "Annuler\nla sélection",
|
||||
"notification_purge.start": "Activer le mode de nettoyage des notifications",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Afficher la barre de filtre",
|
||||
"notifications.marked_clear": "Effacer les notifications sélectionnées",
|
||||
"notifications.marked_clear_confirmation": "Voulez-vous vraiment effacer de manière permanente toutes les notifications sélectionnées ?",
|
||||
"settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu",
|
||||
@@ -85,6 +90,8 @@
|
||||
"settings.enable_collapsed": "Activer le repliement des posts",
|
||||
"settings.enable_collapsed_hint": "Les posts repliés ont une partie de leur contenu caché pour libérer de l'espace sur l'écran. C'est une option différente de l'avertissement de contenu",
|
||||
"settings.enable_content_warnings_auto_unfold": "Déplier automatiquement les avertissements de contenu",
|
||||
"settings.fullwidth_view": "Étirer les colonnes sur toute la largeur (mode bureau uniquement)",
|
||||
"settings.fullwidth_view_hint": "Étire les colonnes pour remplir tout l'espace disponible.",
|
||||
"settings.general": "Général",
|
||||
"settings.hicolor_privacy_icons": "Indicateurs de confidentialité en couleurs",
|
||||
"settings.hicolor_privacy_icons.hint": "Affiche les indicateurs de confidentialité dans des couleurs facilement distinguables",
|
||||
@@ -108,7 +115,7 @@
|
||||
"settings.pop_in_player": "Activer le lecteur pop-in",
|
||||
"settings.pop_in_position": "Position du lecteur pop-in :",
|
||||
"settings.pop_in_right": "Droite",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.preferences": "Préferences",
|
||||
"settings.prepend_cw_re": "Préfixer les avertissements avec \"re: \" lors d'une réponse",
|
||||
"settings.preselect_on_reply": "Présélectionner les noms d’utilisateur·rices lors de la réponse",
|
||||
"settings.preselect_on_reply_hint": "Présélectionner les noms d'utilisateurs après le premier lors d'une réponse à une conversation à plusieurs participants",
|
||||
@@ -139,12 +146,15 @@
|
||||
"settings.wide_view": "Vue élargie (mode ordinateur uniquement)",
|
||||
"settings.wide_view_hint": "Étire les colonnes pour mieux remplir l'espace disponible.",
|
||||
"status.collapse": "Replier",
|
||||
"status.filtered": "Filtré",
|
||||
"status.has_audio": "Contient des fichiers audio attachés",
|
||||
"status.has_pictures": "Contient des images attachées",
|
||||
"status.has_preview_card": "Contient une carte de prévisualisation attachée",
|
||||
"status.has_video": "Contient des vidéos attachées",
|
||||
"status.hide": "Masquer la publication",
|
||||
"status.in_reply_to": "Ce post est une réponse",
|
||||
"status.is_poll": "Ce post est un sondage",
|
||||
"status.local_only": "Visible uniquement depuis votre instance",
|
||||
"status.show_filter_reason": "Afficher quand même",
|
||||
"status.uncollapse": "Déplier"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,107 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc é software libre de código aberto derivado de Mastodon.",
|
||||
"account.disclaimer_full": "A información inferior sobre a usuaria podería estar incompleta.",
|
||||
"account.follows": "Segue",
|
||||
"account.follows_you": "Séguete",
|
||||
"account.suspended_disclaimer_full": "Usuaria suspendida pola moderación.",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"boost_modal.missing_description": "Esta publicación contén multimedia sen descrición",
|
||||
"column.favourited_by": "Favorecida por",
|
||||
"column.heading": "Varios",
|
||||
"column.reblogged_by": "Promovida por",
|
||||
"column.subheading": "Opcións diversas",
|
||||
"column_header.profile": "Perfil",
|
||||
"column_subheading.lists": "Listas",
|
||||
"column_subheading.navigation": "Navegación",
|
||||
"community.column_settings.allow_local_only": "Ver só mensaxes de ámbito local",
|
||||
"compose.attach.doodle": "Debuxa algo",
|
||||
"compose.change_federation": "Cambiar axustes de federación",
|
||||
"compose.content-type.change": "Cambiar opcións avanzadas de formato",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Usar formato HTML nas publicacións",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Usar formato Markdown nas publicacións",
|
||||
"compose.content-type.plain": "Texto plano",
|
||||
"compose.content-type.plain_meta": "Escribir sen dar formato ao texto",
|
||||
"compose.disable_threaded_mode": "Desactivar modo fiado",
|
||||
"compose.enable_threaded_mode": "Activar modo fiado",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Marcar multimedia como sensible} other {Marcar multimedia como sensible}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Multimedia marcado como sensible} other {Multimedia marcado como sensible}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Multimedia non marcado como sensible} other {Multimedia non marcado como sensible}}",
|
||||
"confirmation_modal.do_not_ask_again": "Non volver a pedir confirmación",
|
||||
"confirmations.deprecated_settings.confirm": "Usar preferencias de Mastodon",
|
||||
"confirmations.deprecated_settings.message": "Algunha das preferencias propias do dispositivo {app_settings} que estás a usar foron substituídas por {preferences} de Mastodon e serán substituídas:",
|
||||
"confirmations.missing_media_description.confirm": "Enviar igualmente",
|
||||
"confirmations.missing_media_description.edit": "Editar multimedia",
|
||||
"confirmations.missing_media_description.message": "Polo menos hai un multimedia ao que lle falta a descrición. Considera describir todos os anexos multimedia para axudar a persoas con deficiencias visuas.",
|
||||
"direct.group_by_conversations": "Agrupar por conversa",
|
||||
"favourite_modal.favourite": "Marcar como favorita?",
|
||||
"federation.federated.long": "Permitir que esta publicación acade outros servidores",
|
||||
"federation.federated.short": "Federada",
|
||||
"federation.local_only.long": "Evitar que esta publicación acade outros servidores",
|
||||
"federation.local_only.short": "Só local",
|
||||
"firehose.column_settings.allow_local_only": "Mostrar só publicacións locais en «Todo»",
|
||||
"home.column_settings.advanced": "Avanzado",
|
||||
"home.column_settings.filter_regex": "Filtrar usando expresións regulares",
|
||||
"home.column_settings.show_direct": "Mostrar mencións privadas",
|
||||
"home.settings": "Axustes das columnas",
|
||||
"keyboard_shortcuts.bookmark": "para marcar",
|
||||
"keyboard_shortcuts.secondary_toot": "para enviar publicación usando axuste secundario de privacidade",
|
||||
"moved_to_warning": "Esta conta moveuse a {moved_to_link}, e non acepta novos seguimentos.",
|
||||
"navigation_bar.app_settings": "Axustes da app",
|
||||
"navigation_bar.keyboard_shortcuts": "Atallos de teclado",
|
||||
"navigation_bar.misc": "Varios",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Amosar barra de filtros",
|
||||
"settings.always_show_spoilers_field": "Activar sempre o campo de Aviso sobre o contido CW",
|
||||
"settings.close": "Pechar",
|
||||
"settings.compose_box_opts": "Caixa de escritura",
|
||||
"settings.confirm_before_clearing_draft": "Mostra cadro de confirmación antes de sobrescribir a mensaxe que se está a compoñer",
|
||||
"settings.confirm_boost_missing_media_description": "Mostra cadro de confirmación antes de promover mensaxes que non describen o multimedia",
|
||||
"settings.confirm_missing_media_description": "Mostra cadro de confirmación antes de enviar mensaxes sen descrición do multimedia",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"settings.content_warnings.regexp": "Expresión regular",
|
||||
"settings.content_warnings_filter": "Non despregar automáticamente os CW que:",
|
||||
"settings.content_warnings_shared_state": "Mostra/oculta contido de todas as copias á vez",
|
||||
"settings.content_warnings_shared_state_hint": "Imita o comportamento do propio Mastodon facendo que o botón de CW afecte a todas a copias dunha publicación á vez. Isto evita pregar automáticamente calquera copia dunha publicación con CW despregrado",
|
||||
"settings.content_warnings_unfold_opts": "Opcións despregamento automático",
|
||||
"settings.deprecated_setting": "O axuste está xestionado directamente desde os {settings_page_link} de Mastodon",
|
||||
"settings.enable_content_warnings_auto_unfold": "Despregar automáticamente os avisos de contido",
|
||||
"settings.general": "Xeral",
|
||||
"settings.hicolor_privacy_icons": "Cores destacadas na icona de privacidade",
|
||||
"settings.hicolor_privacy_icons.hint": "Mostra con cores brillantes e visibles as iconas co nivel de privacidade",
|
||||
"settings.inline_preview_cards": "Vista previa local en tarxeta para ligazóns externas",
|
||||
"settings.layout_opts": "Opcións da disposición",
|
||||
"settings.media": "Multimedia",
|
||||
"settings.media_fullwidth": "Vistra previa co ancho completo",
|
||||
"settings.media_letterbox": "Multimedia nun rectángulo",
|
||||
"settings.media_letterbox_hint": "Reducir a escala a un rectángulo que conteña a imaxe no lugar de estirala e recortala",
|
||||
"settings.media_reveal_behind_cw": "Mostrar contido sensible con CW de xeito predeterminado",
|
||||
"settings.notifications.favicon_badge": "Marca no favicon para notificacións non lidas",
|
||||
"settings.notifications.favicon_badge.hint": "Mostra unha insignia no favicon cando hai notificacións non lidas",
|
||||
"settings.notifications.tab_badge": "Insignia para notificacións non lidas",
|
||||
"settings.notifications.tab_badge.hint": "Mostra unha insignia para as notificacións non lidas na columna de iconas cando a columna non está aberta",
|
||||
"settings.notifications_opts": "Opcións das notificacións",
|
||||
"settings.pop_in_left": "Esquerda",
|
||||
"settings.pop_in_right": "Dereita",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.prepend_cw_re": "Engadir \"re:\" aos avisos sobre o contido nas respostas",
|
||||
"settings.preselect_on_reply": "Preseleccionar identificadores ao responder",
|
||||
"settings.preselect_on_reply_hint": "Preseleccionar os identificadores ao responder nunha conversa con varias persoas participantes",
|
||||
"settings.rewrite_mentions": "Rescribe as mencións nos estados mostrados",
|
||||
"settings.rewrite_mentions_acct": "Rescribir con identificador e dominio (para contas remotas)",
|
||||
"settings.rewrite_mentions_no": "Non rescribir mencións",
|
||||
"settings.rewrite_mentions_username": "Rescribir con identificador",
|
||||
"settings.shared_settings_link": "preferencias da usuaria",
|
||||
"settings.side_arm": "Botón secundario de publicación:",
|
||||
"settings.side_arm.none": "Ningún",
|
||||
"settings.side_arm_reply_mode": "Ao responder, o botón secundario de publicación debería:",
|
||||
"settings.side_arm_reply_mode.copy": "Copiar a privacidade da publicación á que se responde",
|
||||
"settings.side_arm_reply_mode.keep": "Manter a privacidade establecida",
|
||||
"settings.side_arm_reply_mode.restrict": "Limita o nivel de privacidade a aquel que teña a publicación á que se responde",
|
||||
"settings.status_icons": "Iconas das publicacións",
|
||||
"settings.status_icons_language": "Indicador de idioma",
|
||||
"settings.status_icons_local_only": "Indicador de só-local",
|
||||
"settings.status_icons_media": "Indicadores multimedia e enquisas",
|
||||
"settings.status_icons_reply": "Indicador de resposta",
|
||||
"settings.status_icons_visibility": "Indicador de nivel de privacidade"
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
"settings.content_warnings_media_outside": "Tampilkan lampiran media di luar peringatan konten",
|
||||
"settings.content_warnings_media_outside_hint": "Reproduksi perilaku Mastodon upstream dengan membuat tombol Peringatan Konten tidak memengaruhi lampiran media",
|
||||
"settings.content_warnings_shared_state": "Tampilkan/sembunyikan konten semua salinan sekaligus",
|
||||
"settings.pop_in_right": "Kanan",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.status_icons_reply": "Indikator balasan",
|
||||
"settings.status_icons_visibility": "Indikator privasi toot",
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
"settings.close": "닫기",
|
||||
"settings.collapsed_statuses": "접힌 글",
|
||||
"settings.compose_box_opts": "작성 상자",
|
||||
"settings.confirm_before_clearing_draft": "작성 중인 메시지를 덮어씌우기 전에 확인창을 보여주기",
|
||||
"settings.confirm_boost_missing_media_description": "미디어 설명이 없는 글을 부스트하려 할 때 확인창을 보여주기",
|
||||
"settings.confirm_missing_media_description": "미디어 설명이 없는 글을 작성하려 할 때 확인창을 보여주기",
|
||||
"settings.confirm_before_clearing_draft": "작성 중인 메시지를 덮어씌우기 전에 확인창을 띄웁니다",
|
||||
"settings.confirm_boost_missing_media_description": "미디어 설명이 없는 글을 부스트하려 할 때 확인창을 띄웁니다",
|
||||
"settings.confirm_missing_media_description": "미디어 설명이 없는 글을 작성하려 할 때 확인창을 띄웁니다",
|
||||
"settings.content_warnings": "열람주의",
|
||||
"settings.content_warnings.regexp": "정규표현식",
|
||||
"settings.content_warnings_filter": "자동으로 펼치지 않을 열람주의 문구:",
|
||||
@@ -154,7 +154,5 @@
|
||||
"status.is_poll": "이 글은 설문입니다",
|
||||
"status.local_only": "당신의 서버에서만 보입니다",
|
||||
"status.show_filter_reason": "그냥 표시하기",
|
||||
"status.show_less": "접기",
|
||||
"status.show_more": "더보기",
|
||||
"status.uncollapse": "펼치기"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,160 @@
|
||||
{
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"about.fork_disclaimer": "„Glitch-soc“ – tai nemokama atvirojo kodo programinė įranga, atšakota iš „Mastodon“.",
|
||||
"account.disclaimer_full": "Žemiau pateikta informacija gali nevisiškai atitikti naudotojo profilį.",
|
||||
"account.follows": "Sekimai",
|
||||
"account.follows_you": "Seka jus",
|
||||
"account.suspended_disclaimer_full": "Šį naudotoją pristabdė prižiūrėtojas.",
|
||||
"account.view_full_profile": "Peržiūrėti visą profilį",
|
||||
"boost_modal.missing_description": "Šis įrašas turi šiek tiek medijų be aprašų.",
|
||||
"column.favourited_by": "Pamėgo",
|
||||
"column.heading": "Įvairūs",
|
||||
"column.reblogged_by": "Pasidalino",
|
||||
"column.subheading": "Įvairios parinktys",
|
||||
"column_header.profile": "Profilis",
|
||||
"column_subheading.lists": "Sąrašai",
|
||||
"column_subheading.navigation": "Naršymas",
|
||||
"community.column_settings.allow_local_only": "Rodyti tik vietinius įrašus",
|
||||
"compose.attach.doodle": "Nupiešti kažką",
|
||||
"compose.change_federation": "Keisti federacijos nustatymus",
|
||||
"compose.content-type.change": "Keisti papildomas formatavimo parinktis",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Formatuokite įrašus naudojant HTML",
|
||||
"compose.content-type.markdown": "Ženklinimas",
|
||||
"compose.content-type.markdown_meta": "Formatuokite įrašus naudojant ženklinimą",
|
||||
"compose.content-type.plain": "Grynasis tekstas",
|
||||
"compose.content-type.plain_meta": "Rašykite be papildomo formatavimo",
|
||||
"compose.disable_threaded_mode": "Išjungti gijimo režimą",
|
||||
"compose.enable_threaded_mode": "Įjungti gijimo režimą",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijos kaip jautrios} other {Žymėti medijų kaip jautrių}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijos pažymėta kaip jautrios} other {Medijų pažymėtų kaip jautrių}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijos nepažymėta kaip jautrios} other {Medijų nepažymėtų kaip jautrių}}",
|
||||
"confirmation_modal.do_not_ask_again": "Neklausti patvirtinimo vėl",
|
||||
"confirmations.deprecated_settings.confirm": "Naudoti „Mastodon“ nuostatas",
|
||||
"confirmations.deprecated_settings.message": "Kai kurios „glitch-soc“ įrenginiui būdingos {app_settings}, kurias naudojate, pakeistos į „Mastodon“ {preferences} ir bus perrašytos:",
|
||||
"confirmations.missing_media_description.confirm": "Vis tiek siųsti",
|
||||
"confirmations.missing_media_description.edit": "Redaguoti mediją",
|
||||
"confirmations.missing_media_description.message": "Bent vienam medijos priedui trūksta aprašo. Prieš siųsdami savo įrašą apsvarstykite galimybę aprašyti visus medijų priedus silpnaregiams.",
|
||||
"direct.group_by_conversations": "Grupuoti pagal pokalbį",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Rekomenduojamos paskyros",
|
||||
"favourite_modal.favourite": "Pamėgti įrašą?",
|
||||
"federation.federated.long": "Leiskite šiam įrašui pasiekti kitus serverius",
|
||||
"federation.federated.short": "Federuotas",
|
||||
"federation.local_only.long": "Neleiskite šiam įrašui pasiekti kitus serverius",
|
||||
"federation.local_only.short": "Tik vietinis",
|
||||
"firehose.column_settings.allow_local_only": "Rodyti tik vietinius įrašus skiltyje „Visi“",
|
||||
"home.column_settings.advanced": "Išplėstiniai",
|
||||
"home.column_settings.filter_regex": "Filtruokite pagal paieškos reiškiniais",
|
||||
"home.column_settings.show_direct": "Rodyti privačius paminėjimus",
|
||||
"home.settings": "Stulpelio nustatymai",
|
||||
"keyboard_shortcuts.bookmark": "pridėti prie žymių",
|
||||
"keyboard_shortcuts.secondary_toot": "siųsti įrašą naudojant antrinį privatumo nustatymą",
|
||||
"keyboard_shortcuts.toggle_collapse": "suskleisti / išskleisti įrašus",
|
||||
"moved_to_warning": "Ši paskyra pažymėta kaip perkelta į {moved_to_link}, todėl negali priimti naujų sekimų.",
|
||||
"navigation_bar.app_settings": "Programėlės nustatymai",
|
||||
"navigation_bar.featured_users": "Rekomenduojami naudotojai",
|
||||
"navigation_bar.keyboard_shortcuts": "Spartieji klavišai",
|
||||
"navigation_bar.misc": "Įvairūs",
|
||||
"notification.markForDeletion": "Žymėti ištrynimui",
|
||||
"notification_purge.btn_all": "Pasirinkti\nviską",
|
||||
"notification_purge.btn_apply": "Valyti\npasirinktus",
|
||||
"notification_purge.btn_invert": "Apversti\npasirinkimą",
|
||||
"notification_purge.btn_none": "Pasirinkti\nnieko",
|
||||
"notification_purge.start": "Įeiti į pranešimų valymo režimą",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Rodyti filtro juostą",
|
||||
"notifications.marked_clear": "Valyti pasirinktus pranešimus",
|
||||
"notifications.marked_clear_confirmation": "Ar tikrai norite negrįžtamai išvalyti visus pasirinktus pranešimus?",
|
||||
"settings.always_show_spoilers_field": "Visada įjungti turinio įspėjimo lauką",
|
||||
"settings.auto_collapse": "Automatinis suskleidimas",
|
||||
"settings.auto_collapse_all": "Viskas",
|
||||
"settings.auto_collapse_height": "Aukštis (taškais), kad įrašas būtų laikomas ilgu",
|
||||
"settings.auto_collapse_lengthy": "Ilgi įrašai",
|
||||
"settings.auto_collapse_media": "Įrašai su medija",
|
||||
"settings.auto_collapse_notifications": "Pranešimai",
|
||||
"settings.auto_collapse_reblogs": "Pasidalinimai",
|
||||
"settings.auto_collapse_replies": "Atsakymai",
|
||||
"settings.close": "Užverti",
|
||||
"settings.collapsed_statuses": "Suskleisti įrašai",
|
||||
"settings.compose_box_opts": "Sukūrimo langelis",
|
||||
"settings.confirm_before_clearing_draft": "Rodyti patvirtinimo dialogo langą prieš perrašant kuriamą įrašą",
|
||||
"settings.confirm_boost_missing_media_description": "Rodyti patvirtinimo dialogo langą prieš pasidalinant įrašus, kuriems trūksta medijos aprašų",
|
||||
"settings.confirm_missing_media_description": "Rodyti patvirtinimo dialogo langą prieš siunčiant įrašus, kuriems trūksta medijos aprašų",
|
||||
"settings.content_warnings": "Turinio įspėjimai",
|
||||
"settings.content_warnings.regexp": "Reguliarusis reiškinys",
|
||||
"settings.content_warnings_filter": "Turinio įspėjimai automatiškai neišskleidžiami:",
|
||||
"settings.content_warnings_media_outside": "Rodyti medijos priedus už turinio įspėjimų ribų",
|
||||
"settings.content_warnings_media_outside_hint": "Atkurkite „Mastodon“ išsiuntimo srauto elgseną, nustačius, kad turinio įspėjimo perjungiklis nepaveiktų medijos priedų.",
|
||||
"settings.content_warnings_shared_state": "Rodyti / slėpti visų kopijų turinį vienu metu",
|
||||
"settings.content_warnings_shared_state_hint": "Atkurkite „Mastodon“ elgseną, nustatčius, kad turinio įspėjimo mygtukas vienu metu paveiktų visas įrašo kopijas. Tai neleis automatiškai suskleisti bet kurios įrašo kopijos su išskleistu TĮ.",
|
||||
"settings.content_warnings_unfold_opts": "Automatinio atskleidžiamojo parinktys",
|
||||
"settings.deprecated_setting": "Šis nustatymas dabar valdomas iš „Mastodon“ {settings_page_link}.",
|
||||
"settings.enable_collapsed": "Įjungti suskleistus įrašus",
|
||||
"settings.enable_collapsed_hint": "Suskleisti įrašai turi kai kurias turinio dalis paslėptas, kad užimtų mažiau vietos ekrane. Tai skiriasi nuo turinio įspėjimo funkcijos.",
|
||||
"settings.enable_content_warnings_auto_unfold": "Automatiškai atskleisti turinio įspėjimus",
|
||||
"settings.fullwidth_view": "Ištempti stulpelius į visą plotį (tik darbalaukio režime)",
|
||||
"settings.fullwidth_view_hint": "Ištempia stulpelius, kad užpildytų visą laisvą vietą.",
|
||||
"settings.general": "Bendrieji",
|
||||
"settings.hicolor_privacy_icons": "Didelės spalvos privatumo piktogramos",
|
||||
"settings.hicolor_privacy_icons.hint": "Rodyti privatumo piktogramas ryškiomis ir lengvai atskiriamomis spalvomis.",
|
||||
"settings.image_backgrounds": "Vaizdo fonai",
|
||||
"settings.image_backgrounds_media": "Peržiūrėti suskleistą įrašo mediją",
|
||||
"settings.image_backgrounds_media_hint": "Jei įrašas turi kokių nors medijos priedų, kaip foną naudoti pirmąjį.",
|
||||
"settings.image_backgrounds_users": "Suteikti suskleistiems įrašams vaizdo foną",
|
||||
"settings.inline_preview_cards": "Įterptinės peržiūros kortelės išorinėms nuorodoms",
|
||||
"settings.layout_opts": "Išdėstymo parinktys",
|
||||
"settings.media": "Medija",
|
||||
"settings.media_fullwidth": "Viso pločio medijos peržiūros",
|
||||
"settings.media_letterbox": "Raidžių langelio medija",
|
||||
"settings.media_letterbox_hint": "Mažinti mastelį ir raidžių langelio mediją, kad ji užpildytų vaizdo podėlius, vietoj to juos ištempti ir apkarpyti.",
|
||||
"settings.media_reveal_behind_cw": "Atskleisti jautrią mediją po TĮ pagal numatytąjį",
|
||||
"settings.notifications.favicon_badge": "Neskaitytų pranešimų svetainės piktogramos ženklelis",
|
||||
"settings.notifications.favicon_badge.hint": "Pridėti neskaitytų pranešimų ženklelį prie svetainės piktogramos",
|
||||
"settings.notifications.tab_badge": "Neskaitytų pranešimų ženklelis",
|
||||
"settings.notifications.tab_badge.hint": "Rodyti neskaitytų pranešimų ženklelį stulpelio piktogramose, kai pranešimų stulpelis nėra atvertas.",
|
||||
"settings.notifications_opts": "Pranešimų parinktys",
|
||||
"settings.pop_in_left": "kairėje",
|
||||
"settings.pop_in_player": "Įjungti iškylančiąją leistuvę",
|
||||
"settings.pop_in_position": "Iškylančio leistuvės vieta:",
|
||||
"settings.pop_in_right": "dešinėje",
|
||||
"settings.preferences": "Naudotojo nuostatos",
|
||||
"settings.prepend_cw_re": "Pridėti „re:“ prie turinio įspėjimų, kai atsakoma",
|
||||
"settings.preselect_on_reply": "Iš anksto parinkti naudotojų vardus atsakant",
|
||||
"settings.preselect_on_reply_hint": "Atsakant į pokalbį su daugeliu dalyvių, iš anksto pasirinkti naudotojų vardus po pirmojo.",
|
||||
"settings.rewrite_mentions": "Perrašyti paminėjimus rodomose būsenose",
|
||||
"settings.rewrite_mentions_acct": "Perrašyti su naudotojo vardu ir domenu (kai paskyra nuotolinė)",
|
||||
"settings.rewrite_mentions_no": "Neperrašyti paminėjimų",
|
||||
"settings.rewrite_mentions_username": "Perrašyti su naudotojo vardu",
|
||||
"settings.shared_settings_link": "naudotojo nuostatos",
|
||||
"settings.show_action_bar": "Rodyti veiksmo mygtukus suskleistuose įrašuose",
|
||||
"settings.show_content_type_choice": "Rodyti turinio tipo pasirinkimą, kai kuriami įrašai",
|
||||
"settings.show_published_toast": "Rodyti tostą, kai skelbiant / išsaugant įrašą",
|
||||
"settings.show_reply_counter": "Rodyti apytikslį atsakymų skaičių",
|
||||
"settings.side_arm": "Antrinio įrašo mygtukas:",
|
||||
"settings.side_arm.none": "Jokio",
|
||||
"settings.side_arm_reply_mode": "Atsakant į įrašą, antrinis įrašo mygtukas turėtų:",
|
||||
"settings.side_arm_reply_mode.copy": "Nukopijuoti įrašo privatumo nustatymą, į kurį atsakoma",
|
||||
"settings.side_arm_reply_mode.keep": "Išlaikyti nustatytą privatumą",
|
||||
"settings.side_arm_reply_mode.restrict": "Apriboti privatumo nustatymą iki to įrašo, į kurį atsakoma",
|
||||
"settings.status_icons": "Įrašo piktogramos",
|
||||
"settings.status_icons_language": "Kalbos indikatorius",
|
||||
"settings.status_icons_local_only": "Tik vietinis indikatorius",
|
||||
"settings.status_icons_media": "Medijos ir apklausos indikatoriai",
|
||||
"settings.status_icons_reply": "Atsakymo indikatorius",
|
||||
"settings.status_icons_visibility": "Įrašo privatumo indikatorius",
|
||||
"settings.swipe_to_change_columns": "Leisti keisti stulpelius perbraukiant (tik mobiliesiems)",
|
||||
"settings.tag_misleading_links": "Žymėti klaidinančias nuorodas",
|
||||
"settings.tag_misleading_links.hint": "Pridėkite vizualinį indikatorių su nuorodos paskirties serveriu prie kiekvienos nuorodos, kurioje ji nėra aiškiai paminėta.",
|
||||
"settings.wide_view": "Platusis vaizdas (tik darbalaukio režimu)",
|
||||
"settings.wide_view_hint": "Ištempia stulpelius, kad geriau užimtų laisvą vietą.",
|
||||
"status.collapse": "Suskleisti",
|
||||
"status.filtered": "Filtruota",
|
||||
"status.has_audio": "Turi pridėtų garso įrašų failų",
|
||||
"status.has_pictures": "Turi pridėtų nuotraukų",
|
||||
"status.has_preview_card": "Turi pridėtą peržiūros kortelę",
|
||||
"status.has_video": "Turi pridėtų vaizdo įrašų",
|
||||
"status.hide": "Slėpti įrašą",
|
||||
"status.in_reply_to": "Šis įrašas yra atsakymas",
|
||||
"status.is_poll": "Šis įrašas yra apklausa",
|
||||
"status.local_only": "Matomas tik iš jūsų serverio",
|
||||
"status.show_filter_reason": "Rodyti vis tiek",
|
||||
"status.uncollapse": "Išskleisti"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,113 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc - это бесплатное программное обеспечение с открытым исходным кодом, обращенное от Mastodon.",
|
||||
"about.fork_disclaimer": "Glitch-soc — это свободное программное обеспечение с открытым исходным кодом, ответвлённое от Mastodon.",
|
||||
"account.disclaimer_full": "Приведённые ниже сведения могут не полностью соответствовать профилю пользователя.",
|
||||
"account.follows": "Подписки",
|
||||
"account.follows_you": "Подписан(а) на вас",
|
||||
"account.suspended_disclaimer_full": "Этот пользователь был заблокирован модератором.",
|
||||
"account.view_full_profile": "Открыть полный профиль",
|
||||
"boost_modal.missing_description": "Этот пост содержит медиафайлы без описания",
|
||||
"column.favourited_by": "Добавили в избранное",
|
||||
"column.heading": "Прочее",
|
||||
"column.reblogged_by": "Продвинули",
|
||||
"column.subheading": "Прочие разделы",
|
||||
"column_header.profile": "Профиль",
|
||||
"column_subheading.lists": "Списки",
|
||||
"column_subheading.navigation": "Навигация",
|
||||
"community.column_settings.allow_local_only": "Показывать нефедерируемые посты",
|
||||
"compose.attach.doodle": "Нарисовать что-нибудь",
|
||||
"compose.change_federation": "Изменить настройки федерации",
|
||||
"compose.content-type.change": "Изменить настройки форматирования",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Использовать HTML для написания постов",
|
||||
"compose.content-type.markdown": "Markdown",
|
||||
"compose.content-type.markdown_meta": "Использовать Markdown для написания постов",
|
||||
"compose.content-type.plain": "Простой текст",
|
||||
"compose.content-type.plain_meta": "Не использовать продвинутое форматирование",
|
||||
"compose.disable_threaded_mode": "Отключить режим треда",
|
||||
"compose.enable_threaded_mode": "Включить режим треда",
|
||||
"confirmation_modal.do_not_ask_again": "Больше не спрашивать подтверждение",
|
||||
"confirmations.deprecated_settings.confirm": "Использовать настройки Mastodon",
|
||||
"confirmations.missing_media_description.confirm": "Всё равно опубликовать",
|
||||
"direct.group_by_conversations": "Группировать по перепискам",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Рекомендованные аккаунты",
|
||||
"favourite_modal.favourite": "Добавить пост в избранное?",
|
||||
"federation.federated.long": "Разрешить делиться этим постом с другими серверами",
|
||||
"federation.federated.short": "Федерация",
|
||||
"federation.local_only.long": "Запретить делиться этим постом с другими серверами",
|
||||
"federation.local_only.short": "Без федерации",
|
||||
"firehose.column_settings.allow_local_only": "Показывать нефедерируемые посты по вкладке «Все»",
|
||||
"home.column_settings.advanced": "Продвинутые настройки",
|
||||
"home.column_settings.filter_regex": "Фильтр по регулярным выражениям",
|
||||
"home.column_settings.show_direct": "Показывать личные упоминания",
|
||||
"keyboard_shortcuts.bookmark": "добавить закладку",
|
||||
"keyboard_shortcuts.toggle_collapse": "свернуть/развернуть пост",
|
||||
"moved_to_warning": "Этот аккаунт переехал на {moved_to_link}, и скорее всего не принимает новых подписчиков.",
|
||||
"navigation_bar.app_settings": "Настройки приложения",
|
||||
"navigation_bar.keyboard_shortcuts": "Сочетания клавиш",
|
||||
"navigation_bar.misc": "Прочее",
|
||||
"notification.markForDeletion": "Отметить для удаления",
|
||||
"notification_purge.btn_all": "Выбрать все",
|
||||
"notification_purge.btn_apply": "Удалить выбранное",
|
||||
"notification_purge.btn_invert": "Инвертировать выбор",
|
||||
"notification_purge.btn_none": "Отменить выбор",
|
||||
"notification_purge.start": "Войти в режим очистки уведомлений",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Показать панель фильтров",
|
||||
"notifications.marked_clear": "Удалить выбранные уведомления",
|
||||
"notifications.marked_clear_confirmation": "Вы уверены, что хотите безвозвратно удалить все выбранные уведомления?",
|
||||
"settings.always_show_spoilers_field": "Всегда ставить предупреждение о содержании",
|
||||
"settings.auto_collapse": "Сворачивать автоматически",
|
||||
"settings.auto_collapse_all": "Всё",
|
||||
"settings.auto_collapse_height": "Высота (в пикселях) для того, чтобы пост считался длинным",
|
||||
"settings.auto_collapse_lengthy": "Длинные посты",
|
||||
"settings.auto_collapse_media": "Посты с медиафайлами",
|
||||
"settings.auto_collapse_notifications": "Уведомления",
|
||||
"settings.auto_collapse_reblogs": "Продвижения",
|
||||
"settings.auto_collapse_replies": "Ответы",
|
||||
"settings.close": "Закрыть",
|
||||
"settings.collapsed_statuses": "Сворачивание постов",
|
||||
"settings.compose_box_opts": "Форма постинга",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"settings.content_warnings.regexp": "Регулярное выражение",
|
||||
"settings.content_warnings_filter": "Предупреждения о содержании, к которым автоматическое разворачивание не применяется:",
|
||||
"settings.content_warnings_media_outside": "Показывать медиафайлы внизу под предупреждением о содержании",
|
||||
"settings.content_warnings_media_outside_hint": "Воспроизводить исходное поведение Mastodon, когда предупреждение о содержании сворачивает только текст поста",
|
||||
"settings.content_warnings_shared_state": "Показывать/скрывать содержимое всех копий вместе",
|
||||
"settings.content_warnings_shared_state_hint": "Воспроизводить исходное поведение Mastodon, когда раскрывание и закрывание предупреждения о содержимом охватывает все копии поста сразу. Это предотвращает автоматическое сворачивание копий поста с уже однажды раскрытым CW",
|
||||
"settings.content_warnings_unfold_opts": "Автоматическое раскрытие",
|
||||
"settings.deprecated_setting": "Эта опция теперь может быть включена в {settings_page_link} Mastodon",
|
||||
"settings.enable_collapsed": "Включить сворачивание постов",
|
||||
"settings.enable_collapsed_hint": "Свёрнутые посты отображаются частично скрытыми, чтобы занимать меньше места на экране. Эту функцию не следует путать с предупреждением о содержании",
|
||||
"settings.enable_content_warnings_auto_unfold": "Автоматически раскрывать предупреждения о содержании",
|
||||
"settings.general": "Общие",
|
||||
"settings.hicolor_privacy_icons": "Цветные значки публичности поста",
|
||||
"settings.hicolor_privacy_icons.hint": "Отображать значки публичности поста в ярких и различимых цветах",
|
||||
"settings.media": "Медиафайлы",
|
||||
"settings.notifications.favicon_badge": "Индикатор уведомлений на иконке сайта",
|
||||
"settings.notifications.favicon_badge.hint": "Добавить индикатор непрочитанных уведомлений на иконку вкладки",
|
||||
"settings.notifications.tab_badge": "Индикатор непрочитанных уведомлений",
|
||||
"settings.notifications_opts": "Опции уведомлений",
|
||||
"settings.pop_in_left": "Слева",
|
||||
"settings.pop_in_player": "Включить плавающий плеер",
|
||||
"settings.pop_in_position": "Расположение плавающего плеера:",
|
||||
"settings.pop_in_right": "Справа",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.prepend_cw_re": "Добавлять «re: » перед предупреждением о содержании при ответе",
|
||||
"settings.shared_settings_link": "настройках пользователя",
|
||||
"settings.show_reply_counter": "Показывать приблизительное число ответов",
|
||||
"settings.side_arm": "Дополнительная кнопка постинга:",
|
||||
"settings.side_arm.none": "Нет",
|
||||
"settings.side_arm_reply_mode": "При ответе на пост дополнительная кнопка постинга должна:",
|
||||
"settings.status_icons": "Значки постов",
|
||||
"settings.status_icons_language": "Индикатор языка",
|
||||
"settings.status_icons_local_only": "Индикатор нефедерируемого поста",
|
||||
"settings.status_icons_media": "Индикаторы медиафайлов и опросов",
|
||||
"settings.status_icons_reply": "Индикатор ответа",
|
||||
"settings.status_icons_visibility": "Индикатор публичности поста",
|
||||
"settings.tag_misleading_links": "Помечать обманчивые ссылки",
|
||||
"status.collapse": "Свернуть",
|
||||
"status.hide": "Скрыть пост",
|
||||
"status.in_reply_to": "Этот пост является ответом",
|
||||
"status.is_poll": "Этот пост содержит опрос",
|
||||
"status.show_filter_reason": "Всё равно показать",
|
||||
"status.uncollapse": "Развернуть"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,87 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc is free open source software forked fae Mastodon.",
|
||||
"account.disclaimer_full": "Information below may reflect the user's profile incompletely",
|
||||
"account.follows": "Follows",
|
||||
"account.suspended_disclaimer_full": "This user has been suspendit by a moderator.",
|
||||
"account.view_full_profile": "View full profile",
|
||||
"boost_modal.missing_description": "This post contains some media withoot description",
|
||||
"column.favourited_by": "Favouritit by",
|
||||
"column.heading": "Misc",
|
||||
"column.reblogged_by": "Boosted by",
|
||||
"column.subheading": "Miscellaneous options",
|
||||
"column_header.profile": "Profile",
|
||||
"column_subheading.lists": "Lists",
|
||||
"column_subheading.navigation": "Navigation",
|
||||
"community.column_settings.allow_local_only": "Show local-only posts",
|
||||
"compose.attach.doodle": "Draw something",
|
||||
"compose.change_federation": "Change federation settins",
|
||||
"compose.content-type.change": "Change advanced formatting options",
|
||||
"compose.content-type.html": "HTML",
|
||||
"compose.content-type.html_meta": "Format yer posts using HTML",
|
||||
"compose.content-type.markdown": "Markdoon",
|
||||
"compose.content-type.markdown_meta": "Format yer posts using Markdoon",
|
||||
"compose.content-type.plain": "Plain text",
|
||||
"compose.content-type.plain_meta": "Write with no advanced formatting",
|
||||
"compose.disable_threaded_mode": "Disable threaded mode",
|
||||
"compose.enable_threaded_mode": "Enable threaded mode",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Media isnae marked as sensitive} other {Media isnae marked as sensitive}}",
|
||||
"confirmation_modal.do_not_ask_again": "Dinnae ask for confirmation again",
|
||||
"confirmations.deprecated_settings.confirm": "Use Mastodon preferences",
|
||||
"confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} yer using hae been replaced by Mastodon {preferences} and will be overriden:",
|
||||
"direct.group_by_conversations": "Group by conversation",
|
||||
"favourite_modal.favourite": "Favourite post?",
|
||||
"federation.federated.long": "Allow this post to reach other servers",
|
||||
"federation.federated.short": "Federated",
|
||||
"federation.local_only.long": "Prevent this post from reaching other servers",
|
||||
"federation.local_only.short": "Local-only",
|
||||
"firehose.column_settings.allow_local_only": "Show local-only posts in \"All\"",
|
||||
"home.column_settings.advanced": "Advanced",
|
||||
"home.column_settings.filter_regex": "Filter oot by regular expressions",
|
||||
"home.column_settings.show_direct": "Show private mentions",
|
||||
"home.settings": "Column settins",
|
||||
"keyboard_shortcuts.bookmark": "tae bookmark",
|
||||
"keyboard_shortcuts.secondary_toot": "tae send post using secondary privacy settin",
|
||||
"moved_to_warning": "This account is marked as moved tae {moved_to_link}, an' may not accept new follows.",
|
||||
"navigation_bar.app_settings": "App settins",
|
||||
"navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
|
||||
"navigation_bar.misc": "Misc",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Show filter bar",
|
||||
"settings.always_show_spoilers_field": "Always enable the Content Warning field",
|
||||
"settings.close": "Close",
|
||||
"settings.compose_box_opts": "Compose box",
|
||||
"settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed",
|
||||
"settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting posts lacking media descriptions",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"settings.content_warnings.regexp": "Regular expression",
|
||||
"settings.content_warnings_filter": "Content warnings tae not automatically unfold:",
|
||||
"settings.content_warnings_shared_state": "Show/hide content fae all copies at once",
|
||||
"settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a post wi' unfolded CW",
|
||||
"settings.content_warnings_unfold_opts": "Auto-unfolding options",
|
||||
"settings.deprecated_setting": "This settin is now controlled fae Mastodon's {settings_page_link}",
|
||||
"settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings",
|
||||
"settings.fullwidth_view": "Stretch columns tae full width (Desktop mode only)",
|
||||
"settings.fullwidth_view_hint": "Stretches columns tae fill all the available space.",
|
||||
"settings.general": "General",
|
||||
"settings.hicolor_privacy_icons": "High color privacy icons",
|
||||
"settings.hicolor_privacy_icons.hint": "Display privacy icons in bright an' easily distinguishable colors",
|
||||
"settings.inline_preview_cards": "Inline preview cards fae external links",
|
||||
"settings.layout_opts": "Layout options",
|
||||
"settings.media": "Media",
|
||||
"settings.media_fullwidth": "Full-width media previews",
|
||||
"settings.media_letterbox": "Letterbox media",
|
||||
"settings.media_letterbox_hint": "Scale doon an' letterbox media tae fill the image containers instead of stretching an' cropping them",
|
||||
"settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default",
|
||||
"settings.notifications.favicon_badge": "Unread notifications favicon badge",
|
||||
"settings.notifications.favicon_badge.hint": "Add a badge fae unread notifications to the favicon",
|
||||
"settings.notifications.tab_badge": "Unread notifications badge",
|
||||
"settings.notifications.tab_badge.hint": "Display a badge fae unread notifications in the column icons when the notifications column isnae open",
|
||||
"settings.notifications_opts": "Notifications options",
|
||||
"settings.pop_in_left": "Left",
|
||||
"settings.pop_in_player": "Enable pop-in player",
|
||||
"settings.pop_in_position": "Pop-in player position:",
|
||||
"settings.pop_in_right": "Right",
|
||||
"settings.preferences": "Preferences",
|
||||
"settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"account.follows": "ติดตาม",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"confirmations.missing_media_description.message": "你没有为一个或多个媒体撰写描述。请考虑为视障人士添加描述。",
|
||||
"direct.group_by_conversations": "按对话分组",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "精选账户",
|
||||
"favourite_modal.favourite": "点赞嘟文?",
|
||||
"federation.federated.long": "允许此嘟文到达其它服务器",
|
||||
"federation.federated.short": "联动",
|
||||
"federation.local_only.long": "阻止此嘟文到达其它服务器",
|
||||
@@ -89,6 +90,8 @@
|
||||
"settings.enable_collapsed": "启用折叠嘟文",
|
||||
"settings.enable_collapsed_hint": "让折叠的帖子隐藏部分内容以占用较少的屏幕空间。这与“内容警告”功能不同。",
|
||||
"settings.enable_content_warnings_auto_unfold": "自动展开内容警告",
|
||||
"settings.fullwidth_view": "将列拉伸至全宽 (仅桌面模式)",
|
||||
"settings.fullwidth_view_hint": "拉伸列以利用所有可用空间。",
|
||||
"settings.general": "一般",
|
||||
"settings.hicolor_privacy_icons": "彩色隐私图标 ",
|
||||
"settings.hicolor_privacy_icons.hint": "以明亮且易于区分的颜色显示隐私图标",
|
||||
@@ -153,7 +156,5 @@
|
||||
"status.is_poll": "此嘟文是投票",
|
||||
"status.local_only": "此嘟文仅本站可见",
|
||||
"status.show_filter_reason": "仍然显示",
|
||||
"status.show_less": "部分显示",
|
||||
"status.show_more": "完全显示",
|
||||
"status.uncollapse": "展开"
|
||||
}
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
"compose.content-type.plain_meta": "不使用進階格式撰寫",
|
||||
"compose.disable_threaded_mode": "停用貼文串模式",
|
||||
"compose.enable_threaded_mode": "啟用貼文串模式",
|
||||
"compose_form.sensitive.hide": "{count, plural, other {將媒體標記為敏感內容}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, other {媒體已被標記為敏感內容}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, other {媒體未被標記為敏感內容}}",
|
||||
"confirmation_modal.do_not_ask_again": "不要再顯示確認訊息",
|
||||
"confirmations.deprecated_settings.confirm": "使用 Mastodon 偏好",
|
||||
"confirmations.deprecated_settings.message": "您正在使用的某些特定於 glitch-soc 設備的 {app_settings} 已被 Mastodon {preferences} 所取代,並將被覆蓋:",
|
||||
@@ -33,6 +36,7 @@
|
||||
"confirmations.missing_media_description.message": "至少有一個媒體附件缺少說明。 在發送貼文之前,請考慮為視障人士在所有媒體附件加上說明。",
|
||||
"direct.group_by_conversations": "以對話分組",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "受推薦帳號",
|
||||
"favourite_modal.favourite": "將貼文加入最愛?",
|
||||
"federation.federated.long": "允許此貼文發布到其他伺服器",
|
||||
"federation.federated.short": "聯邦",
|
||||
"federation.local_only.long": "避免此貼文發布到其他伺服器",
|
||||
@@ -86,6 +90,8 @@
|
||||
"settings.enable_collapsed": "啟用折疊的貼文",
|
||||
"settings.enable_collapsed_hint": "折疊的貼文隱藏了部分內容,以佔用更少的螢幕空間。這與內容警告功能不同",
|
||||
"settings.enable_content_warnings_auto_unfold": "自動展開內容警告",
|
||||
"settings.fullwidth_view": "將欄位延展至全寬(僅限桌面模式)",
|
||||
"settings.fullwidth_view_hint": "將欄位延展以填滿所有可用空間。",
|
||||
"settings.general": "一般設定",
|
||||
"settings.hicolor_privacy_icons": "隱私圖示使用對比色",
|
||||
"settings.hicolor_privacy_icons.hint": "用明亮且易於區分的顏色顯示隱私圖示",
|
||||
@@ -140,12 +146,15 @@
|
||||
"settings.wide_view": "寬廣模式(僅限桌面模式)",
|
||||
"settings.wide_view_hint": "延伸欄以更好地填充可用空間。",
|
||||
"status.collapse": "折疊",
|
||||
"status.filtered": "已過濾的",
|
||||
"status.has_audio": "包含音訊檔案",
|
||||
"status.has_pictures": "包含圖片",
|
||||
"status.has_preview_card": "包含預覽卡",
|
||||
"status.has_video": "包含視訊檔案",
|
||||
"status.hide": "隱藏貼文",
|
||||
"status.in_reply_to": "貼文有回覆",
|
||||
"status.is_poll": "貼文有投票",
|
||||
"status.local_only": "只在此實例可見",
|
||||
"status.show_filter_reason": "仍要顯示",
|
||||
"status.uncollapse": "展開"
|
||||
}
|
||||
|
||||
@@ -150,5 +150,10 @@ export function createAccountFromServerJSON(serverJSON: ApiAccountJSON) {
|
||||
),
|
||||
note_emojified: emojify(accountJSON.note, emojiMap),
|
||||
note_plain: unescapeHTML(accountJSON.note),
|
||||
url:
|
||||
accountJSON.url.startsWith('http://') ||
|
||||
accountJSON.url.startsWith('https://')
|
||||
? accountJSON.url
|
||||
: accountJSON.uri,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,11 +4,10 @@ import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts';
|
||||
import { importAccounts } from '../actions/accounts_typed';
|
||||
import { domain } from '../initial_state';
|
||||
|
||||
export const normalizeForLookup = str => {
|
||||
str = str.toLowerCase();
|
||||
const trailingIndex = str.indexOf(`@${domain.toLowerCase()}`);
|
||||
return (trailingIndex > 0) ? str.slice(0, trailingIndex) : str;
|
||||
};
|
||||
const pattern = new RegExp(`@${domain}$`, 'gi');
|
||||
|
||||
export const normalizeForLookup = str =>
|
||||
str.toLowerCase().replace(pattern, '');
|
||||
|
||||
const initialState = ImmutableMap();
|
||||
|
||||
|
||||
@@ -330,12 +330,26 @@ const expiresInFromExpiresAt = expires_at => {
|
||||
|
||||
const mergeLocalHashtagResults = (suggestions, prefix, tagHistory) => {
|
||||
prefix = prefix.toLowerCase();
|
||||
|
||||
if (suggestions.length < 4) {
|
||||
const localTags = tagHistory.filter(tag => tag.toLowerCase().startsWith(prefix) && !suggestions.some(suggestion => suggestion.type === 'hashtag' && suggestion.name.toLowerCase() === tag.toLowerCase()));
|
||||
return suggestions.concat(localTags.slice(0, 4 - suggestions.length).toJS().map(tag => ({ type: 'hashtag', name: tag })));
|
||||
} else {
|
||||
return suggestions;
|
||||
suggestions = suggestions.concat(localTags.slice(0, 4 - suggestions.length).toJS().map(tag => ({ type: 'hashtag', name: tag })));
|
||||
}
|
||||
|
||||
// Prefer capitalization from personal history, unless personal history is all lower-case
|
||||
const fixSuggestionCapitalization = (suggestion) => {
|
||||
if (suggestion.type !== 'hashtag')
|
||||
return suggestion;
|
||||
|
||||
const tagFromHistory = tagHistory.find((tag) => tag.localeCompare(suggestion.name, undefined, { sensitivity: 'accent' }) === 0);
|
||||
|
||||
if (!tagFromHistory || tagFromHistory.toLowerCase() === tagFromHistory)
|
||||
return suggestion;
|
||||
|
||||
return { ...suggestion, name: tagFromHistory };
|
||||
};
|
||||
|
||||
return suggestions.map(fixSuggestionCapitalization);
|
||||
};
|
||||
|
||||
const normalizeSuggestions = (state, { accounts, emojis, tags, token }) => {
|
||||
@@ -609,8 +623,13 @@ export default function compose(state = initialState, action) {
|
||||
}
|
||||
|
||||
if (action.status.get('poll')) {
|
||||
let options = action.status.getIn(['poll', 'options']).map(x => x.get('title'));
|
||||
if (options.size < action.maxOptions) {
|
||||
options = options.push('');
|
||||
}
|
||||
|
||||
map.set('poll', ImmutableMap({
|
||||
options: action.status.getIn(['poll', 'options']).map(x => x.get('title')),
|
||||
options: options,
|
||||
multiple: action.status.getIn(['poll', 'multiple']),
|
||||
expires_in: expiresInFromExpiresAt(action.status.getIn(['poll', 'expires_at'])),
|
||||
}));
|
||||
@@ -639,8 +658,13 @@ export default function compose(state = initialState, action) {
|
||||
}
|
||||
|
||||
if (action.status.get('poll')) {
|
||||
let options = action.status.getIn(['poll', 'options']).map(x => x.get('title'));
|
||||
if (options.size < action.maxOptions) {
|
||||
options = options.push('');
|
||||
}
|
||||
|
||||
map.set('poll', ImmutableMap({
|
||||
options: action.status.getIn(['poll', 'options']).map(x => x.get('title')),
|
||||
options: options,
|
||||
multiple: action.status.getIn(['poll', 'multiple']),
|
||||
expires_in: expiresInFromExpiresAt(action.status.getIn(['poll', 'expires_at'])),
|
||||
}));
|
||||
|
||||
@@ -6,6 +6,7 @@ import { LOCAL_SETTING_CHANGE, LOCAL_SETTING_DELETE } from 'flavours/glitch/acti
|
||||
import { STORE_HYDRATE } from 'flavours/glitch/actions/store';
|
||||
|
||||
const initialState = ImmutableMap({
|
||||
fullwidth_columns: false,
|
||||
stretch : true,
|
||||
side_arm : 'none',
|
||||
side_arm_reply_mode : 'keep',
|
||||
|
||||
@@ -15,9 +15,10 @@ export const makeGetStatus = () => {
|
||||
(state, { id }) => state.getIn(['accounts', state.getIn(['statuses', id, 'account'])]),
|
||||
(state, { id }) => state.getIn(['accounts', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'account'])]),
|
||||
getFilters,
|
||||
(_, { contextType }) => ['detailed', 'bookmarks', 'favourites'].includes(contextType),
|
||||
],
|
||||
|
||||
(statusBase, statusReblog, accountBase, accountReblog, filters) => {
|
||||
(statusBase, statusReblog, accountBase, accountReblog, filters, warnInsteadOfHide) => {
|
||||
if (!statusBase || statusBase.get('isLoading')) {
|
||||
return null;
|
||||
}
|
||||
@@ -25,7 +26,7 @@ export const makeGetStatus = () => {
|
||||
let filtered = false;
|
||||
if ((accountReblog || accountBase).get('id') !== me && filters) {
|
||||
let filterResults = statusReblog?.get('filtered') || statusBase.get('filtered') || ImmutableList();
|
||||
if (filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) {
|
||||
if (!warnInsteadOfHide && filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) {
|
||||
return null;
|
||||
}
|
||||
filterResults = filterResults.filter(result => filters.has(result.get('filter')));
|
||||
|
||||
@@ -817,6 +817,10 @@ body > [data-popper-placement] {
|
||||
flex: 0 1 auto;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
|
||||
.icon {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7473,6 +7477,13 @@ img.modal-warning {
|
||||
}
|
||||
}
|
||||
|
||||
.fullwidth-columns .columns-area:not(.columns-area--mobile) {
|
||||
.column {
|
||||
flex: auto;
|
||||
max-width: unset;
|
||||
}
|
||||
}
|
||||
|
||||
.media-gallery__actions {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
@@ -7640,6 +7651,8 @@ img.modal-warning {
|
||||
}
|
||||
|
||||
&--layout-3 {
|
||||
min-height: calc(64px * 2 + 8px);
|
||||
|
||||
& > .media-gallery__item:nth-child(1) {
|
||||
border-end-end-radius: 0;
|
||||
border-start-end-radius: 0;
|
||||
@@ -7659,6 +7672,8 @@ img.modal-warning {
|
||||
}
|
||||
|
||||
&--layout-4 {
|
||||
min-height: calc(64px * 2 + 8px);
|
||||
|
||||
& > .media-gallery__item:nth-child(1) {
|
||||
border-end-end-radius: 0;
|
||||
border-start-end-radius: 0;
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
|
||||
.accounts-table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
|
||||
.account {
|
||||
max-width: calc(56px + 30ch);
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,11 @@ export const toServerSideType = (columnType: string) => {
|
||||
case 'thread':
|
||||
case 'account':
|
||||
return columnType;
|
||||
case 'detailed':
|
||||
return 'thread';
|
||||
case 'bookmarks':
|
||||
case 'favourites':
|
||||
return 'home';
|
||||
default:
|
||||
if (columnType.includes('list:')) {
|
||||
return 'home';
|
||||
|
||||
@@ -96,11 +96,16 @@ export const ensureComposeIsVisible = (getState) => {
|
||||
};
|
||||
|
||||
export function setComposeToStatus(status, text, spoiler_text) {
|
||||
return{
|
||||
type: COMPOSE_SET_STATUS,
|
||||
status,
|
||||
text,
|
||||
spoiler_text,
|
||||
return (dispatch, getState) => {
|
||||
const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']);
|
||||
|
||||
dispatch({
|
||||
type: COMPOSE_SET_STATUS,
|
||||
status,
|
||||
text,
|
||||
spoiler_text,
|
||||
maxOptions,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -80,6 +80,17 @@ export function normalizeStatus(status, normalOldStatus) {
|
||||
normalStatus.contentHtml = emojify(normalStatus.content, emojiMap);
|
||||
normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(spoilerText), emojiMap);
|
||||
normalStatus.hidden = expandSpoilers ? false : spoilerText.length > 0 || normalStatus.sensitive;
|
||||
|
||||
if (normalStatus.url && !(normalStatus.url.startsWith('http://') || normalStatus.url.startsWith('https://'))) {
|
||||
normalStatus.url = null;
|
||||
}
|
||||
|
||||
normalStatus.url ||= normalStatus.uri;
|
||||
|
||||
normalStatus.media_attachments.forEach(item => {
|
||||
if (item.remote_url && !(item.remote_url.startsWith('http://') || item.remote_url.startsWith('https://')))
|
||||
item.remote_url = null;
|
||||
});
|
||||
}
|
||||
|
||||
if (normalOldStatus) {
|
||||
|
||||
@@ -90,10 +90,15 @@ export function fetchStatusFail(id, error, skipLoading) {
|
||||
}
|
||||
|
||||
export function redraft(status, raw_text) {
|
||||
return {
|
||||
type: REDRAFT,
|
||||
status,
|
||||
raw_text,
|
||||
return (dispatch, getState) => {
|
||||
const maxOptions = getState().server.getIn(['server', 'configuration', 'polls', 'max_options']);
|
||||
|
||||
dispatch({
|
||||
type: REDRAFT,
|
||||
status,
|
||||
raw_text,
|
||||
maxOptions,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { apiRequestPost } from 'mastodon/api';
|
||||
import type { Status, StatusVisibility } from 'mastodon/models/status';
|
||||
import type { ApiStatusJSON } from 'mastodon/api_types/statuses';
|
||||
import type { StatusVisibility } from 'mastodon/models/status';
|
||||
|
||||
export const apiReblog = (statusId: string, visibility: StatusVisibility) =>
|
||||
apiRequestPost<{ reblog: Status }>(`v1/statuses/${statusId}/reblog`, {
|
||||
apiRequestPost<{ reblog: ApiStatusJSON }>(`v1/statuses/${statusId}/reblog`, {
|
||||
visibility,
|
||||
});
|
||||
|
||||
export const apiUnreblog = (statusId: string) =>
|
||||
apiRequestPost<Status>(`v1/statuses/${statusId}/unreblog`);
|
||||
apiRequestPost<ApiStatusJSON>(`v1/statuses/${statusId}/unreblog`);
|
||||
|
||||
@@ -37,7 +37,7 @@ export interface BaseApiAccountJSON {
|
||||
roles?: ApiAccountJSON[];
|
||||
statuses_count: number;
|
||||
uri: string;
|
||||
url: string;
|
||||
url?: string;
|
||||
username: string;
|
||||
moved?: ApiAccountJSON;
|
||||
suspended?: boolean;
|
||||
|
||||
@@ -28,6 +28,7 @@ export const AltTextBadge: React.FC<{
|
||||
return (
|
||||
<>
|
||||
<button
|
||||
type='button'
|
||||
ref={anchorRef}
|
||||
className='media-gallery__alt__label'
|
||||
onClick={handleClick}
|
||||
|
||||
@@ -330,7 +330,7 @@ class Status extends ImmutablePureComponent {
|
||||
const { onToggleHidden } = this.props;
|
||||
const status = this._properStatus();
|
||||
|
||||
if (status.get('matched_filters')) {
|
||||
if (this.props.status.get('matched_filters')) {
|
||||
const expandedBecauseOfCW = !status.get('hidden') || status.get('spoiler_text').length === 0;
|
||||
const expandedBecauseOfFilter = this.state.showDespiteFilter;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Provider } from 'react-redux';
|
||||
|
||||
import { fetchCustomEmojis } from 'mastodon/actions/custom_emojis';
|
||||
import { fetchServer } from 'mastodon/actions/server';
|
||||
import { hydrateStore } from 'mastodon/actions/store';
|
||||
import { Router } from 'mastodon/components/router';
|
||||
import Compose from 'mastodon/features/standalone/compose';
|
||||
@@ -13,6 +14,7 @@ if (initialState) {
|
||||
}
|
||||
|
||||
store.dispatch(fetchCustomEmojis());
|
||||
store.dispatch(fetchServer());
|
||||
|
||||
const ComposeContainer = () => (
|
||||
<IntlProvider>
|
||||
|
||||
@@ -99,6 +99,7 @@ class Bookmarks extends ImmutablePureComponent {
|
||||
onLoadMore={this.handleLoadMore}
|
||||
emptyMessage={emptyMessage}
|
||||
bindToDocument={!multiColumn}
|
||||
timelineId='bookmarks'
|
||||
/>
|
||||
|
||||
<Helmet>
|
||||
|
||||
@@ -99,6 +99,7 @@ class Favourites extends ImmutablePureComponent {
|
||||
onLoadMore={this.handleLoadMore}
|
||||
emptyMessage={emptyMessage}
|
||||
bindToDocument={!multiColumn}
|
||||
timelineId='favourites'
|
||||
/>
|
||||
|
||||
<Helmet>
|
||||
|
||||
@@ -37,18 +37,23 @@ const getHostname = url => {
|
||||
|
||||
const domParser = new DOMParser();
|
||||
|
||||
const addAutoPlay = html => {
|
||||
const handleIframeUrl = (html, url, providerName) => {
|
||||
const document = domParser.parseFromString(html, 'text/html').documentElement;
|
||||
const iframe = document.querySelector('iframe');
|
||||
const startTime = new URL(url).searchParams.get('t');
|
||||
|
||||
if (iframe) {
|
||||
if (iframe.src.indexOf('?') !== -1) {
|
||||
iframe.src += '&';
|
||||
} else {
|
||||
iframe.src += '?';
|
||||
const iframeUrl = new URL(iframe.src);
|
||||
|
||||
iframeUrl.searchParams.set('autoplay', 1);
|
||||
iframeUrl.searchParams.set('auto_play', 1);
|
||||
|
||||
if (providerName === 'YouTube') {
|
||||
iframeUrl.searchParams.set('start', startTime || '');
|
||||
iframe.referrerPolicy = 'strict-origin-when-cross-origin';
|
||||
}
|
||||
|
||||
iframe.src += 'autoplay=1&auto_play=1';
|
||||
iframe.src = iframeUrl.href;
|
||||
|
||||
// DOM parser creates html/body elements around original HTML fragment,
|
||||
// so we need to get innerHTML out of the body and not the entire document
|
||||
@@ -114,7 +119,7 @@ export default class Card extends PureComponent {
|
||||
|
||||
renderVideo () {
|
||||
const { card } = this.props;
|
||||
const content = { __html: addAutoPlay(card.get('html')) };
|
||||
const content = { __html: handleIframeUrl(card.get('html'), card.get('url'), card.get('provider_name')) };
|
||||
|
||||
return (
|
||||
<div
|
||||
|
||||
@@ -15,6 +15,7 @@ import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?re
|
||||
import { AnimatedNumber } from 'mastodon/components/animated_number';
|
||||
import { ContentWarning } from 'mastodon/components/content_warning';
|
||||
import EditedTimestamp from 'mastodon/components/edited_timestamp';
|
||||
import { FilterWarning } from 'mastodon/components/filter_warning';
|
||||
import type { StatusLike } from 'mastodon/components/hashtag_bar';
|
||||
import { getHashtagBarForStatus } from 'mastodon/components/hashtag_bar';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
@@ -68,6 +69,7 @@ export const DetailedStatus: React.FC<{
|
||||
}) => {
|
||||
const properStatus = status?.get('reblog') ?? status;
|
||||
const [height, setHeight] = useState(0);
|
||||
const [showDespiteFilter, setShowDespiteFilter] = useState(false);
|
||||
const nodeRef = useRef<HTMLDivElement>();
|
||||
|
||||
const handleOpenVideo = useCallback(
|
||||
@@ -80,6 +82,10 @@ export const DetailedStatus: React.FC<{
|
||||
[onOpenVideo, status],
|
||||
);
|
||||
|
||||
const handleFilterToggle = useCallback(() => {
|
||||
setShowDespiteFilter(!showDespiteFilter);
|
||||
}, [showDespiteFilter, setShowDespiteFilter]);
|
||||
|
||||
const handleExpandedToggle = useCallback(() => {
|
||||
if (onToggleHidden) onToggleHidden(status);
|
||||
}, [onToggleHidden, status]);
|
||||
@@ -219,12 +225,12 @@ export const DetailedStatus: React.FC<{
|
||||
/>
|
||||
);
|
||||
}
|
||||
} else if (status.get('spoiler_text').length === 0) {
|
||||
} else if (status.get('card')) {
|
||||
media = (
|
||||
<Card
|
||||
sensitive={status.get('sensitive')}
|
||||
onOpenMedia={onOpenMedia}
|
||||
card={status.get('card', null)}
|
||||
card={status.get('card')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -290,8 +296,12 @@ export const DetailedStatus: React.FC<{
|
||||
const { statusContentProps, hashtagBar } = getHashtagBarForStatus(
|
||||
status as StatusLike,
|
||||
);
|
||||
|
||||
const matchedFilters = status.get('matched_filters');
|
||||
|
||||
const expanded =
|
||||
!status.get('hidden') || status.get('spoiler_text').length === 0;
|
||||
(!matchedFilters || showDespiteFilter) &&
|
||||
(!status.get('hidden') || status.get('spoiler_text').length === 0);
|
||||
|
||||
return (
|
||||
<div style={outerStyle}>
|
||||
@@ -328,17 +338,26 @@ export const DetailedStatus: React.FC<{
|
||||
)}
|
||||
</Link>
|
||||
|
||||
{status.get('spoiler_text').length > 0 && (
|
||||
<ContentWarning
|
||||
text={
|
||||
status.getIn(['translation', 'spoilerHtml']) ||
|
||||
status.get('spoilerHtml')
|
||||
}
|
||||
expanded={expanded}
|
||||
onClick={handleExpandedToggle}
|
||||
{matchedFilters && (
|
||||
<FilterWarning
|
||||
title={matchedFilters.join(', ')}
|
||||
expanded={showDespiteFilter}
|
||||
onClick={handleFilterToggle}
|
||||
/>
|
||||
)}
|
||||
|
||||
{status.get('spoiler_text').length > 0 &&
|
||||
(!matchedFilters || showDespiteFilter) && (
|
||||
<ContentWarning
|
||||
text={
|
||||
status.getIn(['translation', 'spoilerHtml']) ||
|
||||
status.get('spoilerHtml')
|
||||
}
|
||||
expanded={expanded}
|
||||
onClick={handleExpandedToggle}
|
||||
/>
|
||||
)}
|
||||
|
||||
{expanded && (
|
||||
<>
|
||||
<StatusContent
|
||||
|
||||
@@ -138,7 +138,7 @@ const makeMapStateToProps = () => {
|
||||
});
|
||||
|
||||
const mapStateToProps = (state, props) => {
|
||||
const status = getStatus(state, { id: props.params.statusId });
|
||||
const status = getStatus(state, { id: props.params.statusId, contextType: 'detailed' });
|
||||
|
||||
let ancestorsIds = Immutable.List();
|
||||
let descendantsIds = Immutable.List();
|
||||
|
||||
@@ -128,6 +128,8 @@ export const BoostModal: React.FC<{
|
||||
? messages.cancel_reblog
|
||||
: messages.reblog,
|
||||
)}
|
||||
/* eslint-disable-next-line jsx-a11y/no-autofocus -- We are in the modal */
|
||||
autoFocus
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
"account.requested_follow": "لقد طلب {name} متابعتك",
|
||||
"account.share": "شارِك الملف التعريفي لـ @{name}",
|
||||
"account.show_reblogs": "اعرض إعادات نشر @{name}",
|
||||
"account.statuses_counter": "{count, plural, zero {}one {{counter} مشور} two {{counter} منشور} few {{counter} منشور} many {{counter} منشور} other {{counter} منشور}}",
|
||||
"account.unblock": "إلغاء الحَظر عن @{name}",
|
||||
"account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}",
|
||||
"account.unblock_short": "ألغ الحجب",
|
||||
@@ -222,6 +223,8 @@
|
||||
"domain_block_modal.they_cant_follow": "لا أحد من هذا الخادم يمكنه متابعتك.",
|
||||
"domain_block_modal.they_wont_know": "لن يَعرف أنه قد تم حظره.",
|
||||
"domain_block_modal.title": "أتريد حظر النطاق؟",
|
||||
"domain_block_modal.you_will_lose_num_followers": "ستخسر {followersCount, plural, zero {}one {{followersCountDisplay} متابع} two {{followersCountDisplay} متابع} few {{followersCountDisplay} متابعين} many {{followersCountDisplay} متابعين} other {{followersCountDisplay} متابعين}} و {followingCount, plural, zero {}one {{followingCountDisplay} شخص تتابعه} two {{followingCountDisplay} شخص تتابعهما} few {{followingCountDisplay} أشخاص تتابعهم} many {{followingCountDisplay} أشخاص تتابعهم} other {{followingCountDisplay} أشخاص تتابعهم}}.",
|
||||
"domain_block_modal.you_will_lose_relationships": "ستفقد جميع المتابعين والأشخاص الذين تتابعهم من هذا الخادم.",
|
||||
"domain_block_modal.you_wont_see_posts": "لن ترى منشورات أو إشعارات من المستخدمين على هذا الخادم.",
|
||||
"domain_pill.activitypub_lets_connect": "يتيح لك التواصل والتفاعل مع الناس ليس فقط على ماستدون، ولكن عبر تطبيقات اجتماعية مختلفة أيضا.",
|
||||
"domain_pill.activitypub_like_language": "إنّ ActivityPub مثل لغة ماستدون التي يتحدث بها مع شبكات اجتماعية أخرى.",
|
||||
@@ -303,6 +306,8 @@
|
||||
"filter_modal.select_filter.subtitle": "استخدم فئة موجودة أو قم بإنشاء فئة جديدة",
|
||||
"filter_modal.select_filter.title": "تصفية هذا المنشور",
|
||||
"filter_modal.title.status": "تصفية منشور",
|
||||
"filter_warning.matches_filter": "يطابق عامل التصفية “<span>{title}</span>”",
|
||||
"filtered_notifications_banner.pending_requests": "من {count, plural, zero {}=0 {لا أحد} one {شخص واحد قد تعرفه} two {# شخص قد تعرفهما} few {# أشخاص قد تعرفهم} many {# أشخاص قد تعرفهم} other {# أشخاص قد تعرفهم}}",
|
||||
"filtered_notifications_banner.title": "الإشعارات المصفاة",
|
||||
"firehose.all": "الكل",
|
||||
"firehose.local": "هذا الخادم",
|
||||
@@ -351,7 +356,11 @@
|
||||
"hashtag.follow": "اتبع الوسم",
|
||||
"hashtag.unfollow": "ألغِ متابعة الوسم",
|
||||
"hashtags.and_other": "…و {count, plural, zero {} one {# واحد آخر} two {# اثنان آخران} few {# آخرون} many {# آخَرًا}other {# آخرون}}",
|
||||
"hints.profiles.followers_may_be_missing": "قد يكون الأشخاص الذي يتبعهم هذا الملف الشخصي ناقصين.",
|
||||
"hints.profiles.follows_may_be_missing": "قد يكون المتابعين لهذا الملف الشخصي ناقصين.",
|
||||
"hints.profiles.posts_may_be_missing": "قد تكون بعض المنشورات من هذا الملف الشخصي ناقصة.",
|
||||
"hints.profiles.see_more_followers": "عرض المزيد من المتابعين على {domain}",
|
||||
"hints.profiles.see_more_follows": "اطلع على المزيد من المتابعين على {domain}",
|
||||
"hints.profiles.see_more_posts": "عرض المزيد من المنشورات من {domain}",
|
||||
"hints.threads.replies_may_be_missing": "قد تكون الردود الواردة من الخوادم الأخرى غائبة.",
|
||||
"hints.threads.see_more": "اطلع على المزيد من الردود على {domain}",
|
||||
@@ -364,9 +373,15 @@
|
||||
"home.show_announcements": "إظهار الإعلانات",
|
||||
"ignore_notifications_modal.disclaimer": "لا يمكن لـ Mastodon إبلاغ المستخدمين بأنك قد تجاهلت إشعاراتهم. تجاهل الإشعارات لن يمنع إرسال الرسائل نفسها.",
|
||||
"ignore_notifications_modal.filter_instead": "تصفيتها بدلا من ذلك",
|
||||
"ignore_notifications_modal.filter_to_act_users": "ستبقى قادراً على قبول المستخدمين أو رفضهم أو الإبلاغ عنهم",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "التصفية تساعد على تجنب أي ارتباك",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "يمكنك مراجعة الإشعارات المصفاة بشكل منفصل",
|
||||
"ignore_notifications_modal.ignore": "تجاهل الإشعارات",
|
||||
"ignore_notifications_modal.limited_accounts_title": "تجاهل الإشعارات من الحسابات التي هي تحت الإشراف؟",
|
||||
"ignore_notifications_modal.new_accounts_title": "تجاهل الإشعارات الصادرة من الحسابات الجديدة؟",
|
||||
"ignore_notifications_modal.not_followers_title": "تجاهل الإشعارات من أشخاص لا يتابعونك؟",
|
||||
"ignore_notifications_modal.not_following_title": "تجاهل الإشعارات من أشخاص لا تتابعهم؟",
|
||||
"ignore_notifications_modal.private_mentions_title": "تجاهل الإشعارات للرسائل التي لم تطلبها؟",
|
||||
"interaction_modal.description.favourite": "بفضل حساب على ماستدون، يمكنك إضافة هذا المنشور إلى مفضلتك لإبلاغ الناشر عن تقديرك وكذا للاحتفاظ بالمنشور إلى وقت لاحق.",
|
||||
"interaction_modal.description.follow": "بفضل حساب في ماستدون، يمكنك متابعة {name} وتلقي منشوراته في موجزات خيطك الرئيس.",
|
||||
"interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور ومشاركته مع مُتابِعيك.",
|
||||
@@ -422,10 +437,13 @@
|
||||
"lightbox.close": "إغلاق",
|
||||
"lightbox.next": "التالي",
|
||||
"lightbox.previous": "العودة",
|
||||
"lightbox.zoom_in": "التكبير إلى الحجم الفعلي",
|
||||
"lightbox.zoom_out": "التكبير ليناسب الحجم",
|
||||
"limited_account_hint.action": "إظهار الملف التعريفي على أي حال",
|
||||
"limited_account_hint.title": "تم إخفاء هذا الملف الشخصي من قبل مشرفي {domain}.",
|
||||
"link_preview.author": "مِن {name}",
|
||||
"link_preview.more_from_author": "المزيد من {name}",
|
||||
"link_preview.shares": "{count, plural, zero {{counter} منشور}one {{counter} منشور} two {{counter} منشور} few {{counter} منشور} many {{counter} منشور} other {{counter} منشور}}",
|
||||
"lists.account.add": "أضف إلى القائمة",
|
||||
"lists.account.remove": "احذف من القائمة",
|
||||
"lists.delete": "احذف القائمة",
|
||||
@@ -482,10 +500,18 @@
|
||||
"navigation_bar.security": "الأمان",
|
||||
"not_signed_in_indicator.not_signed_in": "تحتاج إلى تسجيل الدخول للوصول إلى هذا المصدر.",
|
||||
"notification.admin.report": "{name} أبلغ عن {target}",
|
||||
"notification.admin.report_account": "{name} أبلغ عن {count, plural, zero {}one {منشور} two {منشورين} few {# منشورات} many {# منشورات} other {# منشورات}} من قبل {target} بسبب {category}",
|
||||
"notification.admin.report_account_other": "{name} أبلغ عن {count, plural, zero {}one {منشور} two {منشورين} few {# منشورات} many {# منشورات} other {# منشورات}} من قبل {target}",
|
||||
"notification.admin.report_statuses": "{name} أبلغ عن {target} بسبب {category}",
|
||||
"notification.admin.report_statuses_other": "{name} أبلغ عن {target}",
|
||||
"notification.admin.sign_up": "أنشأ {name} حسابًا",
|
||||
"notification.admin.sign_up.name_and_others": "{name} و{count, plural, zero {}one {شخص آخر قاما} two {# آخرون قاموا} few {# آخرون قاموا} many {# آخرون قاموا} other {# آخرون قاموا}} بالتسجيل",
|
||||
"notification.favourite": "أضاف {name} منشورك إلى مفضلته",
|
||||
"notification.favourite.name_and_others_with_link": "{name} و<a>{count, plural, zero {}one {شخص آخر} two {شخصان آخرين} few {# أشخاص آخرون} many {# أشخاص آخرون} other {# أشخاص آخرون}}</a> قاموا بتفضيل منشورك",
|
||||
"notification.follow": "يتابعك {name}",
|
||||
"notification.follow.name_and_others": "{name} و<a>{count, plural, zero {}one {شخص آخر} two {شخصان آخرين} few {# أشخاص آخرون} many {# أشخاص آخرون} other {# أشخاص آخرون}}</a> قاموا بمتابعتك",
|
||||
"notification.follow_request": "لقد طلب {name} متابعتك",
|
||||
"notification.follow_request.name_and_others": "{name} و{count, plural, zero {}one {شخص آخر} two {شخصان آخرين} few {# أشخاص آخرون} many {# أشخاص آخرون} other {# أشخاص آخرون}} أرسلوا طلب متابعة لك",
|
||||
"notification.label.mention": "إشارة",
|
||||
"notification.label.private_mention": "إشارة خاصة",
|
||||
"notification.label.private_reply": "رد خاص",
|
||||
@@ -504,6 +530,7 @@
|
||||
"notification.own_poll": "انتهى استطلاعك للرأي",
|
||||
"notification.poll": "لقد انتهى استطلاع رأي صوتت فيه",
|
||||
"notification.reblog": "قام {name} بمشاركة منشورك",
|
||||
"notification.reblog.name_and_others_with_link": "{name} و<a>{count, plural, zero {}one {شخص آخر} two {شخصان آخرين} few {# أشخاص آخرون} many {# أشخاص آخرون} other {# أشخاص آخرون}}</a> قاموا بإعادة نشر منشورك",
|
||||
"notification.relationships_severance_event": "فقدت الاتصالات مع {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "قام مشرف من {from} بتعليق {target}، مما يعني أنك لم يعد بإمكانك تلقي التحديثات منهم أو التفاعل معهم.",
|
||||
"notification.relationships_severance_event.domain_block": "قام مشرف من {from} بحظر {target}، بما في ذلك {followersCount} من متابعينك و {followingCount, plural, one {# حساب} other {# حسابات}} تتابعها.",
|
||||
@@ -512,12 +539,20 @@
|
||||
"notification.status": "{name} نشر للتو",
|
||||
"notification.update": "عدّلَ {name} منشورًا",
|
||||
"notification_requests.accept": "موافقة",
|
||||
"notification_requests.accept_multiple": "قبول {count, plural, zero {}one {طلب واحد…} two {# طلب…} few {# طلبات…} many {# طلبات…} other {# طلبات…}}",
|
||||
"notification_requests.confirm_accept_multiple.button": "قبول {count, plural, zero {}one {الطلب} two {2 طلب} few {الطلبات} many {الطلبات} other {الطلبات}}",
|
||||
"notification_requests.confirm_accept_multiple.message": "أنت على وشك قبول {count, plural, zero {}one {طلب إشعار واحد} two {# طلبات إشعار} few {# طلبات إشعار} many {# طلبات إشعار} other {# طلبات إشعار}}. هل أنت متأكد من أنك تريد المتابعة؟",
|
||||
"notification_requests.confirm_accept_multiple.title": "قبول طلبات الإشعار؟",
|
||||
"notification_requests.confirm_dismiss_multiple.button": "رفض {count, plural, zero {}one {الطلب} two {2 طلب} few {الطلبات} many {الطلبات} other {الطلبات}}",
|
||||
"notification_requests.confirm_dismiss_multiple.message": "أنت على وشك رفض {count, plural, zero {}one {طلب إشعار واحد} two {# طلبات إشعار} few {# طلبات إشعار} many {# طلبات إشعار} other {# طلبات إشعار}}. لن تتمكن من الوصول بسهولة {count, plural, zero {}one {إليه} two {إليهما} few {إليهم} many {إليهم} other {إليهم}} مرة أخرى. هل أنت متأكد من أنك تريد المتابعة؟",
|
||||
"notification_requests.confirm_dismiss_multiple.title": "تجاهل طلبات الإشعار؟",
|
||||
"notification_requests.dismiss": "تخطي",
|
||||
"notification_requests.dismiss_multiple": "رفض {count, plural, zero {}one {# طلب…} two {# طلب…} few {# طلبات…} many {# طلبات…} other {# طلبات…}}",
|
||||
"notification_requests.edit_selection": "تعديل",
|
||||
"notification_requests.exit_selection": "تمّ",
|
||||
"notification_requests.explainer_for_limited_account": "تم تصفية الإشعارات من هذا الحساب لأن الحساب تم تقييده من قبل مشرف.",
|
||||
"notification_requests.explainer_for_limited_remote_account": "تم تصفية الإشعارات من هذا الحساب لأنه أو لأن خادمه مقيد من قبل مشرف.",
|
||||
"notification_requests.maximize": "تكبير",
|
||||
"notification_requests.minimize_banner": "تصغير شريط الإشعارات المُصفاة",
|
||||
"notification_requests.notifications_from": "إشعارات من {name}",
|
||||
"notification_requests.title": "الإشعارات المصفاة",
|
||||
@@ -533,6 +568,7 @@
|
||||
"notifications.column_settings.filter_bar.category": "شريط التصفية السريعة",
|
||||
"notifications.column_settings.follow": "متابعُون جُدُد:",
|
||||
"notifications.column_settings.follow_request": "الطلبات الجديدة لِمتابَعتك:",
|
||||
"notifications.column_settings.group": "قم بتجميعهم",
|
||||
"notifications.column_settings.mention": "الإشارات:",
|
||||
"notifications.column_settings.poll": "نتائج استطلاع الرأي:",
|
||||
"notifications.column_settings.push": "الإشعارات",
|
||||
@@ -559,7 +595,9 @@
|
||||
"notifications.policy.accept": "قبول",
|
||||
"notifications.policy.accept_hint": "إظهار في الإشعارات",
|
||||
"notifications.policy.drop": "تجاهل",
|
||||
"notifications.policy.drop_hint": "التخلص منها بشكل دائم",
|
||||
"notifications.policy.filter": "تصفية",
|
||||
"notifications.policy.filter_hint": "إرسال إلى صندوق الإشعارات المصفاة",
|
||||
"notifications.policy.filter_limited_accounts_hint": "المحدودة من قبل مشرفي الخادم",
|
||||
"notifications.policy.filter_limited_accounts_title": "حسابات تحت الإشراف",
|
||||
"notifications.policy.filter_new_accounts.hint": "تم إنشاؤها منذ {days, plural, zero {}one {يوم واحد} two {يومان} few {# أيام} many {# أيام} other {# أيام}}",
|
||||
@@ -734,6 +772,8 @@
|
||||
"server_banner.is_one_of_many": "{domain} هو واحد من بين العديد من خوادم ماستدون المستقلة التي يمكنك استخدامها للمشاركة في الفديفرس.",
|
||||
"server_banner.server_stats": "إحصائيات الخادم:",
|
||||
"sign_in_banner.create_account": "أنشئ حسابًا",
|
||||
"sign_in_banner.follow_anyone": "تابع أي شخص من عالم الفدرالية وشاهد منشوراته بالترتيب الزمني. دون خوارزميات أو إعلانات أو عنواين مضللة.",
|
||||
"sign_in_banner.mastodon_is": "ماستودون هو أفضل وسيلة لمواكبة الأحداث.",
|
||||
"sign_in_banner.sign_in": "تسجيل الدخول",
|
||||
"sign_in_banner.sso_redirect": "تسجيل الدخول أو إنشاء حساب",
|
||||
"status.admin_account": "افتح الواجهة الإدارية لـ @{name}",
|
||||
@@ -815,6 +855,11 @@
|
||||
"upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
|
||||
"upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
|
||||
"upload_form.description": "وصف للمعاقين بصريا",
|
||||
"upload_form.drag_and_drop.instructions": "لحمل مرفق، اضغط على space أو Enter. وفي أثناء السحب، استخدم مفاتيح الأسهم لتنقل المرفق في أية اتجاه. اضغط على Space أو Enter مجدداً لتنقل المرفق إلى موضعه الجديد، أو اضغط Escape للإلغاء.",
|
||||
"upload_form.drag_and_drop.on_drag_cancel": "تم إلغاء السحب. تم إسقاط مرفقات الوسائط {item}.",
|
||||
"upload_form.drag_and_drop.on_drag_end": "تم إضافة المرفق {item}.",
|
||||
"upload_form.drag_and_drop.on_drag_over": "تم نقل مرفق الوسائط {item}.",
|
||||
"upload_form.drag_and_drop.on_drag_start": "تم إضافة المرفق {item}.",
|
||||
"upload_form.edit": "تعديل",
|
||||
"upload_form.thumbnail": "غيّر الصورة المصغرة",
|
||||
"upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"about.blocks": "Moderasiya olunan serverlər",
|
||||
"about.blocks": "Moderasiya edilmiş serverlər",
|
||||
"about.contact": "Əlaqə:",
|
||||
"about.disclaimer": "Mastodon pulsuz, açıq-mənbəli proqram təminatıdır və Mastodon gGmbH-nin əmtəə nişanıdır.",
|
||||
"about.domain_blocks.no_reason_available": "Səbəb naməlumdur",
|
||||
"about.domain_blocks.preamble": "Mastodon adətən fediversedəki hər hansısa bir serverdən olan məzmuna baxmaq və istifadəçilərlə qarşılıqlı əlaqədə olmaq imkanı verir. Bunlar bu serverdə edilmiş istisnalardır.",
|
||||
"about.disclaimer": "Mastodon ödənişsiz, açıq-mənbəli yazılımdır və Mastodon gGmbH-nin əmtəə nişanıdır.",
|
||||
"about.domain_blocks.no_reason_available": "Səbəb mövcud deyil",
|
||||
"about.domain_blocks.preamble": "Mastodon, adətən fediverse-dəki hər hansısa bir serverdən məzmuna baxmağınıza və istifadəçilərlə qarşılıqlı əlaqədə olmağınıza imkanı verir. Bunlar, bu serverdə edilmiş istisnalardır.",
|
||||
"about.domain_blocks.silenced.explanation": "Siz bu serverdəki profilləri və məzmunu xüsusi olaraq axtarmasanız və ya izləməsəniz ümumiyyətlə görməyəcəksiniz.",
|
||||
"about.domain_blocks.silenced.title": "Məhdudlaşdırılmış",
|
||||
"about.domain_blocks.suspended.explanation": "Bu serverdən heç bir data emal edilməyəcək, saxlanılmayacaq və ya mübadilə edilməyəcək və bu serverdən olan istifadəçilərlə hər hansı qarşılıqlı əlaqə qeyri-mümkün olacaq.",
|
||||
"about.domain_blocks.suspended.explanation": "Bu serverdəki heç bir veri emal edilməyəcək, saxlanılmayacaq və ya mübadilə edilməyəcək, bu serverdəki istifadəçilərlə hər hansısa bir qarşılıqlı əlaqə və ya ünsiyyət mümkünsüz olacaq.",
|
||||
"about.domain_blocks.suspended.title": "Qadağa qoyulub",
|
||||
"about.not_available": "Bu məlumat bu serverdə əlçatan edilməyib.",
|
||||
"about.powered_by": "{mastodon} tərəfindən təchiz edilən desentralizasiya edilmiş sosial media",
|
||||
@@ -23,7 +23,7 @@
|
||||
"account.copy": "Profil linkini kopyala",
|
||||
"account.direct": "@{name} istifadəçisini fərdi olaraq etiketlə",
|
||||
"account.disable_notifications": "@{name} paylaşım edəndə mənə bildiriş göndərməyi dayandır",
|
||||
"account.domain_blocked": "Domen bloklanıb",
|
||||
"account.domain_blocked": "Domen əngəllənib",
|
||||
"account.edit_profile": "Profili redaktə et",
|
||||
"account.enable_notifications": "@{name} paylaşım edəndə mənə bildiriş göndər",
|
||||
"account.endorse": "Profildə seçilmişlərə əlavə et",
|
||||
@@ -39,12 +39,12 @@
|
||||
"account.following_counter": "{count, plural, one {{counter} izləyir} other {{counter} izləyir}}",
|
||||
"account.follows.empty": "Bu istifadəçi hələ ki, heç kimi izləmir.",
|
||||
"account.go_to_profile": "Profilə get",
|
||||
"account.hide_reblogs": "@{name} istifadəçisindən olan gücləndirmələri gizlət",
|
||||
"account.hide_reblogs": "@{name} - təkrar paylaşımlarını gizlət",
|
||||
"account.in_memoriam": "Xatirə.",
|
||||
"account.joined_short": "Qoşulub",
|
||||
"account.languages": "Abunə olunmuş dilləri dəyiş",
|
||||
"account.link_verified_on": "Bu linkin dəqiqliyi {date} tarixində yoxlanılıb",
|
||||
"account.locked_info": "Bu hesabın məxfilik statusu kilidlənib. Hesabın sahibi onu kimin izləyə biləcəyini manual olaraq təyin edir.",
|
||||
"account.locked_info": "Bu hesabın məxfilik statusu kilidlənib. Sahibi, onu kimin izləyə biləcəyini manual olaraq incələyir.",
|
||||
"account.media": "Media",
|
||||
"account.mention": "@{name} istifadəçisini teq et",
|
||||
"account.moved_to": "{name} onun yeni hesabının artıq bu olduğunu bildirdi:",
|
||||
@@ -61,7 +61,7 @@
|
||||
"account.requested": "Təsdiq edilməsi gözlənilir. İzləmə sorğusunu ləğv etmək üçün kliklə",
|
||||
"account.requested_follow": "{name} sizi izləmək sorğusu göndərib",
|
||||
"account.share": "@{name} profilini paylaş",
|
||||
"account.show_reblogs": "@{name} istifadəçisindən olan gücləndirmələri göstər",
|
||||
"account.show_reblogs": "@{name} - təkrar paylaşımlarını göstər",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} paylaşım} other {{counter} paylaşım}}",
|
||||
"account.unblock": "@{name} blokunu aç",
|
||||
"account.unblock_domain": "{domain} domeninin blokunu aç",
|
||||
@@ -89,7 +89,7 @@
|
||||
"announcement.announcement": "Elan",
|
||||
"attachments_list.unprocessed": "(emal edilməyib)",
|
||||
"audio.hide": "Audionu gizlət",
|
||||
"block_modal.remote_users_caveat": "Biz {domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Bununla belə, bəzi serverlər blokları fərqli şəkildə idarə edə bildiyi üçün uyğunluğa zəmanət verilmir. İctimai paylaşımlar hələ də daxil olmayan istifadəçilərə görünə bilər.",
|
||||
"block_modal.remote_users_caveat": "{domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Ancaq, bəzi serverlər əngəlləmələri fərqli şəkildə idarə edə bilər deyə, qərarınıza uymağına zəmanət verilmir. Hər kəsə açıq göndərişlər, hələ də sistemə giriş etməmiş istifadəçilərə görünə bilər.",
|
||||
"block_modal.show_less": "Daha az göstər",
|
||||
"block_modal.show_more": "Daha çox göstər",
|
||||
"block_modal.they_cant_mention": "O səni teq edə bilməz və ya izləyə bilməz.",
|
||||
@@ -98,8 +98,8 @@
|
||||
"block_modal.title": "İstifadəçi bloklansın?",
|
||||
"block_modal.you_wont_see_mentions": "Onu teq edən postları görməyəcəksən.",
|
||||
"boost_modal.combo": "Növbəti dəfə bunu atlamaq üçün {combo} klikləyə bilərsən",
|
||||
"boost_modal.reblog": "Paylaşım gücləndirilsin?",
|
||||
"boost_modal.undo_reblog": "Paylaşımın gücləndirilməsi ləğv edilsin?",
|
||||
"boost_modal.reblog": "Paylaşım təkrar paylaşılsın?",
|
||||
"boost_modal.undo_reblog": "Təkrar paylaşım ləğv edilsin?",
|
||||
"bundle_column_error.copy_stacktrace": "Xəta hesabatını kopyala",
|
||||
"bundle_column_error.error.body": "Tələb olunan səhifəni göstərmək mümkün olmadı. Bu, kodumuzdakı səhv və ya brauzer uyğunluğu problemi ilə bağlı ola bilər.",
|
||||
"bundle_column_error.error.title": "Ah, yox!",
|
||||
@@ -110,6 +110,7 @@
|
||||
"bundle_column_error.routing.body": "Tələb olunan səhifəni tapmaq mümkün olmadı. Ünvan çubuğundakı URL-nin düzgün olduğuna əminsiniz?",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "Bağla",
|
||||
"bundle_modal_error.message": "Bu komponenti yükləyərkən nəsə səhv getdi.",
|
||||
"bundle_modal_error.retry": "Yenidən cəhd et",
|
||||
"closed_registrations.other_server_instructions": "Mastodon desentralizasiya edilmiş olduğu üçün başqa bir serverdə hesab yarada və hələ də bu serverdən istifadə edə bilərsiniz.",
|
||||
"closed_registrations_modal.description": "{domain} serverində hesab yaratmaq hazırda mümkün deyil, lakin nəzərə alın ki, Mastodondan istifadə etmək üçün xüsusi olaraq {domain} serverində hesaba ehtiyacınız yoxdur.",
|
||||
@@ -130,16 +131,16 @@
|
||||
"column.lists": "Siyahılar",
|
||||
"column.mutes": "Səssizləşdirilmiş istifadəçilər",
|
||||
"column.notifications": "Bildirişlər",
|
||||
"column.pins": "Bərkidilmiş paylaşımlar",
|
||||
"column.pins": "Sancılmış göndərişlər",
|
||||
"column.public": "Federasiya zaman qrafiki",
|
||||
"column_back_button.label": "Geriyə",
|
||||
"column_header.hide_settings": "Parametrləri gizlət",
|
||||
"column_header.hide_settings": "Ayarları gizlət",
|
||||
"column_header.moveLeft_settings": "Sütunu sola köçür",
|
||||
"column_header.moveRight_settings": "Sütunu sağa köçür",
|
||||
"column_header.pin": "Bərkit",
|
||||
"column_header.show_settings": "Parametrləri göstər",
|
||||
"column_header.show_settings": "Ayarları göstər",
|
||||
"column_header.unpin": "Bərkitmə",
|
||||
"column_subheading.settings": "Parametrlər",
|
||||
"column_subheading.settings": "Ayarlar",
|
||||
"community.column_settings.local_only": "Sadəcə lokalda",
|
||||
"community.column_settings.media_only": "Sadəcə media",
|
||||
"community.column_settings.remote_only": "Sadəcə uzaq serverlər",
|
||||
@@ -157,13 +158,14 @@
|
||||
"compose_form.poll.duration": "Sorğunun müddəti",
|
||||
"compose_form.poll.multiple": "Çoxlu cavab",
|
||||
"compose_form.poll.option_placeholder": "Seçim {number}",
|
||||
"compose_form.poll.single": "Birini seç",
|
||||
"compose_form.poll.switch_to_multiple": "Çoxsaylı cavablara icazə vermək üçün sorğunu redaktə et",
|
||||
"compose_form.poll.switch_to_single": "Tək cavaba icazə vermək üçün sorğunu redaktə et",
|
||||
"compose_form.poll.type": "Stil",
|
||||
"compose_form.publish": "Paylaş",
|
||||
"compose_form.publish_form": "Yeni paylaşım",
|
||||
"compose_form.publish_form": "Yeni göndəriş",
|
||||
"compose_form.reply": "Cavabla",
|
||||
"compose_form.save_changes": "Yenilə",
|
||||
"compose_form.save_changes": "Güncəllə",
|
||||
"compose_form.spoiler.marked": "Məzmun xəbərdarlığını sil",
|
||||
"compose_form.spoiler.unmarked": "Məzmun xəbərdarlığı əlavə et",
|
||||
"compose_form.spoiler_placeholder": "Məzmun xəbərdarlığı (məcburi deyil)",
|
||||
@@ -177,19 +179,19 @@
|
||||
"confirmations.delete_list.title": "Siyahı silinsin?",
|
||||
"confirmations.discard_edit_media.confirm": "Ləğv et",
|
||||
"confirmations.discard_edit_media.message": "Media təsvirində və ya önizləmədə yadda saxlanmamış dəyişiklikləriniz var, ləğv edilsin?",
|
||||
"confirmations.edit.confirm": "Redaktə et",
|
||||
"confirmations.edit.message": "Redaktə etmək hazırda tərtib etdiyiniz mesajın üzərinə yazacaq. Davam etmək istədiyinizə əminsiniz?",
|
||||
"confirmations.edit.title": "Paylaşım yenidə yazılsın?",
|
||||
"confirmations.edit.confirm": "Düzəliş et",
|
||||
"confirmations.edit.message": "İndi düzəliş etsəniz, hazırda tərtib etdiyiniz mesajın üzərinə yazılacaq. Davam etmək istədiyinizə əminsiniz?",
|
||||
"confirmations.edit.title": "Göndərişin üzərinə yazılsın?",
|
||||
"confirmations.logout.confirm": "Çıxış et",
|
||||
"confirmations.logout.message": "Çıxmaq istədiyinizə əminsiniz?",
|
||||
"confirmations.logout.title": "Çıxış edilsin?",
|
||||
"confirmations.mute.confirm": "Səssizləşdir",
|
||||
"confirmations.redraft.confirm": "Sil və qaralamaya köçür",
|
||||
"confirmations.redraft.message": "Bu paylaşımı silmək və qaralamaya köçürmək istədiyinizə əminsiniz? Bəyənmələr və gücləndirmələr itəcək və orijinal paylaşıma olan cavablar tənha qalacaq.",
|
||||
"confirmations.redraft.message": "Bu göndərişi silib yenidən qaralama kimi saxlamaq istədiyinizə əminsiniz? Sevimlilər və təkrar paylaşımlar silinəcək, orijinal göndərişə verilən cavablar isə əlaqəsiz qalacaq.",
|
||||
"confirmations.redraft.title": "Paylaşım silinsin & qaralamaya köçürülsün?",
|
||||
"confirmations.reply.confirm": "Cavabla",
|
||||
"confirmations.reply.message": "İndi cavab vermək hal-hazırda yazdığınız mesajın üzərinə yazacaq. Davam etmək istədiyinizə əminsiniz?",
|
||||
"confirmations.reply.title": "Paylaşım yenidən yazılsın?",
|
||||
"confirmations.reply.message": "İndi cavab versəniz, hazırda tərtib etdiyiniz mesajın üzərinə yazılacaq. Davam etmək istədiyinizə əminsiniz?",
|
||||
"confirmations.reply.title": "Göndərişin üzərinə yazılsın?",
|
||||
"confirmations.unfollow.confirm": "İzləmədən çıxar",
|
||||
"confirmations.unfollow.message": "{name} izləmədən çıxmaq istədiyinizə əminsiniz?",
|
||||
"confirmations.unfollow.title": "İstifadəçi izləmədən çıxarılsın?",
|
||||
@@ -202,15 +204,17 @@
|
||||
"conversation.with": "{names} ilə",
|
||||
"copy_icon_button.copied": "Mübadilə buferinə köçürüldü",
|
||||
"copypaste.copied": "Kopyalandı",
|
||||
"copypaste.copy_to_clipboard": "Kopyala",
|
||||
"copypaste.copy_to_clipboard": "Lövhəyə kopyala",
|
||||
"directory.federated": "Bilinən fediversedən",
|
||||
"directory.local": "Sadəcə {domain}",
|
||||
"directory.new_arrivals": "Yeni gələnlər",
|
||||
"directory.recently_active": "Bayaq aktiv olanlar",
|
||||
"disabled_account_banner.account_settings": "Hesab parametrləri",
|
||||
"disabled_account_banner.account_settings": "Hesab ayarları",
|
||||
"disabled_account_banner.text": "Sizin hesabınız {disabledAccount} hal-hazırda deaktiv edilib.",
|
||||
"dismissable_banner.community_timeline": "Bunlar, hesabları {domain} serverində yerləşən insanların ən son ictimai paylaşımlarıdır.",
|
||||
"dismissable_banner.dismiss": "Bağla",
|
||||
"dismissable_banner.explore_links": "Bunlar, bugünlərdə sosial dünyada ən çox paylaşılan yeni hekayələrdir. Fərqli insanların paylaşdığı yeni hekayələr daha üst sıralarda yer alır.",
|
||||
"dismissable_banner.explore_statuses": "Bunlar, bugünlərdə sosial dünyada ən çox maraq qazanan göndərişlərdir. Daha çox təkrar paylaşılan və sevimlilərə əlavə edilən yeni göndərişlər, daha üst sıralarda yer alır.",
|
||||
"domain_block_modal.block": "Serveri blokla",
|
||||
"domain_block_modal.block_account_instead": "@{name} istifadəçisini blokla",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Bu serverdən olan insanlar köhnə paylaşımlarınızla əlaqə qura bilər.",
|
||||
@@ -242,7 +246,7 @@
|
||||
"emoji_button.food": "Yemək və içki",
|
||||
"emoji_button.label": "Emoji daxil et",
|
||||
"emoji_button.nature": "Təbiət",
|
||||
"emoji_button.not_found": "Uyğun emoji tapılmadı",
|
||||
"emoji_button.not_found": "Uyuşan emoji tapılmadı",
|
||||
"emoji_button.objects": "Obyektlər",
|
||||
"emoji_button.people": "İnsanlar",
|
||||
"emoji_button.recent": "Tez-tez istifadə edilən",
|
||||
@@ -265,6 +269,588 @@
|
||||
"empty_column.follow_requests": "İzləmə sorğularınız yoxdur. Qəbul etdikdə burada görəcəksiniz.",
|
||||
"empty_column.followed_tags": "Heç bir heşteq izləmirsiniz. İzlədikdə burada görünəcək.",
|
||||
"empty_column.hashtag": "Bu heşteqdə hələ ki, heç nə yoxdur.",
|
||||
"empty_column.home": "Əsas zaman xəttiniz boşdur! Doldurmaq üçün bir neçə istifadəçini izləyin.",
|
||||
"empty_column.list": "Hələ bu siyahıda heç nə yoxdur. Bu siyahıdakı üzvlər yeni göndəriş paylaşdığı zaman burada görünəcək.",
|
||||
"empty_column.mutes": "Hələ heç bir istifadəçini səssizə almamısınız.",
|
||||
"empty_column.notification_requests": "Hamısı hazırdır! Burada heç nə yoxdur. Yeni bildiriş aldığınız zaman, ayarlarınıza görə burada görünəcək.",
|
||||
"empty_column.notifications": "Hələ heç bir bildirişiniz yoxdur. Başqaları sizinlə qarşılıqlı əlaqə qurduğu zaman, onu burada görəcəksiniz.",
|
||||
"empty_column.public": "Burada hələ heç nə yoxdur! Buranı doldurmaq üçün hər kəsə açıq bir şey yazın və ya digər serverlərdəki istifadəçiləri izləyin.",
|
||||
"error.unexpected_crash.explanation": "Kodumuzdakı bir xətaya, ya da brauzer uyumluluq probleminə görə, bu səhifə düzgün nümayiş etdirilə bilmədi.",
|
||||
"error.unexpected_crash.explanation_addons": "Bu səhifə düzgün nümayiş etdirilə bilmədi. Bu xəta, yəqin ki, brauzer əlavəsi və ya avtomatik tərcümə alətlərindən qaynaqlanır.",
|
||||
"error.unexpected_crash.next_steps": "Səhifəni təzələməyi sınayın. Bu kömək etməzsə, Mastodon-u başqa bir brauzer və ya yerli tətbiq vasitəsilə istifadə edə bilərsiniz.",
|
||||
"error.unexpected_crash.next_steps_addons": "Onları sıradan çıxartmağı və səhifəni təzələməyi sınayın. Bu kömək etməzsə, Mastodon-u başqa bir brauzer və ya yerli tətbiq vasitəsilə istifadə edə bilərsiniz.",
|
||||
"errors.unexpected_crash.report_issue": "Problemi bildir",
|
||||
"explore.search_results": "Axtarış nəticələri",
|
||||
"explore.suggested_follows": "İnsanlar",
|
||||
"explore.title": "Kəşf et",
|
||||
"explore.trending_links": "Xəbərlər",
|
||||
"explore.trending_statuses": "Göndərişlər",
|
||||
"explore.trending_tags": "Mövzu etiketləri",
|
||||
"filter_modal.added.context_mismatch_explanation": "Bu filtr kateqoriyası, bu göndərişdə erişdiyiniz kontekstə aid deyil. Əgər göndərişin bu kontekstdə də filtrlənməsini istəyirsinizsə, filtrə düzəliş etməyiniz lazımdır.",
|
||||
"filter_modal.added.context_mismatch_title": "Kontekst uyuşmur!",
|
||||
"filter_modal.added.expired_explanation": "Bu filtr kateqoriyasının vaxtı bitib, filtri tətbiq etmək üçün bitmə tarixini dəyişdirməlisiniz.",
|
||||
"filter_modal.added.expired_title": "Vaxtı bitmiş filtr!",
|
||||
"filter_modal.added.review_and_configure": "Bu filt kateqoriyasını incələmək və daha detallı konfiqurasiya etmək üçün {settings_link} ünvanına gedin.",
|
||||
"filter_modal.added.review_and_configure_title": "Filtr ayarları",
|
||||
"filter_modal.added.settings_link": "ayarlar səhifəsi",
|
||||
"filter_modal.added.short_explanation": "Bu göndəriş, aşağıdakı filtr kateqoriyasına əlavə edilib: {title}.",
|
||||
"filter_modal.added.title": "Filtr əlavə edilib!",
|
||||
"filter_modal.select_filter.context_mismatch": "bu kontektsə tətbiq olunmur",
|
||||
"filter_modal.select_filter.expired": "müddəti bitib",
|
||||
"filter_modal.select_filter.prompt_new": "Yeni kateqoriya: {name}",
|
||||
"filter_modal.select_filter.search": "Axtar və ya yarat",
|
||||
"filter_modal.select_filter.subtitle": "Mövcud bir kateqoriyanı istifadə et, ya da yenisini yarat",
|
||||
"filter_modal.select_filter.title": "Bu göndərişi filtrlə",
|
||||
"filter_modal.title.status": "Bir göndərişi filtrlə",
|
||||
"filter_warning.matches_filter": "“<span>{title}</span>” filtri ilə uyuşur",
|
||||
"filtered_notifications_banner.pending_requests": "Tanıdığınız {count, plural, =0 {heç kimdən} one {bir şəxsdən} other {# şəxsdən}}",
|
||||
"filtered_notifications_banner.title": "Filtrlənmiş bildirişlər",
|
||||
"firehose.all": "Hamısı",
|
||||
"firehose.local": "Bu server",
|
||||
"firehose.remote": "Digər serverlər",
|
||||
"follow_request.authorize": "Səlahiyyət ver",
|
||||
"follow_request.reject": "Rədd et",
|
||||
"follow_requests.unlocked_explanation": "Hesabınız kilidli olmasa da, {domain} heyəti bu hesabların izləmə tələblərini manual olaraq incələmək istəyə biləcəyinizi düşündü.",
|
||||
"follow_suggestions.curated_suggestion": "Heyətin seçimi",
|
||||
"follow_suggestions.dismiss": "Təkrar göstərmə",
|
||||
"follow_suggestions.featured_longer": "{domain} komandası tərəfindən əllə seçildi",
|
||||
"follow_suggestions.friends_of_friends_longer": "İzlədiyiniz insanlar arasında məşhur",
|
||||
"follow_suggestions.hints.featured": "Bu profil {domain} komandası tərəfindən əllə seçilib.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Bu profil izlədiyiniz insanlar arasında populyardır.",
|
||||
"follow_suggestions.hints.most_followed": "Bu profil {domain} serverində ən çox izlənilənlərdən biridir."
|
||||
"follow_suggestions.hints.most_followed": "Bu profil {domain} serverində ən çox izlənilənlərdən biridir.",
|
||||
"follow_suggestions.hints.most_interactions": "Bu profil son zamanlar {domain} üzərində çox diqqət çəkir.",
|
||||
"follow_suggestions.hints.similar_to_recently_followed": "Bu profil, son vaxtlar izlədiyiniz profillərə bənzəyir.",
|
||||
"follow_suggestions.personalized_suggestion": "Fərdiləşdirilmiş təklif",
|
||||
"follow_suggestions.popular_suggestion": "Məşhur təklif",
|
||||
"follow_suggestions.popular_suggestion_longer": "{domain} üzərində məşhur",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Son zaman izlədiyiniz profillərə oxşar",
|
||||
"follow_suggestions.view_all": "Hamısına bax",
|
||||
"follow_suggestions.who_to_follow": "İzləyə bilərsən",
|
||||
"followed_tags": "İzlənilən mövzu etiketləri",
|
||||
"footer.about": "Haqqında",
|
||||
"footer.directory": "Profil kataloqu",
|
||||
"footer.get_app": "Tətbiqi əldə et",
|
||||
"footer.invite": "İnsanları dəvət et",
|
||||
"footer.keyboard_shortcuts": "Klaviatura qısayolları",
|
||||
"footer.privacy_policy": "Gizlilik siyasəti",
|
||||
"footer.source_code": "Mənbə koduna bax",
|
||||
"footer.status": "Status",
|
||||
"generic.saved": "Saxlanıldı",
|
||||
"getting_started.heading": "Başlayaq",
|
||||
"hashtag.column_header.tag_mode.all": "və {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "və ya {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "{additional} olmadan",
|
||||
"hashtag.column_settings.select.no_options_message": "Heç bir təklif tapılmadı",
|
||||
"hashtag.column_settings.select.placeholder": "Mövzu etiketlərini daxil edin…",
|
||||
"hashtag.column_settings.tag_mode.all": "Bunların hamısı",
|
||||
"hashtag.column_settings.tag_mode.any": "Bunlardan hər hansısa biri",
|
||||
"hashtag.column_settings.tag_mode.none": "Bunların heç biri",
|
||||
"hashtag.column_settings.tag_toggle": "Bu sütun üçün əlavə etiketləri daxil et",
|
||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} iştirakçı} other {{counter} iştirakçı}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||
"hashtag.counter_by_uses_today": "Bu gün {count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||
"hashtag.follow": "Mövzu etiketini izlə",
|
||||
"hashtag.unfollow": "Mövzu etiketini izləmə",
|
||||
"hashtags.and_other": "…və daha {count, plural, one {}other {# ədəd}}",
|
||||
"hints.profiles.followers_may_be_missing": "Bu profilin izləyiciləri əskik ola bilər.",
|
||||
"hints.profiles.follows_may_be_missing": "Bu profilin izləyənləri əskik ola bilər.",
|
||||
"hints.profiles.posts_may_be_missing": "Bu profilin bəzi göndərişləri əskik ola bilər.",
|
||||
"hints.profiles.see_more_followers": "{domain} üzərində daha çox izləyici gör",
|
||||
"hints.profiles.see_more_follows": "{domain} üzərində izlənilən gör",
|
||||
"hints.profiles.see_more_posts": "{domain} üzərində daha çox göndəriş gör",
|
||||
"hints.threads.replies_may_be_missing": "Digər serverlərdən gələn cavablar əskik ola bilər.",
|
||||
"hints.threads.see_more": "{domain} üzərində daha çox cavabı gör",
|
||||
"home.column_settings.show_reblogs": "Təkrar paylaşmaları göstər",
|
||||
"home.column_settings.show_replies": "Cavabları göstər",
|
||||
"home.hide_announcements": "Elanları gizlət",
|
||||
"home.pending_critical_update.body": "Lütfən Mastodon serverinizi mümkün olan ən qısa müddətdə güncəlləyin!",
|
||||
"home.pending_critical_update.link": "Güncəlləmələrə bax",
|
||||
"home.pending_critical_update.title": "Kritik güvənlik güncəlləməsi mövcuddur!",
|
||||
"home.show_announcements": "Elanları göstər",
|
||||
"ignore_notifications_modal.disclaimer": "Mastodon, bildirişlərini yox saydığınız istifadəçiləri məlumatlandırmır. Bildirişləri yox saymaq, mesajların göndərilməsini dayandırmayacaq.",
|
||||
"ignore_notifications_modal.filter_instead": "Əvəzinə filtrlə",
|
||||
"ignore_notifications_modal.filter_to_act_users": "Hələ də istifadəçiləri qəbul edə, rədd edə və ya bildirə bilərsiniz",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrləmə, mümkün çaşqınlığın qarşısını almağa kömək edir.",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "Filtrlənmiş bildirişləri ayrı-ayrı incələyə bilərsiniz",
|
||||
"ignore_notifications_modal.ignore": "Bildirişləri yox say",
|
||||
"ignore_notifications_modal.limited_accounts_title": "Moderasiya edilmiş hesabların bildirişləri yox sayılsın?",
|
||||
"ignore_notifications_modal.new_accounts_title": "Yeni hesabların bildirişləri yox sayılsın?",
|
||||
"ignore_notifications_modal.not_followers_title": "Sizi izləməyən şəxslərin bildirişləri yox sayılsın?",
|
||||
"ignore_notifications_modal.not_following_title": "İzləmədiyiniz şəxslərin bildirişləri yox sayılsın?",
|
||||
"ignore_notifications_modal.private_mentions_title": "İstənilməyən Şəxsi Adçəkmələrdən gələn bildirişlər yox sayılsın?",
|
||||
"interaction_modal.description.reblog": "Mastodon hesabınızla bu göndərişi təkrar paylaşaraq öz izləyicilərinizlə bölüşə bilərsiniz.",
|
||||
"interaction_modal.no_account_yet": "Mastodon hesabı yoxdur?",
|
||||
"interaction_modal.on_another_server": "Fərqli bir serverdə",
|
||||
"interaction_modal.on_this_server": "Bu serverdə",
|
||||
"interaction_modal.sign_in": "Bu serverə giriş etməmisiniz. Hesabınız harada yerləşir?",
|
||||
"interaction_modal.title.favourite": "{name} - göndərişini sevimlilərə əlavə et",
|
||||
"interaction_modal.title.follow": "{name} - izlə",
|
||||
"interaction_modal.title.reblog": "{name} - göndərişini təkrar paylaş",
|
||||
"interaction_modal.title.reply": "{name} - göndərişinə cavab ver",
|
||||
"intervals.full.days": "{number, plural, one {# gün} other {# gün}}",
|
||||
"intervals.full.hours": "{number, plural, one {# saat} other {# saat}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# dəqiqə} other {# dəqiqə}}",
|
||||
"keyboard_shortcuts.back": "Geri get",
|
||||
"keyboard_shortcuts.blocked": "Əngəllənən istifadəçilərin siyahısını aç",
|
||||
"keyboard_shortcuts.boost": "Göndərişi təkrar paylaş",
|
||||
"keyboard_shortcuts.column": "Sütuna fokuslan",
|
||||
"keyboard_shortcuts.compose": "Mətn yazma sahəsinə fokuslan",
|
||||
"keyboard_shortcuts.description": "Açıqlama",
|
||||
"keyboard_shortcuts.direct": "şəxsi adçəkmələr sütununu açmaq üçün",
|
||||
"keyboard_shortcuts.down": "Siyahıda aşağı daşı",
|
||||
"keyboard_shortcuts.enter": "Göndərişi aç",
|
||||
"keyboard_shortcuts.favourite": "Göndərişi sevimlilərə əlavə et",
|
||||
"keyboard_shortcuts.favourites": "Sevimli siyahını aç",
|
||||
"keyboard_shortcuts.heading": "Klaviatura qısayolları",
|
||||
"keyboard_shortcuts.home": "Əsas ekran zaman xəttini aç",
|
||||
"keyboard_shortcuts.hotkey": "Qısayol düyməsi",
|
||||
"keyboard_shortcuts.legend": "Bu əfsanəni nümayiş etdir",
|
||||
"keyboard_shortcuts.local": "Lokal zaman xəttini aç",
|
||||
"keyboard_shortcuts.mention": "Müəllifin adını çək",
|
||||
"keyboard_shortcuts.muted": "Səssizdəki istifadəçilərin siyahısını aç",
|
||||
"keyboard_shortcuts.my_profile": "Profilinizi açın",
|
||||
"keyboard_shortcuts.notifications": "Bildirişlər sütununu aç",
|
||||
"keyboard_shortcuts.open_media": "Medianı aç",
|
||||
"keyboard_shortcuts.pinned": "Sancılmış göndərişlərin siyahısını aç",
|
||||
"keyboard_shortcuts.profile": "Müəllifin profilini aç",
|
||||
"keyboard_shortcuts.reply": "Göndərişə cavab ver",
|
||||
"keyboard_shortcuts.requests": "İzləmə istəyi siyahısını aç",
|
||||
"keyboard_shortcuts.search": "Axtarış çubuğuna fokuslan",
|
||||
"keyboard_shortcuts.spoilers": "CW xanasını göstər/gizlət",
|
||||
"keyboard_shortcuts.start": "\"Başlayaq\" sütununu aç",
|
||||
"keyboard_shortcuts.toggle_hidden": "CW arxasındakı mətni göstər/gizlət",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Medianı göstər/gizlət",
|
||||
"keyboard_shortcuts.toot": "Yeni bir göndəriş başlat",
|
||||
"keyboard_shortcuts.unfocus": "Fokusu göndəriş yazma xanasından/axtarışdan götür",
|
||||
"keyboard_shortcuts.up": "Siyahıda yuxarı daşı",
|
||||
"lightbox.close": "Bağla",
|
||||
"lightbox.next": "Növbəti",
|
||||
"lightbox.previous": "Əvvəlki",
|
||||
"lightbox.zoom_in": "Həqiqi ölçüyə qayıt",
|
||||
"lightbox.zoom_out": "Sığacaq şəkildə yaxınlaşdır",
|
||||
"limited_account_hint.action": "Yenə də profili göstər",
|
||||
"limited_account_hint.title": "Bu profil, {domain} moderatorları tərəfindən gizlədildi.",
|
||||
"link_preview.author": "Müəllif: {name}",
|
||||
"link_preview.more_from_author": "{name} - daha çox",
|
||||
"link_preview.shares": "{count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||
"lists.account.add": "Siyahıya əlavə et",
|
||||
"lists.account.remove": "Siyahıdan çıxart",
|
||||
"lists.delete": "Siyahını sil",
|
||||
"lists.edit": "Siyahıya düzəliş et",
|
||||
"lists.edit.submit": "Başlığı dəyişdir",
|
||||
"lists.exclusive": "Bu göndərişləri Əsas səhifədən gizlət",
|
||||
"lists.new.create": "Siyahı əlavə et",
|
||||
"lists.new.title_placeholder": "Yeni siyahı başlığı",
|
||||
"lists.replies_policy.followed": "İstənilən izlənilən istifadəçi",
|
||||
"lists.replies_policy.list": "Siyahıdakı üzvlər",
|
||||
"lists.replies_policy.none": "Heç kim",
|
||||
"lists.replies_policy.title": "Cavabları göstər:",
|
||||
"lists.search": "İzlədiyiniz insanların arasında axtarın",
|
||||
"lists.subheading": "Siyahılarınız",
|
||||
"load_pending": "{count, plural, one {# yeni element} other {# yeni element}}",
|
||||
"loading_indicator.label": "Yüklənir…",
|
||||
"media_gallery.hide": "Gizlət",
|
||||
"moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına keçdiyiniz üçün hazırda sıradan çıxarılıb.",
|
||||
"mute_modal.hide_from_notifications": "Bildirişlərdə gizlət",
|
||||
"mute_modal.hide_options": "Seçimləri gizlət",
|
||||
"mute_modal.indefinite": "Mən səsini açana qədər",
|
||||
"mute_modal.show_options": "Seçimləri göstər",
|
||||
"mute_modal.they_can_mention_and_follow": "Sizin adınızı çəkə və sizi izləyə bilər, ancaq siz onları görə bilməzsiniz.",
|
||||
"mute_modal.they_wont_know": "Onlar, səssizə alındıqlarını bilməyəcəklər.",
|
||||
"mute_modal.title": "İstifadəçi səssizə alınsın?",
|
||||
"mute_modal.you_wont_see_mentions": "Onların adı çəkilən göndərişləri görməyəcəksiniz.",
|
||||
"mute_modal.you_wont_see_posts": "Onlar hələ də göndərişlərinizi görə biləcək, ancaq onların göndərişlərini görməyəcəksiniz.",
|
||||
"navigation_bar.about": "Haqqında",
|
||||
"navigation_bar.administration": "Administrasiya",
|
||||
"navigation_bar.advanced_interface": "Qabaqcıl veb interfeysində aç",
|
||||
"navigation_bar.blocks": "Əngəllənmiş istifadəçilər",
|
||||
"navigation_bar.bookmarks": "Əlfəcinlər",
|
||||
"navigation_bar.community_timeline": "Yerli zaman xətti",
|
||||
"navigation_bar.compose": "Yeni göndəriş yaz",
|
||||
"navigation_bar.direct": "Şəxsi adçəkmələr",
|
||||
"navigation_bar.discover": "Kəşf et",
|
||||
"navigation_bar.domain_blocks": "Əngəllənmiş domenlər",
|
||||
"navigation_bar.explore": "Kəşf et",
|
||||
"navigation_bar.favourites": "Sevimlilər",
|
||||
"navigation_bar.filters": "Səssizə alınmış sözlər",
|
||||
"navigation_bar.follow_requests": "İzləmə istəkləri",
|
||||
"navigation_bar.followed_tags": "İzlənilən mövzu etiketləri",
|
||||
"navigation_bar.follows_and_followers": "İzlənilənlər və izləyicilər",
|
||||
"navigation_bar.lists": "Siyahılar",
|
||||
"navigation_bar.logout": "Çıxış",
|
||||
"navigation_bar.moderation": "Moderasiya",
|
||||
"navigation_bar.mutes": "Səssizə alınmış istifadəçilər",
|
||||
"navigation_bar.opened_in_classic_interface": "Göndərişlər, hesablar və digər müəyyən səhifələr klassik veb interfeysində ilkin olaraq açılır.",
|
||||
"navigation_bar.personal": "Fərdi",
|
||||
"navigation_bar.pins": "Sancılmış göndərişlər",
|
||||
"navigation_bar.preferences": "Tərcihlər",
|
||||
"navigation_bar.search": "Axtar",
|
||||
"navigation_bar.security": "Təhlükəsizlik",
|
||||
"not_signed_in_indicator.not_signed_in": "Bu resursa erişmək üçün giriş etməlisiniz.",
|
||||
"notification.admin.report": "{name} şikayət etdi: {target}",
|
||||
"notification.admin.report_account": "{name}, {category} üçün şikayət etdi: {target} - {count, plural, one {bir göndəriş} other {# göndəriş}}",
|
||||
"notification.admin.report_account_other": "{name} şikayət etdi: {target} - {count, plural, one {bir göndəriş} other {# göndəriş}}",
|
||||
"notification.admin.report_statuses": "{name}, {category} üçün şikayət etdi: {target}",
|
||||
"notification.admin.report_statuses_other": "{name} şikayət etdi: {target}",
|
||||
"notification.admin.sign_up": "{name} qeydiyyatdan keçib",
|
||||
"notification.admin.sign_up.name_and_others": "{name} və digər {count, plural, one {# nəfər} other {# nəfər}} qeydiyyatdan keçib",
|
||||
"notification.favourite": "{name} göndərişinizi sevimlilərinə əlavə etdi",
|
||||
"notification.favourite.name_and_others_with_link": "{name} və digər <a>{count, plural, one {# nəfər} other {# nəfər}}</a> göndərişinizi sevimlilərinə əlavə etdi",
|
||||
"notification.follow": "{name} sizi izləyir",
|
||||
"notification.follow.name_and_others": "{name} və digər <a>{count, plural, one {# nəfər} other {# nəfər}}</a> sizi izləyir",
|
||||
"notification.follow_request": "{name} sizi izləmək üçün istək göndərdi",
|
||||
"notification.follow_request.name_and_others": "{name} və digər {count, plural, one {# nəfər} other {# nəfər}} sizi izləmək üçün istək göndərdi",
|
||||
"notification.label.mention": "Adçəkmə",
|
||||
"notification.label.private_mention": "Şəxsi adçəkmə",
|
||||
"notification.label.private_reply": "Şəxsi cavab",
|
||||
"notification.label.reply": "Cavab",
|
||||
"notification.mention": "Adçəkmə",
|
||||
"notification.mentioned_you": "{name} adınızı çəkdi",
|
||||
"notification.moderation-warning.learn_more": "Daha ətraflı",
|
||||
"notification.moderation_warning": "Bir moderasiya xəbərdarlığı aldınız",
|
||||
"notification.moderation_warning.action_delete_statuses": "Bəzi göndərişləriniz silindi.",
|
||||
"notification.moderation_warning.action_disable": "Hesabınız sıradan çıxarılıb.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Bəzi göndərişləriniz həssas olaraq işarələnib.",
|
||||
"notification.moderation_warning.action_none": "Hesabınız bir moderasiya xəbərdarlığı aldı.",
|
||||
"notification.moderation_warning.action_sensitive": "Göndərişləriniz artıq həssas olaraq işarələnəcək.",
|
||||
"notification.moderation_warning.action_silence": "Hesabınız məhdudlaşdırılıb.",
|
||||
"notification.moderation_warning.action_suspend": "Hesabınızın fəaliyyəti dayandırılıb.",
|
||||
"notification.own_poll": "Anketiniz bitdi",
|
||||
"notification.poll": "Səs verdiyiniz anket bitdi",
|
||||
"notification.reblog": "{name} göndərişinizi təkrar paylaşdı",
|
||||
"notification.reblog.name_and_others_with_link": "{name} və <a>{count, plural, one {digər # nəfər} other {digər # nəfər}}</a> göndərişinizi təkrar paylaşdı",
|
||||
"notification.relationships_severance_event": "{name} ilə bağlantı qopdu",
|
||||
"notification.relationships_severance_event.account_suspension": "{from} admini {target} fəaliyyətini dayandırıb, bu da o deməkdir ki, artıq onlardan güncəlləmələr ala və ya onlarla qarşılıqlı əlaqə qura bilməyəcəyiniz.",
|
||||
"notification.relationships_severance_event.domain_block": "{target}, {from} admini tərəfindən əngəllənib, buna {followersCount} izləyiciniz və izlədiyiniz {followingCount, plural, one {# hesab} other {# hesab}} daxildir.",
|
||||
"notification.relationships_severance_event.learn_more": "Daha ətraflı",
|
||||
"notification.relationships_severance_event.user_domain_block": "{target} əngəlləmisiniz, bununla {followersCount} izləyiciniz və izlədiyiniz {followingCount, plural, one {# hesab} other {# hesab}} silinib.",
|
||||
"notification.status": "{name} indicə paylaşdı",
|
||||
"notification.update": "{name} bir göndərişə düzəliş etdi",
|
||||
"notification_requests.accept": "Qəbul et",
|
||||
"notification_requests.accept_multiple": "{count, plural, one {# istəyi qəbul et…} other {# istəyi qəbul et…}}",
|
||||
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {İstəyi qəbul et} other {İstəkləri qəbul et}}",
|
||||
"notification_requests.confirm_accept_multiple.message": "{count, plural, one {Bir bildiriş istəyini} other {# bildiriş istəklərini}} qəbul etmək üzrəsiniz. Davam etmək istədiyinizə əminsiniz?",
|
||||
"notification_requests.confirm_accept_multiple.title": "Bildiriş istəkləri qəbul edilsin?",
|
||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {İstəyi rədd et} other {İstəkləri rədd et}}",
|
||||
"notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {bir bildiriş sorğusunu} other {# bildiriş sorğusunu}} bağlamaq üzrəsiniz. {count, plural, one {Ona} other {Onlara}} yenidən asanlıqla erişə bilməyəcəksiniz. Davam etmək istədiyinizə əminsiniz?",
|
||||
"notification_requests.confirm_dismiss_multiple.title": "Bildiriş istəklərinə rədd cavabı verilsin?",
|
||||
"notification_requests.dismiss": "Rədd et",
|
||||
"notification_requests.dismiss_multiple": "{count, plural, one {# istəyi rədd et…} other {# istəyi rədd et…}}",
|
||||
"notification_requests.edit_selection": "Düzəliş et",
|
||||
"notification_requests.exit_selection": "Hazırdır",
|
||||
"notification_requests.explainer_for_limited_account": "Hesab, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
||||
"notification_requests.explainer_for_limited_remote_account": "Hesab və ya onun serveri, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
||||
"notification_requests.maximize": "Böyüt",
|
||||
"notification_requests.minimize_banner": "Filtrlənmiş bildirişlər bannerini kiçilt",
|
||||
"notification_requests.notifications_from": "{name} - bildirişləri",
|
||||
"notification_requests.title": "Filtrlənmiş bildirişlər",
|
||||
"notification_requests.view": "Bildirişlərə bax",
|
||||
"notifications.clear": "Bildirişləri təmizlə",
|
||||
"notifications.clear_confirmation": "Bütün bildirişlərinizi həmişəlik təmizləmək istədiyinizə əminsiniz?",
|
||||
"notifications.clear_title": "Bildirişlər təmizlənsin?",
|
||||
"notifications.column_settings.admin.report": "Yeni hesabatlar:",
|
||||
"notifications.column_settings.admin.sign_up": "Yeni qeydiyyatlar:",
|
||||
"notifications.column_settings.alert": "Masaüstü bildirişlər",
|
||||
"notifications.column_settings.favourite": "Sevimlilər:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Bütün kateqoriyaları nümayiş etdir",
|
||||
"notifications.column_settings.filter_bar.category": "Cəld filtr çubuğu",
|
||||
"notifications.column_settings.follow": "Yeni izləyicilər:",
|
||||
"notifications.column_settings.follow_request": "Yeni izləmə istəkləri:",
|
||||
"notifications.column_settings.group": "Qrup",
|
||||
"notifications.column_settings.mention": "Adçəkmələr:",
|
||||
"notifications.column_settings.poll": "Anket nəticələri:",
|
||||
"notifications.column_settings.push": "Ani bildirişlər",
|
||||
"notifications.column_settings.reblog": "Təkrar paylaşmalar:",
|
||||
"notifications.column_settings.show": "Sütunda göstər",
|
||||
"notifications.column_settings.sound": "Səs oxut",
|
||||
"notifications.column_settings.status": "Yeni göndərişlər:",
|
||||
"notifications.column_settings.unread_notifications.category": "Oxunmamış bildirişlər",
|
||||
"notifications.column_settings.unread_notifications.highlight": "Oxunmamış bildirişləri vurğula",
|
||||
"notifications.column_settings.update": "Düzəlişlər:",
|
||||
"notifications.filter.all": "Hamısı",
|
||||
"notifications.filter.boosts": "Təkrar paylaşmalar",
|
||||
"notifications.filter.favourites": "Sevimlilər",
|
||||
"notifications.filter.follows": "İzlənilənlər",
|
||||
"notifications.filter.mentions": "Adçəkmələr",
|
||||
"notifications.filter.polls": "Anket nəticələri",
|
||||
"notifications.filter.statuses": "İzlədiyiniz şəxslərdən güncəlləmələr",
|
||||
"notifications.grant_permission": "İcazəni ver.",
|
||||
"notifications.group": "{count} bildiriş",
|
||||
"notifications.mark_as_read": "Hər bir bildiriş oxunmuş olaraq işarələ",
|
||||
"notifications.permission_denied": "Brauzer icazələri istəyinə daha əvvəl rədd cavabı verildiyi üçün masaüstü bildirişləri əlçatmazdır",
|
||||
"notifications.permission_denied_alert": "Brauzer icazəsinə daha əvvəl rədd cavabı verildiyi üçün masaüstü bildirişləri fəallaşdırıla bilmir",
|
||||
"notifications.permission_required": "Tələb olunan icazə verilmədiyi üçün masaüstü bildirişləri əlçatmazdır.",
|
||||
"notifications.policy.accept": "Qəbul et",
|
||||
"notifications.policy.accept_hint": "Bildirişlərdə göstər",
|
||||
"notifications.policy.drop": "Yox say",
|
||||
"notifications.policy.filter": "Filtr",
|
||||
"notifications.policy.filter_hint": "Filtrlənmiş bildirişlər gələn qutusuna göndər",
|
||||
"notifications.policy.filter_limited_accounts_hint": "Server moderatorları tərəfindən məhdudlaşdırılıb",
|
||||
"notifications.policy.filter_limited_accounts_title": "Moderasiya edilmiş hesablar",
|
||||
"notifications.policy.filter_new_accounts.hint": "Son {days, plural, one {bir gündə} other {# gündə}} yaradıldı",
|
||||
"notifications.policy.filter_new_accounts_title": "Yeni hesablar",
|
||||
"notifications.policy.filter_not_followers_hint": "Sizi {days, plural, one {bir gündən} other {# gündən}} az müddətdir izləyən insanlar daxildir",
|
||||
"notifications.policy.filter_not_followers_title": "Sizi izləməyən insanlar",
|
||||
"notifications.policy.filter_not_following_hint": "Onları manual qəbul edənə qədər",
|
||||
"notifications.policy.filter_not_following_title": "İzləmədiyiniz insanlar",
|
||||
"notifications.policy.title": "Bildirişləri idarə et…",
|
||||
"notifications_permission_banner.enable": "Masaüstü bildirişləri fəallaşdır",
|
||||
"notifications_permission_banner.title": "Heç nəyi buraxmayın",
|
||||
"onboarding.action.back": "Məni geri götür",
|
||||
"onboarding.actions.back": "Məni geri götür",
|
||||
"onboarding.actions.go_to_explore": "Trendlərə bax",
|
||||
"onboarding.actions.go_to_home": "Əsas səhifə lentinə get",
|
||||
"onboarding.compose.template": "Salam #Mastodon!",
|
||||
"onboarding.profile.discoverable": "Profilimi kəşf edilə bilən et",
|
||||
"onboarding.profile.discoverable_hint": "Mastodon-da kəşf edilə bilməni aktivləşdirsəniz, göndərişləriniz axtarış nəticələrində və trendlərdə görünə bilər və profiliniz sizinlə oxşar maraqlara sahib şəxslərə təklif edilə bilər.",
|
||||
"onboarding.profile.display_name": "Ekran adı",
|
||||
"onboarding.profile.display_name_hint": "Tam adınız və ya ləqəbiniz…",
|
||||
"onboarding.profile.lead": "Bunu daha sonra ayarlarda tamamlaya bilərsiniz, hətta daha çox özəlləşdirmə seçimləri də mövcuddur.",
|
||||
"onboarding.profile.note": "Bioqrafiya",
|
||||
"onboarding.profile.note_hint": "Digər insanların @adını_çəkə və ya #mövzu_etiketləri istifadə edə bilərsiniz…",
|
||||
"onboarding.profile.save_and_continue": "Saxla və davam et",
|
||||
"onboarding.profile.title": "Profili ayarla",
|
||||
"onboarding.profile.upload_avatar": "Profil şəkli yüklə",
|
||||
"onboarding.profile.upload_header": "Profil başlığı yüklə",
|
||||
"onboarding.share.lead": "İnsanlara sizi Mastodon-da necə tapa biləcəklərini deyin!",
|
||||
"onboarding.share.message": "#Mastodon istifadəçi adım {username}! {url} üzərindən məni izləyin",
|
||||
"onboarding.share.next_steps": "Mümkün növbəti addımlar:",
|
||||
"onboarding.share.title": "Profilinizi paylaşın",
|
||||
"onboarding.start.lead": "İndi siz bir alqoritmin deyil, öz təcrübənizi idarə etdiyiniz unikal, mərkəzləşdirilməmiş sosial media platforması olan Mastodonun bir parçasısınız. Gəlin sizi bu yeni sosial sərhədə başlayaq:",
|
||||
"onboarding.start.skip": "Başlamaq üçün köməyə ehtiyacınız yoxdur?",
|
||||
"onboarding.start.title": "Hazırsınız!",
|
||||
"onboarding.steps.follow_people.body": "Mastodon-da əsas məqsəd diqqətçəkən insanları izləməkdir.",
|
||||
"onboarding.steps.follow_people.title": "Əsas səhifə lentinizi fərdiləşdirin",
|
||||
"onboarding.steps.publish_status.body": "Mətn, foto, video və ya anketlərlə dünyaya salam deyin {emoji}",
|
||||
"onboarding.steps.publish_status.title": "İlk göndərişinizi yaradın",
|
||||
"onboarding.steps.setup_profile.body": "Profilinizi tam dolduraraq qarşılıqlı əlaqələrinizi artırın.",
|
||||
"onboarding.steps.setup_profile.title": "Profilinizi fərdiləşdirin",
|
||||
"onboarding.steps.share_profile.body": "Dostlarınıza sizi Mastodon-da necə tapa biləcəklərini deyin",
|
||||
"onboarding.steps.share_profile.title": "Mastodon profilinizi paylaşın",
|
||||
"password_confirmation.exceeds_maxlength": "Parol təsdiqi, maksimum parol uzunluğunu aşır",
|
||||
"password_confirmation.mismatching": "Parol təsdiqi uyuşmur",
|
||||
"picture_in_picture.restore": "Geri qoy",
|
||||
"poll.closed": "Bağlandı",
|
||||
"poll.refresh": "Təzələ",
|
||||
"poll.reveal": "Nəticələrə bax",
|
||||
"poll.total_people": "{count, plural, one {# nəfər} other {# nəfər}}",
|
||||
"poll.total_votes": "{count, plural, one {# səs} other {# səs}}",
|
||||
"poll.vote": "Səs ver",
|
||||
"poll.voted": "Bu cavaba səs verdiniz",
|
||||
"poll.votes": "{votes, plural, one {# səs} other {# səs}}",
|
||||
"poll_button.add_poll": "Bir anket əlavə et",
|
||||
"poll_button.remove_poll": "Anketi sil",
|
||||
"privacy.change": "Göndəriş gizliliyini dəyişdir",
|
||||
"privacy.direct.long": "Göndərişdə adı çəkilən hər kəs",
|
||||
"privacy.direct.short": "Müəyyən insanlar",
|
||||
"privacy.private.long": "Yalnız izləyiciləriniz",
|
||||
"privacy.private.short": "İzləyicilər",
|
||||
"privacy.public.long": "Mastodon-da olan və olmayan hər kəs",
|
||||
"privacy.public.short": "Hər kəsə açıq",
|
||||
"privacy.unlisted.short": "Səssiz hər kəsə açıq",
|
||||
"privacy_policy.last_updated": "Son güncəlləmə {date}",
|
||||
"privacy_policy.title": "Gizlilik Siyasəti",
|
||||
"recommended": "Tövsiyə edilən",
|
||||
"refresh": "Təzələ",
|
||||
"regeneration_indicator.label": "Yüklənir…",
|
||||
"regeneration_indicator.sublabel": "Əsas səhifə lentiniz hazırlanır!",
|
||||
"relative_time.days": "{number} gü",
|
||||
"relative_time.full.days": "{number, plural, one {# gün} other {# gün}} əvvəl",
|
||||
"relative_time.full.hours": "{number, plural, one {# saat} other {# saat}} əvvəl",
|
||||
"relative_time.full.just_now": "indicə",
|
||||
"relative_time.full.minutes": "{number, plural, one {# dəqiqə} other {# dəqiqə}} əvvəl",
|
||||
"relative_time.full.seconds": "{number, plural, one {# saniyə} other {# saniyə}} əvvəl",
|
||||
"relative_time.hours": "{number} sa",
|
||||
"relative_time.just_now": "indi",
|
||||
"relative_time.minutes": "{number} dəq",
|
||||
"relative_time.seconds": "{number} san",
|
||||
"relative_time.today": "bu gün",
|
||||
"reply_indicator.attachments": "{count, plural, one {# qoşma} other {# qoşma}}",
|
||||
"reply_indicator.cancel": "İmtina",
|
||||
"reply_indicator.poll": "Anket",
|
||||
"report.block": "Əngəllə",
|
||||
"report.block_explanation": "Onun göndərişlərini görməyəcəksiniz. O, göndərişlərinizi görə və ya sizi izləyə bilməz. Əngəllədiyinizi anlaya biləcək.",
|
||||
"report.categories.legal": "Hüquqi",
|
||||
"report.categories.other": "Digər",
|
||||
"report.categories.spam": "Spam",
|
||||
"report.categories.violation": "Məzmun, bir və ya daha çox server qaydasını pozur",
|
||||
"report.category.subtitle": "Ən çox uyuşanı seçin",
|
||||
"report.category.title": "Bu {type} ilə bağlı nələrin baş verdiyini bizə deyin",
|
||||
"report.category.title_account": "profil",
|
||||
"report.category.title_status": "göndəriş",
|
||||
"report.close": "Hazırdır",
|
||||
"report.comment.title": "Bilməyimizi istədiyiniz başqa nəsə var?",
|
||||
"report.forward": "Bura yönləndir: {target}",
|
||||
"report.forward_hint": "Hesab, başqa bir serverdəndir. Hesabatın anonim bir kopyası ora da göndərilsin?",
|
||||
"report.mute": "Səssizə al",
|
||||
"report.mute_explanation": "Onun göndərişlərini görməyəcəksiniz. O, sizi izləməyə və göndərişlərinizi görməyə davam edə bilər, ancaq səssizə alındığını bilməyəcək.",
|
||||
"report.next": "Növbəti",
|
||||
"report.placeholder": "Əlavə rəylər",
|
||||
"report.reasons.dislike": "Bunu bəyənmədim",
|
||||
"report.reasons.dislike_description": "Bu, görmək istədiyiniz bir şey deyil",
|
||||
"report.reasons.legal": "Qanunsuzdur",
|
||||
"report.reasons.legal_description": "Sizin və ya serverinizin olduğu ölkənin qanunlarını pozduğuna inanırsınız",
|
||||
"report.reasons.other": "Başqa bir şeydir",
|
||||
"report.reasons.other_description": "Problem, digər kateqoriyalara uyğun gəlmir",
|
||||
"report.reasons.spam": "Spamdır",
|
||||
"report.reasons.spam_description": "Zərərli keçidlər, saxta qarşılıqlı əlaqə və ya təkrarlanan cavablar",
|
||||
"report.reasons.violation": "Server qaydalarını pozur",
|
||||
"report.reasons.violation_description": "Müəyyən qaydaları pozduğundan xəbərdarsınız",
|
||||
"report.rules.subtitle": "Uyğun olanların hamısını seçin",
|
||||
"report.rules.title": "Hansı qaydalar pozulub?",
|
||||
"report.statuses.subtitle": "Uyğun olanların hamısını seçin",
|
||||
"report.statuses.title": "Bu şikayəti dəstəkləyən hər hansısa bir göndəriş var?",
|
||||
"report.submit": "Təqdim et",
|
||||
"report.target": "{target} şikayət edilir",
|
||||
"report.thanks.take_action": "Mastodon-da nə görə biləcəyinizi idarə etmək üçün seçimləriniz bunlardır:",
|
||||
"report.thanks.take_action_actionable": "Biz bunu incələdiyimiz müddətdə, siz @{name} ilə bağlı bunları edə bilərsiniz:",
|
||||
"report.thanks.title": "Bunu görmək istəmirsiniz?",
|
||||
"report.thanks.title_actionable": "Şikayət etdiyiniz üçün təşəkkürlər, məsələyə baxacağıq.",
|
||||
"report.unfollow": "@{name} - izləmədən çıxart",
|
||||
"report.unfollow_explanation": "Bu hesabı izləyirsiniz. Əsas ekran lentinizdə onun göndərişlərini artıq görmək istəmirsinizsə, onu izləmədən çıxarın.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} göndəriş} other {{count} göndəriş}} əlavə edildi",
|
||||
"report_notification.categories.legal": "Hüquqi",
|
||||
"report_notification.categories.legal_sentence": "qanunsuz məzmun",
|
||||
"report_notification.categories.other": "Digər",
|
||||
"report_notification.categories.other_sentence": "digər",
|
||||
"report_notification.categories.spam": "Spam",
|
||||
"report_notification.categories.spam_sentence": "spam",
|
||||
"report_notification.categories.violation": "Qayda pozuntusu",
|
||||
"report_notification.categories.violation_sentence": "qayda pozuntusu",
|
||||
"report_notification.open": "Hesabatı aç",
|
||||
"search.no_recent_searches": "Son axtarışlar yoxdur",
|
||||
"search.placeholder": "Axtar",
|
||||
"search.quick_action.account_search": "Uyuşan profillər {x}",
|
||||
"search.quick_action.go_to_account": "{x} profilinə get",
|
||||
"search.quick_action.go_to_hashtag": "{x} mövzu etiketinə get",
|
||||
"search.quick_action.open_url": "URL-ni Mastodon-da aç",
|
||||
"search.quick_action.status_search": "Uyuşan göndərişlər {x}",
|
||||
"search.search_or_paste": "Axtar və ya URL-ni yapışdır",
|
||||
"search_popout.full_text_search_disabled_message": "{domain} domenində mövcud deyil.",
|
||||
"search_popout.full_text_search_logged_out_message": "Yalnız giriş edildiyi zaman əlçatandır.",
|
||||
"search_popout.language_code": "ISO dil kodu",
|
||||
"search_popout.options": "Axtarış seçimləri",
|
||||
"search_popout.quick_actions": "Cəld əməliyyatlar",
|
||||
"search_popout.recent": "Son axtarışlar",
|
||||
"search_popout.specific_date": "müəyyən tarix",
|
||||
"search_popout.user": "istifadəçi",
|
||||
"search_results.accounts": "Profillər",
|
||||
"search_results.all": "Hamısı",
|
||||
"search_results.hashtags": "Mövzu etiketləri",
|
||||
"search_results.nothing_found": "Bu axtarış terminləri ilə heç nə tapıla bilmədi",
|
||||
"search_results.see_all": "Hamısına bax",
|
||||
"search_results.statuses": "Göndərişlər",
|
||||
"search_results.title": "{q} axtar",
|
||||
"server_banner.about_active_users": "Son 30 gündə bu serveri istifadə edənlər (aylıq aktiv istifadəçilər)",
|
||||
"server_banner.active_users": "aktiv istifadəçilər",
|
||||
"server_banner.administered_by": "Administrasiya:",
|
||||
"server_banner.is_one_of_many": "{domain}, fediverse-də iştirak etmək üçün istifadə edə biləcəyiniz bir neçə müstəqil Mastodon serverlərindən biridir.",
|
||||
"server_banner.server_stats": "Server statistikaları:",
|
||||
"sign_in_banner.create_account": "Hesab yarat",
|
||||
"sign_in_banner.follow_anyone": "fediverse-dəki hər kəsi izləyin və hamısına xronoloji ardıcıllıqla baxın. Heç bir alqoritm, reklam və ya klikləmə tələsi yoxdur.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon, baş verənlərdən xəbərdar olmağın ən yaxşı yoldur.",
|
||||
"sign_in_banner.sign_in": "Giriş",
|
||||
"sign_in_banner.sso_redirect": "Giriş və ya Qeydiyyat",
|
||||
"status.admin_account": "@{name} üçün moderasiya interfeysini aç",
|
||||
"status.admin_domain": "{domain} üçün moderasiya interfeysini aç",
|
||||
"status.admin_status": "Moderasiya interfeysində bu göndərişi aç",
|
||||
"status.block": "Əngəllə: @{name}",
|
||||
"status.bookmark": "Əlfəcin",
|
||||
"status.cancel_reblog_private": "Təkrar paylaşımı geri al",
|
||||
"status.cannot_reblog": "Bu göndəriş təkrar paylaşıla bilməz",
|
||||
"status.continued_thread": "Davam edən mövzu",
|
||||
"status.copy": "Göndəriş keçidini kopyala",
|
||||
"status.delete": "Sil",
|
||||
"status.detailed_status": "Detallı danışıq görünüşü",
|
||||
"status.direct": "Şəxsi olaraq adını çək: @{name}",
|
||||
"status.direct_indicator": "Şəxsi olaraq adını çək",
|
||||
"status.edit": "Düzəliş et",
|
||||
"status.edited": "Son düzəliş {date}",
|
||||
"status.edited_x_times": "{count, plural, one {{count} dəfə} other {{count} dəfə}} düzəliş edilib",
|
||||
"status.favourite": "Sevimli",
|
||||
"status.favourites": "{count, plural, one {sevimli} other {sevimli}}",
|
||||
"status.filter": "Bu göndərişi filtrlə",
|
||||
"status.history.created": "{name}, {date} yaratdı",
|
||||
"status.history.edited": "{name}, {date} düzəliş etdi",
|
||||
"status.load_more": "Daha çoxunu yüklə",
|
||||
"status.media.open": "Açmaq üçün kliklə",
|
||||
"status.media.show": "Göstərmək üçün kliklə",
|
||||
"status.media_hidden": "Media gizlidir",
|
||||
"status.mention": "Adını çək: @{name}",
|
||||
"status.more": "Daha çox",
|
||||
"status.mute": "@{name} - səssizə al",
|
||||
"status.mute_conversation": "Danışığın səsini kəs",
|
||||
"status.open": "Bu göndərişi genişləndir",
|
||||
"status.pin": "Profildə sanc",
|
||||
"status.pinned": "Sancılmış göndəriş",
|
||||
"status.read_more": "Daha çoxunu oxu",
|
||||
"status.reblog": "Təkrar paylaş",
|
||||
"status.reblog_private": "Orijinal görünmə ilə təkrar paylaş",
|
||||
"status.reblogged_by": "{name} təkrar paylaşdı",
|
||||
"status.reblogs": "{count, plural, one {təkrar paylaşma} other {təkrar paylaşma}}",
|
||||
"status.reblogs.empty": "Hələ heç kim bu göndərişi təkrar paylaşmayıb. Kimsə paylaşdığı zaman, burada görünəcək.",
|
||||
"status.remove_bookmark": "Əlfəcini sil",
|
||||
"status.replied_in_thread": "Mövzuda cavablandırıldı",
|
||||
"status.replied_to": "Cavab verildi: {name}",
|
||||
"status.reply": "Cavabla",
|
||||
"status.replyAll": "Mövzuda cavab ver",
|
||||
"status.report": "Bildir: @{name}",
|
||||
"status.sensitive_warning": "Həssas məzmun",
|
||||
"status.share": "Paylaş",
|
||||
"status.show_less_all": "Hamısı üçün daha az göstər",
|
||||
"status.show_more_all": "Hamısı üçün daha çox göstər",
|
||||
"status.show_original": "Orijinalı göstər",
|
||||
"status.title.with_attachments": "{user} {attachmentCount, plural, one {bir qoşma} other {{attachmentCount} qoşma}} paylaşdı",
|
||||
"status.translate": "Tərcümə et",
|
||||
"status.translated_from_with": "{provider} ilə {lang} dilindən tərcümə edilib",
|
||||
"status.uncached_media_warning": "Önizləmə mövcud deyil",
|
||||
"status.unmute_conversation": "Danışığın səsini aç",
|
||||
"status.unpin": "Profil sancağı götür",
|
||||
"subscribed_languages.lead": "Dəyişiklikdən sonra əsas ekran və siyahı zaman xəttinizdə yalnız seçdiyiniz dillərdəki göndərişlər görünəcək. Bütün dillərdə göndəriş almaq üçün heç birini seçməyin.",
|
||||
"subscribed_languages.save": "Dəyişiklikləri saxla",
|
||||
"subscribed_languages.target": "{target} üçün abunə olunmuş dilləri dəyişdir",
|
||||
"tabs_bar.home": "Ana səhifə",
|
||||
"tabs_bar.notifications": "Bildirişlər",
|
||||
"time_remaining.days": "{number, plural, one {# gün} other {# gün}} qalıb",
|
||||
"time_remaining.hours": "{number, plural, one {# saat} other {# saat}} qalıb",
|
||||
"time_remaining.minutes": "{number, plural, one {# dəqiqə} other {# dəqiqə}} qalıb",
|
||||
"time_remaining.moments": "Bir neçə dəqiqə qalıb",
|
||||
"time_remaining.seconds": "{number, plural, one {# saniyə} other {# saniyə}} qalıb",
|
||||
"trends.counter_by_accounts": "Son {days, plural, one {bir gündə} other {{days} gündə}} {count, plural, one {{counter} nəfər} other {{counter} nəfər}}",
|
||||
"trends.trending_now": "İndi trenddədir",
|
||||
"ui.beforeunload": "Mastodon-u tərk etsəniz, qaralamanız itəcək.",
|
||||
"units.short.billion": "{count} mlyrd",
|
||||
"units.short.million": "{count} mlyn",
|
||||
"units.short.thousand": "{count} min",
|
||||
"upload_area.title": "Yükləmək üçün sürüklə və burax",
|
||||
"upload_button.label": "Təsvir, video və ya səs faylı əlavə et",
|
||||
"upload_error.limit": "Fayl yükləmə limiti aşılıb.",
|
||||
"upload_error.poll": "Anketlərdə fayl yükləməyə icazə verilmir.",
|
||||
"upload_form.audio_description": "Eşitmə qabiliyyətini itirmiş və eşitmə çətinliyi olan şəxslər üçün açıqlama",
|
||||
"upload_form.description": "Görmə məhdudiyyətli və ya zəif görən insanlar üçün açıqlama",
|
||||
"upload_form.drag_and_drop.instructions": "Bir media qoşmasını daşımaq üçün boşluq və ya enter düyməsinə basın. Sürükləmə zamanı, media qoşmasını hər hansısa bir yönə hərəkət etdirmək üçün ox düymələrini istifadə edin. Media qoşmasını yeni mövqeyinə buraxmaq üçün təkrar boşluq və ya enter düyməsinə basın, ləğv etmək üçün escape düyməsinə basın.",
|
||||
"upload_form.drag_and_drop.on_drag_cancel": "Sürükləmə ləğv edilib. {item} media qoşması buraxıldı.",
|
||||
"upload_form.drag_and_drop.on_drag_end": "{item} media qoşması buraxıldı.",
|
||||
"upload_form.drag_and_drop.on_drag_over": "{item} media qoşması daşındı.",
|
||||
"upload_form.drag_and_drop.on_drag_start": "{item} media qoşması alındı.",
|
||||
"upload_form.edit": "Düzəliş et",
|
||||
"upload_form.thumbnail": "Kiçik şəkli dəyişdir",
|
||||
"upload_form.video_description": "Eşitmə qabiliyyətini itirmiş, eşitmə çətinliyi olan, görmə məhdudiyyətli və ya zəif görən şəxslər üçün açıqlama",
|
||||
"upload_modal.analyzing_picture": "Şəkil təhlil edilir…",
|
||||
"upload_modal.apply": "Tətbiq et",
|
||||
"upload_modal.applying": "Tətbiq edilir…",
|
||||
"upload_modal.choose_image": "Təsviri dəyişdir",
|
||||
"upload_progress.label": "Yüklənir...",
|
||||
"upload_progress.processing": "Emal edilir…",
|
||||
"username.taken": "Bu istifadəçi adı götürülüb. Başqasını sınayın",
|
||||
"video.close": "Videonu bağla",
|
||||
"video.download": "Faylı endir",
|
||||
"video.exit_fullscreen": "Tam ekrandan çıx",
|
||||
"video.expand": "Videonu genişləndir",
|
||||
"video.fullscreen": "Tam ekran",
|
||||
"video.hide": "Videonu gizlət",
|
||||
"video.mute": "Səsi kəs",
|
||||
"video.pause": "Fasilə ver",
|
||||
"video.play": "Oxut",
|
||||
"video.unmute": "Səsi aç"
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"account.copy": "Скапіраваць спасылку на профіль",
|
||||
"account.direct": "Згадаць асабіста @{name}",
|
||||
"account.disable_notifications": "Не паведамляць мне пра публікацыі @{name}",
|
||||
"account.domain_blocked": "Дамен заблакаваны",
|
||||
"account.domain_blocked": "Дамен заблакіраваны",
|
||||
"account.edit_profile": "Рэдагаваць профіль",
|
||||
"account.enable_notifications": "Апавяшчаць мяне пра допісы @{name}",
|
||||
"account.endorse": "Паказваць у профілі",
|
||||
@@ -47,7 +47,7 @@
|
||||
"account.locked_info": "Гэты ўліковы запіс пазначаны як схаваны. Уладальнік сам вырашае, хто можа падпісвацца на яго.",
|
||||
"account.media": "Медыя",
|
||||
"account.mention": "Згадаць @{name}",
|
||||
"account.moved_to": "{name} указаў, што яго/яе новы ўліковы запіс цяпер:",
|
||||
"account.moved_to": "{name} указаў(-ла), што яго/яе новы ўліковы запіс цяпер:",
|
||||
"account.mute": "Ігнараваць @{name}",
|
||||
"account.mute_notifications_short": "Не апавяшчаць",
|
||||
"account.mute_short": "Ігнараваць",
|
||||
@@ -59,7 +59,7 @@
|
||||
"account.posts_with_replies": "Допісы і адказы",
|
||||
"account.report": "Паскардзіцца на @{name}",
|
||||
"account.requested": "Чакаецца ўхваленне. Націсніце, каб скасаваць запыт на падпіску",
|
||||
"account.requested_follow": "{name} адправіў запыт на падпіску",
|
||||
"account.requested_follow": "{name} адправіў(-ла) запыт на падпіску",
|
||||
"account.share": "Абагуліць профіль @{name}",
|
||||
"account.show_reblogs": "Паказаць падштурхоўванні ад @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
||||
@@ -89,11 +89,11 @@
|
||||
"announcement.announcement": "Аб'ява",
|
||||
"attachments_list.unprocessed": "(неапрацаваны)",
|
||||
"audio.hide": "Схаваць аўдыя",
|
||||
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
||||
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць Ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
||||
"block_modal.show_less": "Паказаць меньш",
|
||||
"block_modal.show_more": "Паказаць больш",
|
||||
"block_modal.they_cant_mention": "Карыстальнік не зможа згадваць або сачыць за вамі.",
|
||||
"block_modal.they_cant_see_posts": "Карыстальнік не будзе бачыць вашых допісаў, а вы — карыстальніка.",
|
||||
"block_modal.they_cant_see_posts": "Карыстальнік не будзе бачыць Вашых допісаў, а Вы — ягоных.",
|
||||
"block_modal.they_will_know": "Карыстальнік убачыць, што адбылася блакіроўка.",
|
||||
"block_modal.title": "Заблакіраваць карыстальніка?",
|
||||
"block_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||
@@ -121,7 +121,7 @@
|
||||
"column.blocks": "Заблакіраваныя карыстальнікі",
|
||||
"column.bookmarks": "Закладкі",
|
||||
"column.community": "Лакальная стужка",
|
||||
"column.direct": "Асабістыя згадванні",
|
||||
"column.direct": "Прыватныя згадванні",
|
||||
"column.directory": "Праглядзець профілі",
|
||||
"column.domain_blocks": "Заблакіраваныя дамены",
|
||||
"column.favourites": "Упадабанае",
|
||||
@@ -175,7 +175,7 @@
|
||||
"confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?",
|
||||
"confirmations.delete.title": "Выдаліць допіс?",
|
||||
"confirmations.delete_list.confirm": "Выдаліць",
|
||||
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?",
|
||||
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты спіс?",
|
||||
"confirmations.delete_list.title": "Выдаліць спіс?",
|
||||
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
||||
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
||||
@@ -204,8 +204,8 @@
|
||||
"conversation.with": "З {names}",
|
||||
"copy_icon_button.copied": "Скапіявана ў буфер абмену",
|
||||
"copypaste.copied": "Скапіравана",
|
||||
"copypaste.copy_to_clipboard": "Капіраваць у буфер абмену",
|
||||
"directory.federated": "З вядомага федэсвету",
|
||||
"copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену",
|
||||
"directory.federated": "З вядомага федэральнага сусвету",
|
||||
"directory.local": "Толькі з {domain}",
|
||||
"directory.new_arrivals": "Новыя карыстальнікі",
|
||||
"directory.recently_active": "Нядаўна актыўныя",
|
||||
@@ -234,12 +234,12 @@
|
||||
"domain_pill.their_username": "Унікальны ідэнтыфікатар карыстальніка на серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
||||
"domain_pill.username": "Імя карыстальніка",
|
||||
"domain_pill.whats_in_a_handle": "Што такое ідэнтыфікатар карыстальніка?",
|
||||
"domain_pill.who_they_are": "Паколькі ідэнтыфікатары кажуць аб тым, хто гэты чалавек і якім серверам ён карыстаецца, вы можаце ўзаемадзейнічаць з карыстальнікамі <button> платформ, якія падтрымліваюць ActivityPub</button>.",
|
||||
"domain_pill.who_you_are": "Паколькі ваш ідэнтыфікатар кажа аб тым, хто вы і дзе знаходзіцеся, людзі могуць узаемадзейнічаць з вамі ў сацыяльнай сетцы <button> на платформах, якія падтрымліваюць ActivityPub</button>.",
|
||||
"domain_pill.who_they_are": "Паколькі ідэнтыфікатары кажуць аб тым, хто гэты чалавек і якім серверам ён карыстаецца, Вы можаце ўзаемадзейнічаць з карыстальнікамі <button> платформ, якія падтрымліваюць ActivityPub</button>.",
|
||||
"domain_pill.who_you_are": "Паколькі Ваш ідэнтыфікатар кажа аб тым, хто Вы і дзе знаходзіцеся, людзі могуць узаемадзейнічаць з вамі ў сацыяльнай сетцы <button> на платформах, якія падтрымліваюць ActivityPub</button>.",
|
||||
"domain_pill.your_handle": "Ваш ідэнтыфікатар:",
|
||||
"domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.",
|
||||
"domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
||||
"embed.instructions": "Убудуйце гэты пост на свой сайт, скапіраваўшы прыведзены ніжэй код",
|
||||
"embed.instructions": "Убудуйце гэты допіс на свой сайт, скапіраваўшы прыведзены ніжэй код.",
|
||||
"embed.preview": "Вось як гэта будзе выглядаць:",
|
||||
"emoji_button.activity": "Актыўнасць",
|
||||
"emoji_button.clear": "Ачысціць",
|
||||
@@ -251,7 +251,7 @@
|
||||
"emoji_button.not_found": "Адпаведныя эмодзі не знойдзены",
|
||||
"emoji_button.objects": "Прадметы",
|
||||
"emoji_button.people": "Людзі",
|
||||
"emoji_button.recent": "Чата выкарыстаныя",
|
||||
"emoji_button.recent": "Часта выкарыстоўваемыя",
|
||||
"emoji_button.search": "Пошук...",
|
||||
"emoji_button.search_results": "Вынікі пошуку",
|
||||
"emoji_button.symbols": "Сімвалы",
|
||||
@@ -261,27 +261,27 @@
|
||||
"empty_column.account_timeline": "Тут няма допісаў!",
|
||||
"empty_column.account_unavailable": "Профіль недаступны",
|
||||
"empty_column.blocks": "Вы яшчэ нікога не заблакіравалі.",
|
||||
"empty_column.bookmarked_statuses": "У вас яшчэ няма паведамленняў з закладкамі. Калі вы дадасце закладку, яна з'явіцца тут.",
|
||||
"empty_column.community": "Мясцовая стужка пустая. Напішыце што-небудзь публічна, каб зрушыць з месца!",
|
||||
"empty_column.direct": "Пакуль у вас няма асабістых згадак. Калі вы дашляце або атрымаеце штось, яно з'явіцца тут.",
|
||||
"empty_column.bookmarked_statuses": "У Вашых закладках яшчэ няма допісаў. Калі Вы дадасце закладку, яна з’явіцца тут.",
|
||||
"empty_column.community": "Мясцовая стужка пустая. Напішыце нешта публічнае, каб разварушыць справу!",
|
||||
"empty_column.direct": "Пакуль у Вас няма асабістых згадванняў. Калі Вы дашляце або атрымаеце штосьці, яно з’явіцца тут.",
|
||||
"empty_column.domain_blocks": "Заблакіраваных даменаў пакуль няма.",
|
||||
"empty_column.explore_statuses": "Зараз не ў трэндзе. Праверце пазней",
|
||||
"empty_column.favourited_statuses": "Вы яшчэ не ўпадабалі ніводны допіс. Калі гэта адбудзецца, вы ўбачыце яго тут.",
|
||||
"empty_column.favourites": "Ніхто яшчэ не ўпадабаў гэты допіс. Калі гэта адбудзецца, вы ўбачыце гэтых людзей тут.",
|
||||
"empty_column.follow_requests": "У вас яшчэ няма запытаў на падпіскуі. Калі вы атрымаеце запыт, ён з'явяцца тут.",
|
||||
"empty_column.followed_tags": "Вы пакуль не падпісаны ні на адзін хэштэг. Калі падпішацеся, яны з'явяцца тут.",
|
||||
"empty_column.favourited_statuses": "Вы яшчэ не ўпадабалі ніводны допіс. Калі гэта адбудзецца, Вы ўбачыце яго тут.",
|
||||
"empty_column.favourites": "Ніхто яшчэ не ўпадабаў гэты допіс. Калі гэта адбудзецца, Вы ўбачыце гэтых людзей тут.",
|
||||
"empty_column.follow_requests": "У Вас яшчэ няма запытаў на падпіску. Калі Вы атрымаеце запыт, ён з’явіцца тут.",
|
||||
"empty_column.followed_tags": "Вы пакуль не падпісаны ні на адзін хэштэг. Калі падпішацеся, яны з’явяцца тут.",
|
||||
"empty_column.hashtag": "Па гэтаму хэштэгу пакуль што нічога няма.",
|
||||
"empty_column.home": "Галоўная стужка пустая! Падпішыцеся на іншых людзей, каб запоўніць яе. {suggestions}",
|
||||
"empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены лісту апублікуюць новыя запісы, яны з'явяцца тут.",
|
||||
"empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены спіса апублікуюць новыя запісы, яны з'явяцца тут.",
|
||||
"empty_column.lists": "Як толькі вы створыце новы спіс ён будзе захоўвацца тут, але пакуль што тут пуста.",
|
||||
"empty_column.mutes": "Вы яшчэ нікога не ігнаруеце.",
|
||||
"empty_column.notification_requests": "Чысціня! Тут нічога няма. Калі вы будзеце атрымліваць новыя апавяшчэння, яны будуць з'яўляцца тут у адпаведнасці з вашымі наладамі.",
|
||||
"empty_column.notifications": "У вас няма ніякіх апавяшчэнняў. Калі іншыя людзі ўзаемадзейнічаюць з вамі, вы ўбачыце гэта тут.",
|
||||
"empty_column.notification_requests": "Чысціня! Тут нічога няма. Калі Вы будзеце атрымліваць новыя апавяшчэнні, яны будуць з'яўляцца тут у адпаведнасці з Вашымі наладамі.",
|
||||
"empty_column.notifications": "У Вас няма ніякіх апавяшчэнняў. Калі іншыя людзі захочуць узаемадзейнічаць з Вамі, Вы ўбачыце гэта тут.",
|
||||
"empty_column.public": "Тут нічога няма! Апублікуйце што-небудзь, або падпішыцеся на карыстальнікаў з другіх сервераў",
|
||||
"error.unexpected_crash.explanation": "Гэта старонка не можа быць адлюстравана карэктна з-за памылкі ў нашым кодзе, або праблемы з сумяшчальнасцю браўзера.",
|
||||
"error.unexpected_crash.explanation_addons": "Гэтая старонка не можа быць адлюстравана карэктна. Верагодна, гэтая памылка выклікана дадатковым кампанентам браўзера або інструментамі аўтаматычнага перакладу",
|
||||
"error.unexpected_crash.next_steps": "Паспрабуйце абнавіць старонку. Калі гэта не дапаможа, вы можаце паспрабаваць іншы браўзер, альбо выкарыстаць усталяваную праграму.",
|
||||
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і аднавіць старонку. Калі гэта не дапаможа, вы можаце карыстацца Мастадонт праз другі браўзер ці аплікацыю.",
|
||||
"error.unexpected_crash.explanation_addons": "Гэтая старонка не можа быць адлюстравана карэктна. Верагодна, гэтая памылка выкліканая дадатковым кампанентам браўзера або інструментамі аўтаматычнага перакладу.",
|
||||
"error.unexpected_crash.next_steps": "Паспрабуйце абнавіць старонку. Калі гэта не дапаможа, Вы можаце паспрабаваць іншы браўзер, альбо выкарыстаць усталяваную праграму.",
|
||||
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і абнавіць старонку. Калі гэта не дапамагае, Вы ўсё яшчэ можаце карыстацца Mastodon праз іншы браўзер ці асобную праграму.",
|
||||
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
||||
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
||||
"explore.search_results": "Вынікі пошуку",
|
||||
@@ -290,14 +290,14 @@
|
||||
"explore.trending_links": "Навіны",
|
||||
"explore.trending_statuses": "Допісы",
|
||||
"explore.trending_tags": "Хэштэгі",
|
||||
"filter_modal.added.context_mismatch_explanation": "Гэтая катэгорыя фільтра не прымяняецца да кантэксту, у якім вы адкрылі гэты пост. Калі вы хочаце, каб паведамленне таксама было адфільтравана ў гэтым кантэксце, вам трэба будзе адрэдагаваць фільтр",
|
||||
"filter_modal.added.context_mismatch_explanation": "Гэтая катэгорыя фільтра не прымяняецца да кантэксту, у якім Вы адкрылі гэты допіс. Калі Вы хочаце, каб паведамленне таксама было адфільтраванае ў гэтым кантэксце, Вам трэба будзе адрэдагаваць фільтр.",
|
||||
"filter_modal.added.context_mismatch_title": "Неадпаведны кантэкст!",
|
||||
"filter_modal.added.expired_explanation": "Тэрмін дзеяння гэтай катэгорыі фільтраў скончыўся, вам трэба будзе змяніць дату заканчэння тэрміну дзеяння, каб яна прымянялася",
|
||||
"filter_modal.added.expired_title": "Пратэрмінаваны фільтр!",
|
||||
"filter_modal.added.review_and_configure": "Для прагляду і наступнай канфігурацыі фільтра катэгорый, перайдзіце на {settings_link}.",
|
||||
"filter_modal.added.review_and_configure_title": "Налады фільтра",
|
||||
"filter_modal.added.settings_link": "старонка наладаў",
|
||||
"filter_modal.added.short_explanation": "Гэты пост быў дабаўлены ў катэгорыю з наступным фільтрам: {title}.",
|
||||
"filter_modal.added.short_explanation": "Гэты допіс быў дададзены ў катэгорыю з наступным фільтрам: {title}.",
|
||||
"filter_modal.added.title": "Фільтр дабаўлены!",
|
||||
"filter_modal.select_filter.context_mismatch": "Не мае дачынення да кантэксту ",
|
||||
"filter_modal.select_filter.expired": "пратэрмінавана",
|
||||
@@ -307,27 +307,27 @@
|
||||
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
|
||||
"filter_modal.title.status": "Фільтраваць допіс",
|
||||
"filter_warning.matches_filter": "Адпавядае фільтру \"<span>{title}</span>\"",
|
||||
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
|
||||
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} Вы магчыма ведаеце",
|
||||
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
|
||||
"firehose.all": "Усе",
|
||||
"firehose.local": "Гэты сервер",
|
||||
"firehose.remote": "Іншыя серверы",
|
||||
"follow_request.authorize": "Аўтарызацыя",
|
||||
"follow_request.reject": "Адхіліць",
|
||||
"follow_requests.unlocked_explanation": "Ваш акаўнт не схаваны, аднак прадстаўнікі {domain} палічылі, што вы можаце захацець праглядзець запыты на падпіску з гэтых профіляў уручную.",
|
||||
"follow_requests.unlocked_explanation": "Ваш уліковы запіс не схаваны, аднак прадстаўнікі {domain} палічылі, што Вы можаце захацець праглядзець запыты на падпіску з гэтых уліковых запісаў уручную.",
|
||||
"follow_suggestions.curated_suggestion": "Выбар адміністрацыі",
|
||||
"follow_suggestions.dismiss": "Не паказваць зноў",
|
||||
"follow_suggestions.featured_longer": "Адабраныя камандай {domain} уручную",
|
||||
"follow_suggestions.friends_of_friends_longer": "Папулярнае сярод людзей, на якіх Вы падпісаны",
|
||||
"follow_suggestions.friends_of_friends_longer": "Папулярнае сярод людзей, на якіх Вы падпісаныя",
|
||||
"follow_suggestions.hints.featured": "Гэты профіль быў выбраны ўручную камандай {domain}.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх вы падпісаліся.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх Вы падпісаліся.",
|
||||
"follow_suggestions.hints.most_followed": "Гэты профіль - адзін з профіляў з самай вялікай колькасцю падпісак на {domain}.",
|
||||
"follow_suggestions.hints.most_interactions": "У апошні час гэты профіль прыцягвае шмат увагі на {domain}.",
|
||||
"follow_suggestions.hints.similar_to_recently_followed": "Гэты профіль падобны на профілі, на якія вы нядаўна падпісаліся.",
|
||||
"follow_suggestions.hints.similar_to_recently_followed": "Гэты профіль падобны на профілі, на якія Вы нядаўна падпісаліся.",
|
||||
"follow_suggestions.personalized_suggestion": "Персаналізаваная прапанова",
|
||||
"follow_suggestions.popular_suggestion": "Папулярная прапанова",
|
||||
"follow_suggestions.popular_suggestion_longer": "Папулярнае на {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Падобныя профілі, за якімі вы нядаўна сачылі",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Падобныя профілі, за якімі Вы нядаўна сачылі",
|
||||
"follow_suggestions.view_all": "Праглядзець усё",
|
||||
"follow_suggestions.who_to_follow": "На каго падпісацца",
|
||||
"followed_tags": "Падпіскі",
|
||||
@@ -362,30 +362,30 @@
|
||||
"hints.profiles.see_more_followers": "Глядзець больш падпісаных на {domain}",
|
||||
"hints.profiles.see_more_follows": "Глядзець больш падпісак на {domain}",
|
||||
"hints.profiles.see_more_posts": "Глядзець больш допісаў на {domain}",
|
||||
"hints.threads.replies_may_be_missing": "Адказы зь іншых сэрвэраў могуць адсутнічаць.",
|
||||
"hints.threads.replies_may_be_missing": "Адказы з іншых сервераў могуць адсутнічаць.",
|
||||
"hints.threads.see_more": "Глядзіце больш адказаў на {domain}",
|
||||
"home.column_settings.show_reblogs": "Паказваць пашырэнні",
|
||||
"home.column_settings.show_replies": "Паказваць адказы",
|
||||
"home.hide_announcements": "Схаваць аб'явы",
|
||||
"home.pending_critical_update.body": "Калі ласка, абнавіце свой сервер Mastodon як мага хутчэй!",
|
||||
"home.pending_critical_update.body": "Абнавіце свой сервер Mastodon як мага хутчэй!",
|
||||
"home.pending_critical_update.link": "Прагледзець абнаўленні",
|
||||
"home.pending_critical_update.title": "Даступна крытычнае абнаўленне бяспекі!",
|
||||
"home.show_announcements": "Паказаць аб'явы",
|
||||
"ignore_notifications_modal.disclaimer": "Mastodon ня можа йнфармаваць карыстальнікаў аб тым, што вы прайігнаравалі йх паведамленьні. Ігнараваньне паведамленьняў не спыніць іх адпраўку.",
|
||||
"ignore_notifications_modal.disclaimer": "Mastodon не можа паведамляць карыстальнікам, што Вы праігнаравалі апавяшчэнні ад іх. Ігнараванне апавяшчэнняў не спыніць адпраўку саміх паведамленняў.",
|
||||
"ignore_notifications_modal.filter_instead": "Замест гэтага адфільтраваць",
|
||||
"ignore_notifications_modal.filter_to_act_users": "Вы па-ранейшаму зможаце прымаць, адхіляць ці скардзіцца на карыстальнікаў",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Фільтраваньне дапамагае пазьбегнуць патэнцыйнай блытаніны",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "Вы можаце прагледзець адфільтраваныя паведамленьні асобна",
|
||||
"ignore_notifications_modal.ignore": "Ігнараваць паведамленьні",
|
||||
"ignore_notifications_modal.limited_accounts_title": "Ігнараваць паведамленьні ад абмежаваных уліковых запісаў?",
|
||||
"ignore_notifications_modal.new_accounts_title": "Ігнараваць паведамленьні ад новых уліковых запісаў?",
|
||||
"ignore_notifications_modal.not_followers_title": "Ігнараваць паведамленьні ад людзей, якія ня падпісаныя на вас?",
|
||||
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей на якіх вы не падпісаны?",
|
||||
"ignore_notifications_modal.private_mentions_title": "Ігнараваць паведамленьні аб непажаданых прыватных згадках?",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Выкарыстанне фільтраў дапамагае пазбягаць патэнцыйнай блытаніны",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "Вы можаце прагледзець адфільтраваныя апавяшчэнні асобна",
|
||||
"ignore_notifications_modal.ignore": "Ігнараваць апавяшчэнні",
|
||||
"ignore_notifications_modal.limited_accounts_title": "Ігнараваць апавяшчэнні ад уліковых запісаў пад мадэрацыяй?",
|
||||
"ignore_notifications_modal.new_accounts_title": "Ігнараваць апавяшчэнні ад новых уліковых запісаў?",
|
||||
"ignore_notifications_modal.not_followers_title": "Ігнараваць апавяшчэнні ад людзей, якія не падпісаныя на вас?",
|
||||
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей, на якіх Вы не падпісаныя?",
|
||||
"ignore_notifications_modal.private_mentions_title": "Ігнараваць апавяшчэнні пра непажаданыя прыватныя згадванні?",
|
||||
"interaction_modal.description.favourite": "Маючы ўліковы запіс Mastodon, вы можаце ўпадабаць гэты допіс, каб паведаміць аўтару, што ён вам падабаецца, і захаваць яго на будучыню.",
|
||||
"interaction_modal.description.follow": "Маючы акаўнт у Mastodon, вы можаце падпісацца на {name}, каб бачыць яго/яе допісы ў сваёй хатняй стужцы.",
|
||||
"interaction_modal.description.reblog": "З уліковым запісам Mastodon, вы можаце пашырыць гэты пост, каб падзяліцца ім са сваімі падпісчыкамі.",
|
||||
"interaction_modal.description.reply": "Маючы акаўнт у Mastodon, вы можаце адказаць на гэты пост.",
|
||||
"interaction_modal.description.reblog": "З уліковым запісам Mastodon, Вы можаце пашырыць гэты допіс, каб падзяліцца ім са сваімі падпісчыкамі.",
|
||||
"interaction_modal.description.reply": "Маючы ўліковы запіс у Mastodon, Вы можаце адказаць на гэты допіс.",
|
||||
"interaction_modal.login.action": "Вярніце мяне дадому",
|
||||
"interaction_modal.login.prompt": "Дамен вашага хатняга сервера, напрыклад, mastodon.social",
|
||||
"interaction_modal.no_account_yet": "Яшчэ не ў Mastodon?",
|
||||
@@ -432,13 +432,15 @@
|
||||
"keyboard_shortcuts.toggle_hidden": "Паказаць/схаваць тэкст за папярэджаннем пра кантэнт",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Паказаць/схаваць медыя",
|
||||
"keyboard_shortcuts.toot": "Стварыць новы допіс",
|
||||
"keyboard_shortcuts.unfocus": "Расфакусаваць тэкставую вобласць/пошукавы радок",
|
||||
"keyboard_shortcuts.unfocus": "Расфакусіраваць тэкставую вобласць/пошукавы радок",
|
||||
"keyboard_shortcuts.up": "Перамясціцца ўверх па спісе",
|
||||
"lightbox.close": "Закрыць",
|
||||
"lightbox.next": "Далей",
|
||||
"lightbox.previous": "Назад",
|
||||
"lightbox.zoom_in": "Маштабаваць да фактычнага памеру",
|
||||
"lightbox.zoom_out": "Дапасаваць усё змесціва пад памеры экрана",
|
||||
"limited_account_hint.action": "Усе роўна паказваць профіль",
|
||||
"limited_account_hint.title": "Гэты профіль быў схаваны мадэратарамі",
|
||||
"limited_account_hint.title": "Гэты профіль быў схаваны мадэратарамі {domain}.",
|
||||
"link_preview.author": "Ад {name}",
|
||||
"link_preview.more_from_author": "Больш ад {name}",
|
||||
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
||||
@@ -450,32 +452,33 @@
|
||||
"lists.exclusive": "Схаваць гэтыя допісы з галоўнай старонкі",
|
||||
"lists.new.create": "Дадаць спіс",
|
||||
"lists.new.title_placeholder": "Назва новага спіса",
|
||||
"lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся",
|
||||
"lists.replies_policy.followed": "Любы карыстальнік, на якога Вы падпісаліся",
|
||||
"lists.replies_policy.list": "Удзельнікі гэтага спісу",
|
||||
"lists.replies_policy.none": "Нікога",
|
||||
"lists.replies_policy.title": "Паказваць адказы:",
|
||||
"lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны",
|
||||
"lists.subheading": "Вашыя спісы",
|
||||
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
|
||||
"loading_indicator.label": "Загрузка…",
|
||||
"loading_indicator.label": "Ідзе загрузка…",
|
||||
"media_gallery.hide": "Схаваць",
|
||||
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
|
||||
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны, таму што Вы перайшлі на {movedToAccount}.",
|
||||
"mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў",
|
||||
"mute_modal.hide_options": "Схаваць опцыі",
|
||||
"mute_modal.indefinite": "Пакуль я не прыбяру ігнараванне",
|
||||
"mute_modal.show_options": "Паказаць опцыі",
|
||||
"mute_modal.they_can_mention_and_follow": "Карыстальнік зможа згадваць вас і падпісацца на вас, але вы гэтага не ўбачыце.",
|
||||
"mute_modal.they_can_mention_and_follow": "Карыстальнік зможа згадваць Вас і падпісацца на Вас, але Вы гэтага не ўбачыце.",
|
||||
"mute_modal.they_wont_know": "Карыстальнік не будзе ведаць пра ігнараванне.",
|
||||
"mute_modal.title": "Ігнараваць карыстальніка?",
|
||||
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць вашыя паведамленні, але вы не будзеце паведамленні карыстальніка.",
|
||||
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць Вашыя допісы, але Вы не будзеце бачыць ягоныя.",
|
||||
"navigation_bar.about": "Пра нас",
|
||||
"navigation_bar.administration": "Адміністрацыя",
|
||||
"navigation_bar.advanced_interface": "Адкрыць у пашыраным вэб-інтэрфейсе",
|
||||
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
|
||||
"navigation_bar.bookmarks": "Закладкі",
|
||||
"navigation_bar.community_timeline": "Лакальная стужка",
|
||||
"navigation_bar.compose": "Стварыць новы допіс",
|
||||
"navigation_bar.direct": "Асабістыя згадванні",
|
||||
"navigation_bar.direct": "Прыватныя згадванні",
|
||||
"navigation_bar.discover": "Даведайцесь",
|
||||
"navigation_bar.domain_blocks": "Заблакіраваныя дамены",
|
||||
"navigation_bar.explore": "Агляд",
|
||||
@@ -486,6 +489,7 @@
|
||||
"navigation_bar.follows_and_followers": "Падпіскі і падпісчыкі",
|
||||
"navigation_bar.lists": "Спісы",
|
||||
"navigation_bar.logout": "Выйсці",
|
||||
"navigation_bar.moderation": "Мадэрацыя",
|
||||
"navigation_bar.mutes": "Ігнараваныя карыстальнікі",
|
||||
"navigation_bar.opened_in_classic_interface": "Допісы, уліковыя запісы і іншыя спецыфічныя старонкі па змоўчанні адчыняюцца ў класічным вэб-інтэрфейсе.",
|
||||
"navigation_bar.personal": "Асабістае",
|
||||
@@ -495,55 +499,66 @@
|
||||
"navigation_bar.search": "Пошук",
|
||||
"navigation_bar.security": "Бяспека",
|
||||
"not_signed_in_indicator.not_signed_in": "Вам трэба ўвайсці каб атрымаць доступ да гэтага рэсурсу.",
|
||||
"notification.admin.report": "{name} паскардзіўся на {target}",
|
||||
"notification.admin.report_account": "{name} паскардзіўся на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target} з прычыны {category}",
|
||||
"notification.admin.report_account_other": "{name} паскардзіўся на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target}",
|
||||
"notification.admin.report_statuses": "{name} паскардзіўся на {target} з прычыны {category}",
|
||||
"notification.admin.report_statuses_other": "{name} паскардзіўся на {target}",
|
||||
"notification.admin.sign_up": "{name} зарэгістраваўся",
|
||||
"notification.favourite": "Ваш допіс упадабаны {name}",
|
||||
"notification.follow": "{name} падпісаўся на вас",
|
||||
"notification.follow_request": "{name} адправіў запыт на падпіску",
|
||||
"notification.admin.report": "{name} паскардзіўся(-лась) на {target}",
|
||||
"notification.admin.report_account": "{name} паскардзіўся(-лась) на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target} з прычыны {category}",
|
||||
"notification.admin.report_account_other": "{name} паскардзіўся(-лась) на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target}",
|
||||
"notification.admin.report_statuses": "{name} паскардзіўся(-лась) на {target} з прычыны {category}",
|
||||
"notification.admin.report_statuses_other": "{name} паскардзіўся(-лась) на {target}",
|
||||
"notification.admin.sign_up": "{name} зарэгістраваўся(-лась)",
|
||||
"notification.admin.sign_up.name_and_others": "{name} і {count, plural, one {# іншы(-ая)} other {# іншых}} зарэгістраваліся",
|
||||
"notification.favourite": "{name} упадабаў(-ла) Ваш допіс",
|
||||
"notification.favourite.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы(-ая)} other {# іншыя}}</a> ўпадабалі Ваш допіс",
|
||||
"notification.follow": "{name} падпісаўся(-лась) на Вас",
|
||||
"notification.follow.name_and_others": "{name} і <a>{count, plural, one {# іншы(-ая)} other {# іншыя}}</a> падпісаліся на Вас",
|
||||
"notification.follow_request": "{name} адправіў(-ла) запыт на падпіску",
|
||||
"notification.follow_request.name_and_others": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} запыталіся падпісацца на вас",
|
||||
"notification.label.mention": "Згадванне",
|
||||
"notification.label.private_mention": "Асабістае згадванне",
|
||||
"notification.label.private_reply": "Асабісты адказ",
|
||||
"notification.label.reply": "Адказ",
|
||||
"notification.mention": "Згадванне",
|
||||
"notification.mentioned_you": "{name} згадаў вас",
|
||||
"notification.mentioned_you": "{name} згадаў(-ла) Вас",
|
||||
"notification.moderation-warning.learn_more": "Даведацца больш",
|
||||
"notification.moderation_warning": "Вы атрымалі папярэджанне аб мадэрацыі",
|
||||
"notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.",
|
||||
"notification.moderation_warning": "Вы атрымалі папярэджанне ад мадэратараў",
|
||||
"notification.moderation_warning.action_delete_statuses": "Некаторыя Вашыя допісы былі выдаленыя.",
|
||||
"notification.moderation_warning.action_disable": "Ваш уліковы запіс быў адключаны.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як далікатныя.",
|
||||
"notification.moderation_warning.action_none": "Ваш уліковы запіс атрымаў папярэджанне ад мадэратараў.",
|
||||
"notification.moderation_warning.action_sensitive": "З гэтага моманту вашыя допісы будуць пазначаныя як далікатныя.",
|
||||
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
|
||||
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.",
|
||||
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў заблакіраваны.",
|
||||
"notification.own_poll": "Ваша апытанне скончылася",
|
||||
"notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася",
|
||||
"notification.reblog": "{name} пашырыў ваш допіс",
|
||||
"notification.reblog.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы} many {# іншых} other {# іншых}}</a> абагулілі ваш допіс",
|
||||
"notification.poll": "Апытанне, дзе Вы прынялі ўдзел, скончылася",
|
||||
"notification.reblog": "{name} пашырыў(-ла) Ваш допіс",
|
||||
"notification.reblog.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы(-ая)} many {# іншых} other {# іншых}}</a> пашырылі Ваш допіс",
|
||||
"notification.relationships_severance_event": "Страціў сувязь з {name}",
|
||||
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.",
|
||||
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу ўліковага запісу {target}, што азначае, што Вы больш не можаце атрымліваць ад іх абнаўленні ці ўзаемадзейнічаць з імі.",
|
||||
"notification.relationships_severance_event.domain_block": "Адміністратар з {from} заблакіраваў {target}, у тым ліку {followersCount} вашых падпісчыка(-аў) і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}.",
|
||||
"notification.relationships_severance_event.learn_more": "Даведацца больш",
|
||||
"notification.relationships_severance_event.user_domain_block": "Вы заблакіравалі {target} выдаліўшы {followersCount} сваіх падпісчыкаў і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}, за якімі вы сочыце.",
|
||||
"notification.relationships_severance_event.user_domain_block": "Вы заблакіравалі {target} выдаліўшы {followersCount} сваіх падпісчыкаў і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}, за якімі Вы сочыце.",
|
||||
"notification.status": "Новы допіс ад {name}",
|
||||
"notification.update": "Допіс {name} адрэдагаваны",
|
||||
"notification_requests.accept": "Прыняць",
|
||||
"notification_requests.accept_multiple": "{count, plural,one {Прыняць # запыт…} other {Прыняць # запытаў…}}",
|
||||
"notification_requests.confirm_accept_multiple.button": "{count, plural,one {Прыняць запыт} other {Прыняць запыты}}",
|
||||
"notification_requests.confirm_accept_multiple.message": "Вы збіраецеся прыняць {count, plural, one {адзін запыт на апавяшчэнне} other {# запытаў на апавяшчэнне}}. Упэўненыя, што хочаце працягнуць?",
|
||||
"notification_requests.confirm_accept_multiple.title": "Прыняць запыты на апавяшчэнні?",
|
||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural,one {Адмовіцца ад запыту} other {Адмовіцца ад запытаў}}",
|
||||
"notification_requests.confirm_dismiss_multiple.message": "Вы збіраецеся адмовіцца ад {count, plural, one {аднаго запыту на апавяшчэнне} other {# запытаў на апавяшчэнне}}. Вы не зможаце зноў лёгка атрымаць доступ да {count, plural, one {яго} other {іх}}. Упэўненыя, што хочаце працягнуць?",
|
||||
"notification_requests.confirm_dismiss_multiple.title": "Адхіліць запыты на апавяшчэнні?",
|
||||
"notification_requests.dismiss": "Адхіліць",
|
||||
"notification_requests.dismiss_multiple": "{count, plural,one {Адмовіцца ад запыту…} other {Адмовіцца ад запытаў…}}",
|
||||
"notification_requests.edit_selection": "Рэдагаваць",
|
||||
"notification_requests.exit_selection": "Гатова",
|
||||
"notification_requests.explainer_for_limited_account": "Апавяшчэнне з гэтага ўліковага запісу было адфільтраванае, бо гэты ўліковы запіс абмежаваў мадэратар.",
|
||||
"notification_requests.explainer_for_limited_remote_account": "Апавяшчэнні з гэтага ўліковага запісу былі адфільтраваныя, бо гэты ўліковы запіс абмежаваў мадэратар.",
|
||||
"notification_requests.maximize": "Разгарнуць",
|
||||
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
|
||||
"notification_requests.notifications_from": "Апавяшчэнні ад {name}",
|
||||
"notification_requests.title": "Адфільтраваныя апавяшчэнні",
|
||||
"notification_requests.view": "Прагляд апавяшчэнняў",
|
||||
"notifications.clear": "Ачысціць апавяшчэнні",
|
||||
"notifications.clear_confirmation": "Вы ўпэўнены, што жадаеце назаўсёды сцерці ўсё паведамленні?",
|
||||
"notifications.clear_confirmation": "Вы ўпэўнены, што хочаце назаўсёды сцерці ўсе свае паведамленні?",
|
||||
"notifications.clear_title": "Ачысціць апавяшчэнні?",
|
||||
"notifications.column_settings.admin.report": "Новыя скаргі:",
|
||||
"notifications.column_settings.admin.sign_up": "Новыя ўваходы:",
|
||||
@@ -553,7 +568,7 @@
|
||||
"notifications.column_settings.filter_bar.category": "Панэль хуткай фільтрацыі",
|
||||
"notifications.column_settings.follow": "Новыя падпісчыкі:",
|
||||
"notifications.column_settings.follow_request": "Новыя запыты на падпіску:",
|
||||
"notifications.column_settings.group": "Аб'яднаць апавяшчэнні ад падпісчыкаў",
|
||||
"notifications.column_settings.group": "Аб’яднаць апавяшчэнні ад падпісчыкаў",
|
||||
"notifications.column_settings.mention": "Згадванні:",
|
||||
"notifications.column_settings.poll": "Вынікі апытання:",
|
||||
"notifications.column_settings.push": "Push-апавяшчэнні",
|
||||
@@ -570,26 +585,29 @@
|
||||
"notifications.filter.follows": "Падпісаны на",
|
||||
"notifications.filter.mentions": "Згадванні",
|
||||
"notifications.filter.polls": "Вынікі апытання",
|
||||
"notifications.filter.statuses": "Навіны ад людзей, на якіх вы падпісаны",
|
||||
"notifications.filter.statuses": "Навіны ад людзей, на якіх Вы падпісаныя",
|
||||
"notifications.grant_permission": "Дазволіць.",
|
||||
"notifications.group": "{count} Апавяшчэнняў",
|
||||
"notifications.mark_as_read": "Пазначыць усе апавяшчэнні як прачытаныя",
|
||||
"notifications.permission_denied": "Апавяшчэнні на працоўным стале недаступныя з-за папярэдне адхіленага запыта праў браўзера",
|
||||
"notifications.permission_denied_alert": "Апавяшчэнні на працоўным стале не могуць быць уключаныя, з-за таго што запыт браўзера быў адхілены",
|
||||
"notifications.permission_denied_alert": "З-за таго, што запыт браўзера быў раней адхілены, немагчыма ўключыць апавяшчэнні на працоўным стале",
|
||||
"notifications.permission_required": "Апавяшчэнні на працоўным стале недаступныя, з-за таго што неабходны дазвол не быў дадзены.",
|
||||
"notifications.policy.accept": "Прыняць",
|
||||
"notifications.policy.accept_hint": "Паказваць у апавяшчэннях",
|
||||
"notifications.policy.drop": "Iгнараваць",
|
||||
"notifications.policy.drop_hint": "Адправіць у бездань, адкуль больш ніколі не ўбачыце",
|
||||
"notifications.policy.filter": "Фільтраваць",
|
||||
"notifications.policy.filter_limited_accounts_title": "Абмежаваныя ўліковыя запісы",
|
||||
"notifications.policy.filter_hint": "Адправіць у скрыню адфільтраваных апавяшчэнняў",
|
||||
"notifications.policy.filter_limited_accounts_hint": "Абмежавана мадэратарамі сервера",
|
||||
"notifications.policy.filter_limited_accounts_title": "Уліковыя запісы пад мадэрацыяй",
|
||||
"notifications.policy.filter_new_accounts.hint": "Створаныя на працягу {days, plural, one {апошняга # дня} few {апошніх # дзён} many {апошніх # дзён} other {апошняй # дня}}",
|
||||
"notifications.policy.filter_new_accounts_title": "Новыя ўліковыя запісы",
|
||||
"notifications.policy.filter_not_followers_hint": "Уключаючы людзей, якія падпісаны на вас менш, чым {days, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}}",
|
||||
"notifications.policy.filter_not_followers_title": "Людзі, якія не падпісаны на вас",
|
||||
"notifications.policy.filter_not_following_hint": "Пакуль вы не пацвердзіце іх уручную",
|
||||
"notifications.policy.filter_not_following_title": "Людзі, на якіх вы не падпісаны",
|
||||
"notifications.policy.filter_private_mentions_hint": "Фільтруецца за выключэннем адказу на вашае згадванне ці калі вы падпісаны на адпраўніка",
|
||||
"notifications.policy.filter_private_mentions_title": "Непажаданыя асаблівыя згадванні",
|
||||
"notifications.policy.filter_not_following_title": "Людзі, на якіх Вы не падпісаныя",
|
||||
"notifications.policy.filter_private_mentions_hint": "Фільтруецца, за выключэннем адказу на Вашае згадванне ці калі Вы падпісаныя на адпраўніка",
|
||||
"notifications.policy.filter_private_mentions_title": "Непажаданыя прыватныя згадванні",
|
||||
"notifications.policy.title": "Наладзіць апавяшчэнні ад…",
|
||||
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
|
||||
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
|
||||
@@ -599,16 +617,16 @@
|
||||
"onboarding.actions.go_to_explore": "Паглядзіце, што ў трэндзе",
|
||||
"onboarding.actions.go_to_home": "Перайдзіце на свой хатні канал",
|
||||
"onboarding.compose.template": "Прывітанне, #Mastodon!",
|
||||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
||||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыць спробу пазней.",
|
||||
"onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!",
|
||||
"onboarding.follows.title": "Папулярна на Mastodon",
|
||||
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
||||
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||
"onboarding.profile.discoverable_hint": "Калі Вы звяртаецеся да адкрытасці на Mastodon, Вашы допісы могуць з'яўляцца ў выніках пошуку і трэндах, а Ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||
"onboarding.profile.display_name": "Бачнае імя",
|
||||
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
||||
"onboarding.profile.lead": "Вы заўсёды можаце выканаць гэта пазней у Наладах, дзе даступна яшчэ больш параметраў.",
|
||||
"onboarding.profile.note": "Біяграфія",
|
||||
"onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||
"onboarding.profile.note_hint": "Вы можаце @згадваць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||
"onboarding.profile.save_and_continue": "Захаваць і працягнуць",
|
||||
"onboarding.profile.title": "Налады профілю",
|
||||
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
||||
@@ -632,7 +650,7 @@
|
||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ці вы ведаеце?</strong> Паколькі Mastodon дэцэнтралізаваны, некаторыя профілі, якія вам трапляюцца, будуць размяшчацца на іншых серверах, адрозных ад вашага. І ўсё ж вы можаце бесперашкодна ўзаемадзейнічаць з імі! Іх сервер пазначаны ў другой палове імя карыстальніка!",
|
||||
"onboarding.tips.migration": "<strong>Ці вы ведаеце?</strong> Калі вы адчуваеце, што {domain} не з'яўляецца для вас лепшым выбарам у будучыні, вы можаце перайсці на іншы сервер Mastodon, не губляючы сваіх падпісчыкаў. Вы нават можаце стварыць свой уласны сервер!",
|
||||
"onboarding.tips.verification": "<strong>Ці вы ведаеце?</strong> Вы можаце пацвердзіць свой уліковы запіс, размясціўшы спасылку на свой профіль Mastodon на сваім вэб-сайце і дадаўшы вэб-сайт у свой профіль. Ніякіх збораў і дакументаў не патрабуецца!",
|
||||
"password_confirmation.exceeds_maxlength": "Пароль пацьверджання перавышае максімальна дапушчальную даўжыню",
|
||||
"password_confirmation.exceeds_maxlength": "Пароль пацвярджэння перавышае максімальна дапушчальную даўжыню",
|
||||
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
|
||||
"picture_in_picture.restore": "Вярніце назад",
|
||||
"poll.closed": "Закрыта",
|
||||
@@ -652,12 +670,12 @@
|
||||
"privacy.private.short": "Падпісчыкі",
|
||||
"privacy.public.long": "Усе, хто ёсць і каго няма ў Mastodon",
|
||||
"privacy.public.short": "Публічны",
|
||||
"privacy.unlisted.additional": "Паводзіць сябе гэтак жа, як і публічны, за выключэннем таго, што пост не будзе адлюстроўвацца ў жывой стужцы, хэштэгах, аглядзе або ў пошуку Mastodon, нават калі вы ўключылі бачнасць у пошуку ў наладах.",
|
||||
"privacy.unlisted.additional": "Паводзіць сябе гэтак жа, як і публічны, за выключэннем таго, што допіс не будзе адлюстроўвацца ў жывой стужцы, хэштэгах, аглядзе або ў пошуку Mastodon, нават калі Вы ўключылі бачнасць у пошуку ў наладах.",
|
||||
"privacy.unlisted.long": "Менш фанфар ад алгарытмаў",
|
||||
"privacy.unlisted.short": "Ціхі публічны",
|
||||
"privacy_policy.last_updated": "Адноўлена {date}",
|
||||
"privacy_policy.title": "Палітыка канфідэнцыйнасці",
|
||||
"recommended": "Рэкамендуем",
|
||||
"recommended": "Рэкамендаванае",
|
||||
"refresh": "Абнавiць",
|
||||
"regeneration_indicator.label": "Загрузка…",
|
||||
"regeneration_indicator.sublabel": "Пачакайце, рыхтуем вашу стужку!",
|
||||
@@ -676,8 +694,8 @@
|
||||
"reply_indicator.cancel": "Скасаваць",
|
||||
"reply_indicator.poll": "Апытанне",
|
||||
"report.block": "Заблакіраваць",
|
||||
"report.block_explanation": "Вы перастанеце бачыць допісы гэтага карыстальніка. Ён не зможа сачыць за вамі і бачыць вашы допісы. Ён зможа зразумець, што яго заблакіравалі.",
|
||||
"report.categories.legal": "Права",
|
||||
"report.block_explanation": "Вы перастанеце бачыць допісы гэтага карыстальніка. Ён не зможа сачыць за Вамі і бачыць Вашы допісы. Ён зможа зразумець, што яго заблакіравалі.",
|
||||
"report.categories.legal": "Звязанае з правам",
|
||||
"report.categories.other": "Іншае",
|
||||
"report.categories.spam": "Спам",
|
||||
"report.categories.violation": "Змест парушае адно ці некалькі правілаў сервера",
|
||||
@@ -690,9 +708,9 @@
|
||||
"report.forward": "Пераслаць на {target}",
|
||||
"report.forward_hint": "Гэты ўліковы запіс з іншага сервера. Даслаць ананімную копію скаргі і туды?",
|
||||
"report.mute": "Ігнараваць",
|
||||
"report.mute_explanation": "Вы не будзеце бачыць допісы гэтага карыстальніка. Ён усё яшчэ зможа сачыць за вамі і бачыць вашы допісы, не ведаючы, што яго ігнаруюць.",
|
||||
"report.mute_explanation": "Вы не будзеце бачыць допісы гэтага карыстальніка. Ён усё яшчэ зможа сачыць за Вамі і бачыць Вашы допісы, не ведаючы, што яго ігнаруюць.",
|
||||
"report.next": "Далей",
|
||||
"report.placeholder": "Дадатковы каментар",
|
||||
"report.placeholder": "Дадатковыя каментарыі",
|
||||
"report.reasons.dislike": "Мне ён не падабаецца",
|
||||
"report.reasons.dislike_description": "Гэта тое, што Вы не хочаце бачыць",
|
||||
"report.reasons.legal": "Гэта незаконна",
|
||||
@@ -709,9 +727,9 @@
|
||||
"report.statuses.title": "Ці ёсць допісы, каб падмацаваць гэтую скаргу?",
|
||||
"report.submit": "Адправіць",
|
||||
"report.target": "Скарга на {target}",
|
||||
"report.thanks.take_action": "Вось вашыя варыянты кантролю над тым, што вы бачыце в Mastodon:",
|
||||
"report.thanks.take_action_actionable": "Пакуль мы разглядаем яе, вы можаце распачаць дзеянні супраць @{name}:",
|
||||
"report.thanks.title": "Ці хочаце вы бачыць гэта?",
|
||||
"report.thanks.take_action": "Вось Вашыя варыянты кантролю над тым, што Вы бачыце в Mastodon:",
|
||||
"report.thanks.take_action_actionable": "Пакуль мы разглядаем яе, Вы можаце распачаць дзеянні супраць @{name}:",
|
||||
"report.thanks.title": "Ці хочаце Вы бачыць гэта?",
|
||||
"report.thanks.title_actionable": "Дзякуем за зварот, мы разбяромся з гэтым.",
|
||||
"report.unfollow": "Адпісацца ад @{name}",
|
||||
"report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.",
|
||||
@@ -748,24 +766,24 @@
|
||||
"search_results.see_all": "Праглядзець усе",
|
||||
"search_results.statuses": "Допісы",
|
||||
"search_results.title": "Пошук {q}",
|
||||
"server_banner.about_active_users": "Людзі, якія карыстаюцца гэтым сервера на працягу апошніх 30 дзён (Штомесячна Актыўныя Карыстальнікі)",
|
||||
"server_banner.about_active_users": "Людзі, якія карысталіся гэтым серверам на працягу апошніх 30 дзён (штомесячна актыўныя карыстальнікі)",
|
||||
"server_banner.active_users": "актыўныя карыстальнікі",
|
||||
"server_banner.administered_by": "Адміністратар:",
|
||||
"server_banner.is_one_of_many": "{domain} - гэта адзін з многіх незалежных сервераў Mastodon, якія вы можаце выкарыстоўваць для ўдзелу ў fediverse.",
|
||||
"server_banner.is_one_of_many": "{domain} - гэта адзін з многіх незалежных сервераў Mastodon, які Вы можаце выкарыстоўваць для ўдзелу ў федэральным сусвеце.",
|
||||
"server_banner.server_stats": "Статыстыка сервера:",
|
||||
"sign_in_banner.create_account": "Стварыць уліковы запіс",
|
||||
"sign_in_banner.follow_anyone": "Сачыце за кім заўгодна ва ўсім fediverse і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon - лепшы спосаб быць у курсе ўсяго, што адбываецца.",
|
||||
"sign_in_banner.follow_anyone": "Падпісвайцеся на каго захочаце ва ўсім федэральным сусвеце і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon - найлепшы спосаб быць у курсе ўсяго, што адбываецца.",
|
||||
"sign_in_banner.sign_in": "Увайсці",
|
||||
"sign_in_banner.sso_redirect": "Уваход ці рэгістрацыя",
|
||||
"status.admin_account": "Адкрыць інтэрфейс мадэратара для @{name}",
|
||||
"status.admin_domain": "Адкрыць інтэрфейс мадэратара для {domain}",
|
||||
"status.admin_status": "Адкрыць гэты допіс у інтэрфейсе мадэрацыі",
|
||||
"status.block": "Заблакаваць @{name}",
|
||||
"status.block": "Заблакіраваць @{name}",
|
||||
"status.bookmark": "Дадаць закладку",
|
||||
"status.cancel_reblog_private": "Прыбраць",
|
||||
"status.cannot_reblog": "Гэты пост нельга пашырыць",
|
||||
"status.continued_thread": "Працяг тэмы",
|
||||
"status.cannot_reblog": "Гэты допіс нельга пашырыць",
|
||||
"status.continued_thread": "Працяг ланцужка",
|
||||
"status.copy": "Скапіраваць спасылку на допіс",
|
||||
"status.delete": "Выдаліць",
|
||||
"status.detailed_status": "Дэтальны агляд размовы",
|
||||
@@ -776,7 +794,7 @@
|
||||
"status.edited_x_times": "Рэдагавана {count, plural, one {{count} раз} few {{count} разы} many {{count} разоў} other {{count} разу}}",
|
||||
"status.embed": "Атрымаць убудаваны код",
|
||||
"status.favourite": "Упадабанае",
|
||||
"status.favourites": "{count, plural, one {# упадабанае} few {# упадабаныя} many {# упадабаных} other {# упадабанага}}",
|
||||
"status.favourites": "{count, plural, one {упадабанне} few {упадабанні} other {упадабанняў}}",
|
||||
"status.filter": "Фільтраваць гэты допіс",
|
||||
"status.history.created": "Створана {name} {date}",
|
||||
"status.history.edited": "Адрэдагавана {name} {date}",
|
||||
@@ -795,12 +813,12 @@
|
||||
"status.reblog": "Пашырыць",
|
||||
"status.reblog_private": "Пашырыць з першапачатковай бачнасцю",
|
||||
"status.reblogged_by": "{name} пашырыў(-ла)",
|
||||
"status.reblogs": "{count, plural, one {# пашырэнне} few {# пашырэнні} many {# пашырэнняў} other {# пашырэння}}",
|
||||
"status.reblogs": "{count, plural, one {пашырэнне} few {пашырэнні} many {пашырэнняў} other {пашырэння}}",
|
||||
"status.reblogs.empty": "Гэты допіс яшчэ ніхто не пашырыў. Калі гэта адбудзецца, гэтых людзей будзе бачна тут.",
|
||||
"status.redraft": "Выдаліць і паправіць",
|
||||
"status.redraft": "Выдаліць і перапісаць",
|
||||
"status.remove_bookmark": "Выдаліць закладку",
|
||||
"status.replied_in_thread": "Адказаў у тэме",
|
||||
"status.replied_to": "Адказаў {name}",
|
||||
"status.replied_in_thread": "Адказаў(-ла) у ланцужку",
|
||||
"status.replied_to": "Адказаў(-ла) {name}",
|
||||
"status.reply": "Адказаць",
|
||||
"status.replyAll": "Адказаць у ланцугу",
|
||||
"status.report": "Паскардзіцца на @{name}",
|
||||
@@ -827,7 +845,7 @@
|
||||
"time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}",
|
||||
"trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}",
|
||||
"trends.trending_now": "Актуальнае",
|
||||
"ui.beforeunload": "Ваш чарнавік знішчыцца калі вы пакінеце Mastodon.",
|
||||
"ui.beforeunload": "Ваш чарнавік будзе страчаны, калі Вы пакінеце Mastodon.",
|
||||
"units.short.billion": "{count} млрд.",
|
||||
"units.short.million": "{count} міл.",
|
||||
"units.short.thousand": "{count} тыс.",
|
||||
@@ -837,6 +855,11 @@
|
||||
"upload_error.poll": "Немагчыма прымацаваць файл да апытання.",
|
||||
"upload_form.audio_description": "Апісанне для людзей з парушэннямі слыху",
|
||||
"upload_form.description": "Апісаць для людзей са слабым зрокам",
|
||||
"upload_form.drag_and_drop.instructions": "Каб абраць медыя ўлажэнне, націсніце прабел ці Enter. Падчас перасоўвання выкарыстоўвайце кнопкі са стрэлкамі, каб пасунуць медыя далучэнне ў любым напрамку. Націсніце прабел ці Enter зноў, каб перасунуць медыя далучэнне ў новае месца, або Escape для адмены.",
|
||||
"upload_form.drag_and_drop.on_drag_cancel": "Перасоўванне адмененае. Медыя ўлажэнне {item} на месцы.",
|
||||
"upload_form.drag_and_drop.on_drag_end": "Медыя ўлажэнне {item} на месцы.",
|
||||
"upload_form.drag_and_drop.on_drag_over": "Медыя ўлажэнне {item} перасунутае.",
|
||||
"upload_form.drag_and_drop.on_drag_start": "Абранае медыя ўлажэнне {item}.",
|
||||
"upload_form.edit": "Рэдагаваць",
|
||||
"upload_form.thumbnail": "Змяніць мініяцюру",
|
||||
"upload_form.video_description": "Апісанне для людзей з парушэннямі зроку і слыху",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user