mirror of
https://github.com/mastodon/mastodon.git
synced 2025-07-18 10:18:24 +00:00
Compare commits
99 Commits
029c68afd8
...
8e4e7a4273
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8e4e7a4273 | ||
![]() |
201aa292d3 | ||
![]() |
6e43f3e9b4 | ||
![]() |
b593c10a8e | ||
![]() |
8bcdce0e5f | ||
![]() |
7746fb5175 | ||
![]() |
6e130672d7 | ||
![]() |
5bbc3c5ebb | ||
![]() |
d5e2cf5d3c | ||
![]() |
82a6ff091f | ||
![]() |
4b8e60682d | ||
![]() |
6c2db9b1cf | ||
![]() |
30344d6abf | ||
![]() |
1637297085 | ||
![]() |
dec1fb71f4 | ||
![]() |
7273f6c03c | ||
![]() |
a3ffd2edf8 | ||
![]() |
a2c5eace88 | ||
![]() |
a643d9d498 | ||
![]() |
3b52dca405 | ||
![]() |
853a0c466e | ||
![]() |
94bceb8683 | ||
![]() |
88b0f3a172 | ||
![]() |
b69b5ba775 | ||
![]() |
c442589593 | ||
![]() |
28633a504a | ||
![]() |
ad78701b6f | ||
![]() |
1496488771 | ||
![]() |
dd3d958e75 | ||
![]() |
b363a3651d | ||
![]() |
86645fc14c | ||
![]() |
f9beecb343 | ||
![]() |
4ecfbd3920 | ||
![]() |
a315934314 | ||
![]() |
e9170e2de1 | ||
![]() |
5cfc1fabcf | ||
![]() |
786b12e379 | ||
![]() |
e7c5c25de8 | ||
![]() |
a1e8813522 | ||
![]() |
76c1446416 | ||
![]() |
8bd2c87399 | ||
![]() |
1e2d77f2c7 | ||
![]() |
fb6c22f5c2 | ||
![]() |
f7259f625f | ||
![]() |
b628a98d32 | ||
![]() |
d8fa807998 | ||
![]() |
ef66d8379c | ||
![]() |
8ee6cee36e | ||
![]() |
71b2120e5c | ||
![]() |
b10078633c | ||
![]() |
b5eebd4d2b | ||
![]() |
fdefc4d2b4 | ||
![]() |
f6b2609353 | ||
![]() |
bdffdcb12f | ||
![]() |
1ebb87a6a8 | ||
![]() |
83660ee381 | ||
![]() |
1fa72d6c44 | ||
![]() |
5a7c0d42f7 | ||
![]() |
e8d2432e6a | ||
![]() |
2af17adc34 | ||
![]() |
e97f43399b | ||
![]() |
c66c5fd73d | ||
![]() |
3c0767f543 | ||
![]() |
70cd1fdc63 | ||
![]() |
39028dde40 | ||
![]() |
6e39b5ef04 | ||
![]() |
49db8a9662 | ||
![]() |
2cfa6cb0e0 | ||
![]() |
1ae3510ede | ||
![]() |
6f1135d763 | ||
![]() |
52bc2f64f4 | ||
![]() |
b1375328e1 | ||
![]() |
9443e2cc4b | ||
![]() |
3a533c6c8d | ||
![]() |
c047014214 | ||
![]() |
68b05e994f | ||
![]() |
a203a05eb1 | ||
![]() |
68090cd8be | ||
![]() |
dd064aaa36 | ||
![]() |
e6e8974785 | ||
![]() |
498af63b85 | ||
![]() |
c357a7f8d6 | ||
![]() |
bae258925c | ||
![]() |
e8a603b18f | ||
![]() |
f00c8e3245 | ||
![]() |
153af19f55 | ||
![]() |
964916c71b | ||
![]() |
8782e860b6 | ||
![]() |
641c0c6393 | ||
![]() |
0383100b0e | ||
![]() |
87db28cebc | ||
![]() |
ac4b735c67 | ||
![]() |
6d017dbf10 | ||
![]() |
0d650780e2 | ||
![]() |
1804a87193 | ||
![]() |
9576434d47 | ||
![]() |
b804ed0cba | ||
![]() |
48451b782d | ||
![]() |
2e0a00ab46 |
1
.github/.well-known/funding-manifest-urls
vendored
Normal file
1
.github/.well-known/funding-manifest-urls
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
https://joinmastodon.org/funding.json
|
1
.github/workflows/crowdin-upload.yml
vendored
1
.github/workflows/crowdin-upload.yml
vendored
|
@ -14,6 +14,7 @@ on:
|
|||
- config/locales/devise.en.yml
|
||||
- config/locales/doorkeeper.en.yml
|
||||
- .github/workflows/crowdin-upload.yml
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
upload-translations:
|
||||
|
|
|
@ -81,3 +81,6 @@ AUTHORS.md
|
|||
|
||||
# Process a few selected JS files
|
||||
!lint-staged.config.js
|
||||
|
||||
# Ignore config YAML files that include ERB/ruby code prettier does not understand
|
||||
/config/email.yml
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import { resolve } from 'node:path';
|
||||
|
||||
import type { StorybookConfig } from '@storybook/react-vite';
|
||||
|
||||
const config: StorybookConfig = {
|
||||
|
@ -26,6 +28,12 @@ const config: StorybookConfig = {
|
|||
'oops.png',
|
||||
].map((path) => ({ from: `../public/${path}`, to: `/${path}` })),
|
||||
],
|
||||
viteFinal(config) {
|
||||
// For an unknown reason, Storybook does not use the root
|
||||
// from the Vite config so we need to set it manually.
|
||||
config.root = resolve(__dirname, '../app/javascript');
|
||||
return config;
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
|
41
CHANGELOG.md
41
CHANGELOG.md
|
@ -2,7 +2,17 @@
|
|||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [4.4.0] - UNRELEASED
|
||||
## [4.4.1] - 2025-07-09
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix nearly every sub-directory being crawled as part of Vite build (#35323 by @ClearlyClaire)
|
||||
- Fix assets not building when Redis is unavailable (#35321 by @oneiros)
|
||||
- Fix replying from media modal or pop-in-player tagging user `@undefined` (#35317 by @ClearlyClaire)
|
||||
- Fix support for special characters in various environment variables (#35314 by @mjankowski and @ClearlyClaire)
|
||||
- Fix some database migrations failing for indexes manually removed by admins (#35309 by @mjankowski)
|
||||
|
||||
## [4.4.0] - 2025-07-08
|
||||
|
||||
### Added
|
||||
|
||||
|
@ -23,7 +33,7 @@ All notable changes to this project will be documented in this file.
|
|||
Support for verifying remote quotes according to [FEP-044f](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md) and displaying them in the Web UI has been implemented.\
|
||||
Quoting other people is not implemented yet, and it is currently not possible to mark your own posts as allowing quotes. However, a new “Who can quote” setting has been added to the “Posting defaults” section of the user settings. This setting allows you to set a default that will be used for new posts made on Mastodon 4.5 and newer, when quote posts will be fully implemented.\
|
||||
In the REST API, quote posts are represented by a new `quote` attribute on `Status` and `StatusEdit` entities: https://docs.joinmastodon.org/entities/StatusEdit/#quote https://docs.joinmastodon.org/entities/Status/#quote
|
||||
- Add ability to reorder and translate server rules (#34637, #34737, #34494, #34756, #34820 and #34997 by @ChaosExAnima and @ClearlyClaire)\
|
||||
- Add ability to reorder and translate server rules (#34637, #34737, #34494, #34756, #34820, #34997, #35170, #35174 and #35174 by @ChaosExAnima and @ClearlyClaire)\
|
||||
Rules are now shown in the user’s language, if a translation has been set.\
|
||||
In the REST API, `Rule` entities now have a new `translations` attribute: https://docs.joinmastodon.org/entities/Rule/#translations
|
||||
- Add emoji from Twemoji 15.1.0, including in the emoji picker/completion (#33395, #34321, #34620, and #34677 by @ChaosExAnima, @ClearlyClaire, @TheEssem, and @eramdam)
|
||||
|
@ -38,8 +48,11 @@ All notable changes to this project will be documented in this file.
|
|||
Server administrators can now chose to opt in to transmit referrer information when following an external link. Only the domain name is transmitted, not the referrer path.
|
||||
- Add double tap to zoom and swipe to dismiss to media modal in web UI (#34210 by @Gargron)
|
||||
- Add link from Web UI for Hashtags to the Moderation UI (#31448 by @ThisIsMissEm)
|
||||
- **Add terms of service** (#33055, #33233, #33230, #33703, #33699, #33994, #33993, #34105, #34122, #34200, #34527 and #35053 by @ClearlyClaire, @Gargron, @mjankowski, and @oneiros)\
|
||||
Server administrators can now fill in Terms of Service, optionally using a provided template.
|
||||
- **Add terms of service** (#33055, #33233, #33230, #33703, #33699, #33994, #33993, #34105, #34122, #34200, #34527, #35053, #35115, #35126, #35127 and #35233 by @ClearlyClaire, @Gargron, @mjankowski, and @oneiros)\
|
||||
Server administrators can now fill in Terms of Service and notify their users of upcoming changes.
|
||||
- Add optional bulk mailer settings (#35191 and #35203 by @oneiros)\
|
||||
This adds the optional environment variables `BULK_SMTP_PORT`, `BULK_SMTP_SERVER`, `BULK_SMTP_LOGIN` and so on analogous to `SMTP_PORT`, `SMTP_SERVER`, `SMTP_LOGIN` and related SMTP configuration environment variables.\
|
||||
When `BULK_SMTP_SERVER` is set, this group of variables is used instead of the regular ones for sending announcement notification emails and Terms of Service notification emails.
|
||||
- **Add age verification on sign-up** (#34150, #34663, and #34636 by @ClearlyClaire and @Gargron)\
|
||||
Server administrators now have a setting to set a minimum age requirement for creating a new server, asking users for their date of birth. The date of birth is checked against the minimum age requirement server-side but not stored.\
|
||||
The following REST API changes have been made to accommodate this:
|
||||
|
@ -48,10 +61,12 @@ All notable changes to this project will be documented in this file.
|
|||
- Add ability to dismiss alt text badge by tapping it in web UI (#33737 by @Gargron)
|
||||
- Add loading indicator to timeline gap indicators in web UI (#33762 by @Gargron)
|
||||
- Add interaction modal when trying to interact with a poll while logged out (#32609 by @ThisIsMissEm)
|
||||
- **Add experimental FASP support** (#34031, #34415, #34765, #34965, and #34964 by @oneiros)\
|
||||
- **Add experimental FASP support** (#34031, #34415, #34765, #34965, #34964, #34033, #35218, #35262 and #35263 by @oneiros)\
|
||||
This is a first step towards supporting “Fediverse Auxiliary Service Providers” (https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications). This is mostly interesting to developers who would like to implement their own FASP, but also includes the capability to share data with a discovery provider (see https://www.fediscovery.org).
|
||||
- Add ability for admins to send announcements to all users via email (#33928 and #34411 by @ClearlyClaire)\
|
||||
This is meant for critical announcements only, as this will potentially send a lot of emails and cannot be opted out of by users.
|
||||
- Add Server Moderation Notes (#31529 by @ThisIsMissEm)
|
||||
- Add loading spinner to “Post” button when sending a post (#35153 by @diondiondion)
|
||||
- Add option to use system scrollbar styling (#32117 by @vmstan)
|
||||
- Add hover cards to follow suggestions (#33749 by @ClearlyClaire)
|
||||
- Add `t` hotkey for post translations (#33441 by @ClearlyClaire)
|
||||
|
@ -59,7 +74,7 @@ All notable changes to this project will be documented in this file.
|
|||
- Add dropdown menu with quick actions to lists of accounts in web UI (#34391, #34709, and #34767 by @Gargron, @diondiondion, and @mkljczk)
|
||||
- Add support for displaying “year in review” notification in web UI (#32710, #32765, #32709, #32807, #32914, #33148, and #33882 by @Gargron and @mjankowski)\
|
||||
Note that the notification is currently not generated automatically, and at the moment requires a manual undocumented administrator action.
|
||||
- Add experimental support for receiving HTTP Message Signatures (RFC9421) (#34814 and #35033 by @oneiros)\
|
||||
- Add experimental support for receiving HTTP Message Signatures (RFC9421) (#34814, #35033, #35109 and #35278 by @oneiros)\
|
||||
For now, this needs to be explicitly enabled through the `http_message_signatures` feature flag (`EXPERIMENTAL_FEATURES=http_message_signatures`). This currently only covers verifying such signatures (inbound HTTP requests), not issuing them (outbound HTTP requests).
|
||||
- Add experimental Async Refreshes API (#34918 by @oneiros)
|
||||
- Add experimental server-side feature to fetch remote replies (#32615, #34147, #34149, #34151, #34615, #34682, and #34702 by @ClearlyClaire and @sneakers-the-rat)\
|
||||
|
@ -112,7 +127,7 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
### Changed
|
||||
|
||||
- Change design of navigation panel in Web UI, change layout on narrow screens (#34910, #34987, #35017, #34986, #35029, #35065, #35067 and #35072 by @ClearlyClaire, @Gargron, and @diondiondion)
|
||||
- Change design of navigation panel in Web UI, change layout on narrow screens (#34910, #34987, #35017, #34986, #35029, #35065, #35067, #35072, #35074, #35075, #35101, #35173, #35183, #35193 and #35225 by @ClearlyClaire, @Gargron, and @diondiondion)
|
||||
- Change design of lists in web UI (#32881, #33054, and #33036 by @Gargron)
|
||||
- Change design of edit media modal in web UI (#33516, #33702, #33725, #33725, #33771, and #34345 by @Gargron)
|
||||
- Change design of audio player in web UI (#34520, #34740, #34865, #34929, #34933, and #35034 by @ClearlyClaire, @Gargron, and @diondiondion)
|
||||
|
@ -126,15 +141,17 @@ All notable changes to this project will be documented in this file.
|
|||
Moderators will still be able to access them while they are kept, but they won't be accessible to the public in the meantime.
|
||||
- Change language names in compose box language picker to be localized (#33402 by @c960657)
|
||||
- Change onboarding flow in web UI (#32998, #33119, #33471 and #34962 by @ClearlyClaire and @Gargron)
|
||||
- Change Advanced Web UI to use the new main menu instead of the “Getting started” column (#35117 by @diondiondion)
|
||||
- Change emoji categories in admin interface to be ordered by name (#33630 by @ShadowJonathan)
|
||||
- Change design of rich text elements in web UI (#32633 by @Gargron)
|
||||
- Change wording of “single choice” to “pick one” in poll authoring form (#32397 by @ThisIsMissEm)
|
||||
- Change returned favorite and boost counts to use those provided by the remote server, if available (#32620, #34594, #34618, and #34619 by @ClearlyClaire and @sneakers-the-rat)
|
||||
- Change label of favourite notifications on private mentions (#31659 by @ClearlyClaire)
|
||||
- Change wording of "discard draft?" confirmation dialogs (#35192 by @diondiondion)
|
||||
- Change `libvips` to be enabled by default in place of ImageMagick (#34741 and #34753 by @ClearlyClaire and @diondiondion)
|
||||
- Change avatar and header size limits from 2MB to 8MB when using libvips (#33002 by @Gargron)
|
||||
- Change search to use query params in web UI (#32949 and #33670 by @ClearlyClaire and @Gargron)
|
||||
- Change build system from Webpack to Vite (#34454, #34450, #34758, #34768, #34813, #34808, #34837, #34732, #35007 and #35035 by @ChaosExAnima, @ClearlyClaire, @mjankowski, and @renchap)
|
||||
- Change build system from Webpack to Vite (#34454, #34450, #34758, #34768, #34813, #34808, #34837, #34732, #35007, #35035 and #35177 by @ChaosExAnima, @ClearlyClaire, @mjankowski, and @renchap)
|
||||
- Change account creation API to forbid creation from user tokens (#34828 by @ThisIsMissEm)
|
||||
- Change `/api/v2/instance` to be enabled without authentication when limited federation mode is enabled (#34576 by @ClearlyClaire)
|
||||
- Change `DEFAULT_LOCALE` to not override unauthenticated users’ browser language (#34535 by @ClearlyClaire)\
|
||||
|
@ -202,17 +219,23 @@ All notable changes to this project will be documented in this file.
|
|||
- Fix not being able to scroll dropdown on touch devices in web UI (#34873 by @Gargron)
|
||||
- Fix inconsistent filtering of silenced accounts for other silenced accounts (#34863 by @ClearlyClaire)
|
||||
- Fix update checker listing updates older or equal to current running version (#33906 by @ClearlyClaire)
|
||||
- Fix clicking a status multiple times causing duplicate entries in browser history (#35118 by @ClearlyClaire)
|
||||
- Fix “Alt text” button submitting form in moderation interface (#35147 by @ClearlyClaire)
|
||||
- Fix Firefox sometimes not updating spellcheck language in textarea (#35148 by @ClearlyClaire)
|
||||
- Fix `NoMethodError` in edge case of emoji cache handling (#34749 by @dariusk)
|
||||
- Fix handling of inlined `featured` collections in ActivityPub actor objects (#34789 and #34811 by @ClearlyClaire)
|
||||
- Fix long link names in admin sidebar being truncated (#34727 by @diondiondion)
|
||||
- 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 use of the deprecated `/api/v1/instance` endpoint in the moderation interface (#34613 by @renchap)
|
||||
- Fix inaccessible “Clear search” button (#35152 and #35281 by @diondiondion)
|
||||
- Fix search operators sometimes getting lost (#35190 by @ClearlyClaire)
|
||||
- Fix directory scroll position reset (#34560 by @przucidlo)
|
||||
- Fix needlessly complex SVG paths for oEmbed and logo (#34538 by @edent)
|
||||
- Fix avatar sizing with long account name in some UI elements (#34514 by @gomasy)
|
||||
- Fix empty menu section in status dropdown (#34431 by @ClearlyClaire)
|
||||
- Fix the delete suggestion button not working (#34396 and #34398 by @ClearlyClaire and @renchap)
|
||||
- Fix popover/dialog backgrounds not being blurred on older Webkit browsers (#35220 by @diondiondion)
|
||||
- Fix radio buttons not always being correctly centered (#34389 by @ChaosExAnima)
|
||||
- Fix visual glitches with adding post filters (#34387 by @ChaosExAnima)
|
||||
- Fix bugs with upload progress (#34325 by @ChaosExAnima)
|
||||
|
@ -220,7 +243,7 @@ All notable changes to this project will be documented in this file.
|
|||
- Fix extra space under left-indented vertical videos (#34313 by @ClearlyClaire)
|
||||
- Fix glitchy iOS media attachment drag interactions (#35057 by @diondiondion)
|
||||
- Fix zoomed images being blurry in Safari (#35052 by @diondiondion)
|
||||
- Fix redundant focus stop within status component in Web UI (#35037 and #35051 by @diondiondion)
|
||||
- Fix redundant focus stop within status component in Web UI and make focus style more noticeable (#35037, #35051, #35096, #35150 and #35251 by @diondiondion)
|
||||
- Fix digits in media player time readout not having a consistent width (#35038 by @diondiondion)
|
||||
- Fix wrong text color for “Open in advanced web interface” banner in high-contrast theme (#35032 by @diondiondion)
|
||||
- Fix hover card for limited accounts not hiding information as expected (#35024 by @diondiondion)
|
||||
|
|
|
@ -186,7 +186,7 @@ FROM build AS libvips
|
|||
|
||||
# libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"]
|
||||
# renovate: datasource=github-releases depName=libvips packageName=libvips/libvips
|
||||
ARG VIPS_VERSION=8.17.0
|
||||
ARG VIPS_VERSION=8.17.1
|
||||
# libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"]
|
||||
ARG VIPS_URL=https://github.com/libvips/libvips/releases/download
|
||||
|
||||
|
|
2
Gemfile
2
Gemfile
|
@ -62,7 +62,7 @@ gem 'inline_svg'
|
|||
gem 'irb', '~> 1.8'
|
||||
gem 'kaminari', '~> 1.2'
|
||||
gem 'link_header', '~> 0.0'
|
||||
gem 'linzer', '~> 0.7.2'
|
||||
gem 'linzer', '~> 0.7.7'
|
||||
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
|
||||
gem 'mime-types', '~> 3.7.0', require: 'mime/types/columnar'
|
||||
gem 'mutex_m'
|
||||
|
|
20
Gemfile.lock
20
Gemfile.lock
|
@ -90,7 +90,7 @@ GEM
|
|||
public_suffix (>= 2.0.2, < 7.0)
|
||||
aes_key_wrap (1.1.0)
|
||||
android_key_attestation (0.3.0)
|
||||
annotaterb (4.16.0)
|
||||
annotaterb (4.17.0)
|
||||
activerecord (>= 6.0.0)
|
||||
activesupport (>= 6.0.0)
|
||||
ast (2.4.3)
|
||||
|
@ -231,7 +231,7 @@ GEM
|
|||
excon (1.2.5)
|
||||
logger
|
||||
fabrication (3.0.0)
|
||||
faker (3.5.1)
|
||||
faker (3.5.2)
|
||||
i18n (>= 1.8.11, < 2)
|
||||
faraday (2.13.1)
|
||||
faraday-net_http (>= 2.0, < 3.5)
|
||||
|
@ -287,7 +287,7 @@ GEM
|
|||
activesupport (>= 5.1)
|
||||
haml (>= 4.0.6)
|
||||
railties (>= 5.1)
|
||||
haml_lint (0.63.0)
|
||||
haml_lint (0.64.0)
|
||||
haml (>= 5.0)
|
||||
parallel (~> 1.10)
|
||||
rainbow
|
||||
|
@ -365,7 +365,7 @@ GEM
|
|||
json-ld-preloaded (3.3.1)
|
||||
json-ld (~> 3.3)
|
||||
rdf (~> 3.3)
|
||||
json-schema (5.1.1)
|
||||
json-schema (5.2.1)
|
||||
addressable (~> 2.8)
|
||||
bigdecimal (~> 3.1)
|
||||
jsonapi-renderer (0.2.2)
|
||||
|
@ -403,7 +403,7 @@ GEM
|
|||
rexml
|
||||
link_header (0.0.8)
|
||||
lint_roller (1.1.0)
|
||||
linzer (0.7.3)
|
||||
linzer (0.7.7)
|
||||
cgi (~> 0.4.2)
|
||||
forwardable (~> 1.3, >= 1.3.3)
|
||||
logger (~> 1.7, >= 1.7.0)
|
||||
|
@ -553,7 +553,7 @@ GEM
|
|||
opentelemetry-instrumentation-faraday (0.27.0)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||
opentelemetry-instrumentation-http (0.25.0)
|
||||
opentelemetry-instrumentation-http (0.25.1)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||
opentelemetry-instrumentation-http_client (0.23.0)
|
||||
|
@ -682,7 +682,7 @@ GEM
|
|||
activesupport (= 8.0.2)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 8.0.2)
|
||||
rails-dom-testing (2.2.0)
|
||||
rails-dom-testing (2.3.0)
|
||||
activesupport (>= 5.0.0)
|
||||
minitest
|
||||
nokogiri (>= 1.6)
|
||||
|
@ -761,7 +761,7 @@ GEM
|
|||
rspec-mocks (~> 3.0)
|
||||
sidekiq (>= 5, < 9)
|
||||
rspec-support (3.13.4)
|
||||
rubocop (1.77.0)
|
||||
rubocop (1.78.0)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (~> 3.17.0.2)
|
||||
lint_roller (~> 1.1.0)
|
||||
|
@ -815,7 +815,7 @@ GEM
|
|||
sanitize (7.0.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.16.8)
|
||||
scenic (1.8.0)
|
||||
scenic (1.9.0)
|
||||
activerecord (>= 4.0.0)
|
||||
railties (>= 4.0.0)
|
||||
securerandom (0.4.1)
|
||||
|
@ -1008,7 +1008,7 @@ DEPENDENCIES
|
|||
letter_opener (~> 1.8)
|
||||
letter_opener_web (~> 3.0)
|
||||
link_header (~> 0.0)
|
||||
linzer (~> 0.7.2)
|
||||
linzer (~> 0.7.7)
|
||||
lograge (~> 0.12)
|
||||
mail (~> 2.8)
|
||||
mario-redis-lock (~> 1.2)
|
||||
|
|
64
README.md
64
README.md
|
@ -17,71 +17,71 @@
|
|||
<img src="https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg" alt="Crowdin" /></a>
|
||||
</p>
|
||||
|
||||
Mastodon is a **free, open-source social network server** based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, and video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub!)
|
||||
Mastodon is a **free, open-source social network server** based on [ActivityPub](https://www.w3.org/TR/activitypub/) where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, and video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub!)
|
||||
|
||||
## Navigation
|
||||
|
||||
- [Project homepage 🐘](https://joinmastodon.org)
|
||||
- [Support the development via Patreon][patreon]
|
||||
- [View sponsors](https://joinmastodon.org/sponsors)
|
||||
- [Blog](https://blog.joinmastodon.org)
|
||||
- [Documentation](https://docs.joinmastodon.org)
|
||||
- [Roadmap](https://joinmastodon.org/roadmap)
|
||||
- [Official Docker image](https://github.com/mastodon/mastodon/pkgs/container/mastodon)
|
||||
- [Browse Mastodon servers](https://joinmastodon.org/communities)
|
||||
- [Browse Mastodon apps](https://joinmastodon.org/apps)
|
||||
|
||||
[patreon]: https://www.patreon.com/mastodon
|
||||
- [Donate to support development 🎁](https://joinmastodon.org/sponsors#donate)
|
||||
- [View sponsors](https://joinmastodon.org/sponsors)
|
||||
- [Blog 📰](https://blog.joinmastodon.org)
|
||||
- [Documentation 📚](https://docs.joinmastodon.org)
|
||||
- [Official container image 🚢](https://github.com/mastodon/mastodon/pkgs/container/mastodon)
|
||||
|
||||
## Features
|
||||
|
||||
<img src="/app/javascript/images/elephant_ui_working.svg?raw=true" align="right" width="30%" />
|
||||
<img src="./app/javascript/images/elephant_ui_working.svg?raw=true" align="right" width="30%" />
|
||||
|
||||
**No vendor lock-in: Fully interoperable with any conforming platform** - It doesn't have to be Mastodon; whatever implements ActivityPub is part of the social network! [Learn more](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/)
|
||||
**Part of the Fediverse. Based on open standards, with no vendor lock-in.** - the network goes beyond just Mastodon; anything that implements ActivityPub is part of a broader social network known as [the Fediverse](https://jointhefediverse.net/). You can follow and interact with users on other servers (including those running different software), and they can follow you back.
|
||||
|
||||
**Real-time, chronological timeline updates** - updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well!
|
||||
**Real-time, chronological timeline updates** - updates of people you're following appear in real-time in the UI.
|
||||
|
||||
**Media attachments like images and short videos** - upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos loop continuously!
|
||||
**Media attachments** - upload and view images and videos attached to the updates. Videos with no audio track are treated like animated GIFs; normal videos loop continuously.
|
||||
|
||||
**Safety and moderation tools** - Mastodon includes private posts, locked accounts, phrase filtering, muting, blocking, and all sorts of other features, along with a reporting and moderation system. [Learn more](https://blog.joinmastodon.org/2018/07/cage-the-mastodon/)
|
||||
**Safety and moderation tools** - Mastodon includes private posts, locked accounts, phrase filtering, muting, blocking, and many other features, along with a reporting and moderation system.
|
||||
|
||||
**OAuth2 and a straightforward REST API** - Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Streaming APIs. This results in a rich app ecosystem with a lot of choices!
|
||||
**OAuth2 and a straightforward REST API** - Mastodon acts as an OAuth2 provider, and third party apps can use the REST and Streaming APIs. This results in a [rich app ecosystem](https://joinmastodon.org/apps) with a variety of choices!
|
||||
|
||||
## Deployment
|
||||
|
||||
### Tech stack
|
||||
|
||||
- **Ruby on Rails** powers the REST API and other web pages
|
||||
- **React.js** and **Redux** are used for the dynamic parts of the interface
|
||||
- **Node.js** powers the streaming API
|
||||
- [Ruby on Rails](https://github.com/rails/rails) powers the REST API and other web pages.
|
||||
- [PostgreSQL](https://www.postgresql.org/) is the main database.
|
||||
- [Redis](https://redis.io/) and [Sidekiq](https://sidekiq.org/) are used for caching and queueing.
|
||||
- [Node.js](https://nodejs.org/) powers the streaming API.
|
||||
- [React.js](https://reactjs.org/) and [Redux](https://redux.js.org/) are used for the dynamic parts of the interface.
|
||||
- [BrowserStack](https://www.browserstack.com/) supports testing on real devices and browsers. (This project is tested with BrowserStack)
|
||||
- [Chromatic](https://www.chromatic.com/) provides visual regression testing. (This project is tested with Chromatic)
|
||||
|
||||
### Requirements
|
||||
|
||||
- **Ruby** 3.2+
|
||||
- **PostgreSQL** 13+
|
||||
- **Redis** 6.2+
|
||||
- **Ruby** 3.2+
|
||||
- **Node.js** 20+
|
||||
|
||||
The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, and **Scalingo**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
|
||||
This repository includes deployment configurations for **Docker and docker-compose**, as well as for other environments like Heroku and Scalingo. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). A [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the main documentation.
|
||||
|
||||
## Contributing
|
||||
|
||||
Mastodon is **free, open-source software** licensed under **AGPLv3**.
|
||||
Mastodon is **free, open-source software** licensed under **AGPLv3**. We welcome contributions and help from anyone who wants to improve the project.
|
||||
|
||||
You can open issues for bugs you've found or features you think are missing. You
|
||||
can also submit pull requests to this repository or translations via Crowdin. To
|
||||
get started, look at the [CONTRIBUTING] and [DEVELOPMENT] guides. For changes
|
||||
accepted into Mastodon, you can request to be paid through our [OpenCollective].
|
||||
You should read the overall [CONTRIBUTING](https://github.com/mastodon/.github/blob/main/CONTRIBUTING.md) guide, which covers our development processes.
|
||||
|
||||
**IRC channel**: #mastodon on [`irc.libera.chat`](https://libera.chat)
|
||||
You should also read and understand the [CODE OF CONDUCT](https://github.com/mastodon/.github/blob/main/CODE_OF_CONDUCT.md) that enables us to maintain a welcoming and inclusive community. Collaboration begins with mutual respect and understanding.
|
||||
|
||||
## License
|
||||
You can learn about setting up a development environment in the [DEVELOPMENT](docs/DEVELOPMENT.md) documentation.
|
||||
|
||||
If you would like to help with translations 🌐 you can do so on [Crowdin](https://crowdin.com/project/mastodon).
|
||||
|
||||
## LICENSE
|
||||
|
||||
Copyright (c) 2016-2025 Eugen Rochko (+ [`mastodon authors`](AUTHORS.md))
|
||||
|
||||
Licensed under GNU Affero General Public License as stated in the [LICENSE](LICENSE):
|
||||
|
||||
```
|
||||
```text
|
||||
Copyright (c) 2016-2025 Eugen Rochko & other Mastodon contributors
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it under
|
||||
|
@ -97,7 +97,3 @@ details.
|
|||
You should have received a copy of the GNU Affero General Public License along
|
||||
with this program. If not, see https://www.gnu.org/licenses/
|
||||
```
|
||||
|
||||
[CONTRIBUTING]: CONTRIBUTING.md
|
||||
[DEVELOPMENT]: docs/DEVELOPMENT.md
|
||||
[OpenCollective]: https://opencollective.com/mastodon
|
||||
|
|
11
SECURITY.md
11
SECURITY.md
|
@ -13,8 +13,9 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
|
|||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | --------- |
|
||||
| 4.3.x | Yes |
|
||||
| 4.2.x | Yes |
|
||||
| < 4.2 | No |
|
||||
| Version | Supported |
|
||||
| ------- | ---------------- |
|
||||
| 4.4.x | Yes |
|
||||
| 4.3.x | Yes |
|
||||
| 4.2.x | Until 2026-01-08 |
|
||||
| < 4.2 | No |
|
||||
|
|
|
@ -14,16 +14,20 @@ module Admin
|
|||
def create
|
||||
authorize @account, :show?
|
||||
|
||||
account_action = Admin::AccountAction.new(resource_params)
|
||||
account_action.target_account = @account
|
||||
account_action.current_account = current_account
|
||||
@account_action = Admin::AccountAction.new(resource_params)
|
||||
@account_action.target_account = @account
|
||||
@account_action.current_account = current_account
|
||||
|
||||
account_action.save!
|
||||
|
||||
if account_action.with_report?
|
||||
redirect_to admin_reports_path, notice: I18n.t('admin.reports.processed_msg', id: resource_params[:report_id])
|
||||
if @account_action.save
|
||||
if @account_action.with_report?
|
||||
redirect_to admin_reports_path, notice: I18n.t('admin.reports.processed_msg', id: resource_params[:report_id])
|
||||
else
|
||||
redirect_to admin_account_path(@account.id)
|
||||
end
|
||||
else
|
||||
redirect_to admin_account_path(@account.id)
|
||||
@warning_presets = AccountWarningPreset.all
|
||||
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -13,27 +13,9 @@ class Admin::Reports::ActionsController < Admin::BaseController
|
|||
|
||||
case action_from_button
|
||||
when 'delete', 'mark_as_sensitive'
|
||||
status_batch_action = Admin::StatusBatchAction.new(
|
||||
type: action_from_button,
|
||||
status_ids: @report.status_ids,
|
||||
current_account: current_account,
|
||||
report_id: @report.id,
|
||||
send_email_notification: !@report.spam?,
|
||||
text: params[:text]
|
||||
)
|
||||
|
||||
status_batch_action.save!
|
||||
Admin::StatusBatchAction.new(status_batch_action_params).save!
|
||||
when 'silence', 'suspend'
|
||||
account_action = Admin::AccountAction.new(
|
||||
type: action_from_button,
|
||||
report_id: @report.id,
|
||||
target_account: @report.target_account,
|
||||
current_account: current_account,
|
||||
send_email_notification: !@report.spam?,
|
||||
text: params[:text]
|
||||
)
|
||||
|
||||
account_action.save!
|
||||
Admin::AccountAction.new(account_action_params).save!
|
||||
else
|
||||
return redirect_to admin_report_path(@report), alert: I18n.t('admin.reports.unknown_action_msg', action: action_from_button)
|
||||
end
|
||||
|
@ -43,6 +25,26 @@ class Admin::Reports::ActionsController < Admin::BaseController
|
|||
|
||||
private
|
||||
|
||||
def status_batch_action_params
|
||||
shared_params
|
||||
.merge(status_ids: @report.status_ids)
|
||||
end
|
||||
|
||||
def account_action_params
|
||||
shared_params
|
||||
.merge(target_account: @report.target_account)
|
||||
end
|
||||
|
||||
def shared_params
|
||||
{
|
||||
current_account: current_account,
|
||||
report_id: @report.id,
|
||||
send_email_notification: !@report.spam?,
|
||||
text: params[:text],
|
||||
type: action_from_button,
|
||||
}
|
||||
end
|
||||
|
||||
def set_report
|
||||
@report = Report.find(params[:report_id])
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V2::SearchController < Api::BaseController
|
||||
include AsyncRefreshesConcern
|
||||
include Authorization
|
||||
|
||||
RESULTS_LIMIT = 20
|
||||
|
@ -13,6 +14,7 @@ class Api::V2::SearchController < Api::BaseController
|
|||
before_action :remote_resolve_error, if: :remote_resolve_requested?
|
||||
end
|
||||
before_action :require_valid_pagination_options!
|
||||
before_action :handle_fasp_requests
|
||||
|
||||
def index
|
||||
@search = Search.new(search_results)
|
||||
|
@ -37,6 +39,21 @@ class Api::V2::SearchController < Api::BaseController
|
|||
render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401
|
||||
end
|
||||
|
||||
def handle_fasp_requests
|
||||
return unless Mastodon::Feature.fasp_enabled?
|
||||
return if params[:q].blank?
|
||||
|
||||
# Do not schedule a new retrieval if the request is a follow-up
|
||||
# to an earlier retrieval
|
||||
return if request.headers['Mastodon-Async-Refresh-Id'].present?
|
||||
|
||||
refresh_key = "fasp:account_search:#{Digest::MD5.base64digest(params[:q])}"
|
||||
return if AsyncRefresh.new(refresh_key).running?
|
||||
|
||||
add_async_refresh_header(AsyncRefresh.create(refresh_key))
|
||||
@query_fasp = true
|
||||
end
|
||||
|
||||
def remote_resolve_requested?
|
||||
truthy_param?(:resolve)
|
||||
end
|
||||
|
@ -58,7 +75,8 @@ class Api::V2::SearchController < Api::BaseController
|
|||
search_params.merge(
|
||||
resolve: truthy_param?(:resolve),
|
||||
exclude_unreviewed: truthy_param?(:exclude_unreviewed),
|
||||
following: truthy_param?(:following)
|
||||
following: truthy_param?(:following),
|
||||
query_fasp: @query_fasp
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -38,8 +38,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
private
|
||||
|
||||
def record_login_activity
|
||||
LoginActivity.create(
|
||||
user: @user,
|
||||
@user.login_activities.create(
|
||||
success: true,
|
||||
authentication_method: :omniauth,
|
||||
provider: @provider,
|
||||
|
|
|
@ -151,12 +151,11 @@ class Auth::SessionsController < Devise::SessionsController
|
|||
sign_in(user)
|
||||
flash.delete(:notice)
|
||||
|
||||
LoginActivity.create(
|
||||
user: user,
|
||||
success: true,
|
||||
authentication_method: security_measure,
|
||||
ip: request.remote_ip,
|
||||
user_agent: request.user_agent
|
||||
user.login_activities.create(
|
||||
request_details.merge(
|
||||
authentication_method: security_measure,
|
||||
success: true
|
||||
)
|
||||
)
|
||||
|
||||
UserMailer.suspicious_sign_in(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! if @login_is_suspicious
|
||||
|
@ -167,13 +166,12 @@ class Auth::SessionsController < Devise::SessionsController
|
|||
end
|
||||
|
||||
def on_authentication_failure(user, security_measure, failure_reason)
|
||||
LoginActivity.create(
|
||||
user: user,
|
||||
success: false,
|
||||
authentication_method: security_measure,
|
||||
failure_reason: failure_reason,
|
||||
ip: request.remote_ip,
|
||||
user_agent: request.user_agent
|
||||
user.login_activities.create(
|
||||
request_details.merge(
|
||||
authentication_method: security_measure,
|
||||
failure_reason: failure_reason,
|
||||
success: false
|
||||
)
|
||||
)
|
||||
|
||||
# Only send a notification email every hour at most
|
||||
|
@ -182,6 +180,13 @@ class Auth::SessionsController < Devise::SessionsController
|
|||
UserMailer.failed_2fa(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later!
|
||||
end
|
||||
|
||||
def request_details
|
||||
{
|
||||
ip: request.remote_ip,
|
||||
user_agent: request.user_agent,
|
||||
}
|
||||
end
|
||||
|
||||
def second_factor_attempts_key(user)
|
||||
"2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}"
|
||||
end
|
||||
|
|
|
@ -64,6 +64,9 @@ module SignatureVerification
|
|||
return (@signed_request_actor = actor) if signed_request.verified?(actor)
|
||||
|
||||
fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri}"
|
||||
rescue Mastodon::MalformedHeaderError => e
|
||||
@signature_verification_failure_code = 400
|
||||
fail_with! e.message
|
||||
rescue Mastodon::SignatureVerificationError => e
|
||||
fail_with! e.message
|
||||
rescue *Mastodon::HTTP_CONNECTION_ERRORS => e
|
||||
|
|
|
@ -50,6 +50,13 @@ module WebAppControllerConcern
|
|||
return unless current_user&.require_tos_interstitial?
|
||||
|
||||
@terms_of_service = TermsOfService.published.first
|
||||
|
||||
# Handle case where terms of service have been removed from the database
|
||||
if @terms_of_service.nil?
|
||||
current_user.update(require_tos_interstitial: false)
|
||||
return
|
||||
end
|
||||
|
||||
render 'terms_of_service_interstitial/show', layout: 'auth'
|
||||
end
|
||||
|
||||
|
|
|
@ -5,6 +5,6 @@ class Settings::LoginActivitiesController < Settings::BaseController
|
|||
skip_before_action :require_functional!
|
||||
|
||||
def index
|
||||
@login_activities = LoginActivity.where(user: current_user).order(id: :desc).page(params[:page])
|
||||
@login_activities = current_user.login_activities.order(id: :desc).page(params[:page])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -66,7 +66,7 @@ module ApplicationHelper
|
|||
|
||||
def provider_sign_in_link(provider)
|
||||
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
|
||||
link_to label, omniauth_authorize_path(:user, provider), class: "button button-#{provider}", method: :post
|
||||
link_to label, omniauth_authorize_path(:user, provider), class: "btn button-#{provider}", method: :post
|
||||
end
|
||||
|
||||
def locale_direction
|
||||
|
|
|
@ -26,6 +26,12 @@ module ContextHelper
|
|||
suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' },
|
||||
attribution_domains: { 'toot' => 'http://joinmastodon.org/ns#', 'attributionDomains' => { '@id' => 'toot:attributionDomains', '@type' => '@id' } },
|
||||
quote_requests: { 'QuoteRequest' => 'https://w3id.org/fep/044f#QuoteRequest' },
|
||||
quotes: {
|
||||
'quote' => 'https://w3id.org/fep/044f#quote',
|
||||
'quoteUri' => 'http://fedibird.com/ns#quoteUri',
|
||||
'_misskey_quote' => 'https://misskey-hub.net/ns#_misskey_quote',
|
||||
'quoteAuthorization' => { '@id' => 'https://w3id.org/fep/044f#quoteAuthorization', '@type' => '@id' },
|
||||
},
|
||||
interaction_policies: {
|
||||
'gts' => 'https://gotosocial.org/ns#',
|
||||
'interactionPolicy' => { '@id' => 'gts:interactionPolicy', '@type' => '@id' },
|
||||
|
|
|
@ -1,12 +1,30 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { useLinks } from 'mastodon/hooks/useLinks';
|
||||
|
||||
export const AccountBio: React.FC<{
|
||||
interface AccountBioProps {
|
||||
note: string;
|
||||
className: string;
|
||||
}> = ({ note, className }) => {
|
||||
const handleClick = useLinks();
|
||||
dropdownAccountId?: string;
|
||||
}
|
||||
|
||||
if (note.length === 0 || note === '<p></p>') {
|
||||
export const AccountBio: React.FC<AccountBioProps> = ({
|
||||
note,
|
||||
className,
|
||||
dropdownAccountId,
|
||||
}) => {
|
||||
const handleClick = useLinks(!!dropdownAccountId);
|
||||
const handleNodeChange = useCallback(
|
||||
(node: HTMLDivElement | null) => {
|
||||
if (!dropdownAccountId || !node || node.childNodes.length === 0) {
|
||||
return;
|
||||
}
|
||||
addDropdownToHashtags(node, dropdownAccountId);
|
||||
},
|
||||
[dropdownAccountId],
|
||||
);
|
||||
|
||||
if (note.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -15,6 +33,28 @@ export const AccountBio: React.FC<{
|
|||
className={`${className} translate`}
|
||||
dangerouslySetInnerHTML={{ __html: note }}
|
||||
onClickCapture={handleClick}
|
||||
ref={handleNodeChange}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
function addDropdownToHashtags(node: HTMLElement | null, accountId: string) {
|
||||
if (!node) {
|
||||
return;
|
||||
}
|
||||
for (const childNode of node.childNodes) {
|
||||
if (!(childNode instanceof HTMLElement)) {
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
childNode instanceof HTMLAnchorElement &&
|
||||
(childNode.classList.contains('hashtag') ||
|
||||
childNode.innerText.startsWith('#')) &&
|
||||
!childNode.dataset.menuHashtag
|
||||
) {
|
||||
childNode.dataset.menuHashtag = accountId;
|
||||
} else if (childNode.childNodes.length > 0) {
|
||||
addDropdownToHashtags(childNode, accountId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import { useIdentity } from 'mastodon/identity_context';
|
|||
|
||||
import { useAppHistory } from './router';
|
||||
|
||||
const messages = defineMessages({
|
||||
export const messages = defineMessages({
|
||||
show: { id: 'column_header.show_settings', defaultMessage: 'Show settings' },
|
||||
hide: { id: 'column_header.hide_settings', defaultMessage: 'Hide settings' },
|
||||
moveLeft: {
|
||||
|
|
|
@ -5,6 +5,7 @@ import {
|
|||
useCallback,
|
||||
cloneElement,
|
||||
Children,
|
||||
useId,
|
||||
} from 'react';
|
||||
|
||||
import classNames from 'classnames';
|
||||
|
@ -16,6 +17,7 @@ import Overlay from 'react-overlays/Overlay';
|
|||
import type {
|
||||
OffsetValue,
|
||||
UsePopperOptions,
|
||||
Placement,
|
||||
} from 'react-overlays/esm/usePopper';
|
||||
|
||||
import { fetchRelationships } from 'mastodon/actions/accounts';
|
||||
|
@ -295,6 +297,11 @@ interface DropdownProps<Item = MenuItem> {
|
|||
title?: string;
|
||||
disabled?: boolean;
|
||||
scrollable?: boolean;
|
||||
placement?: Placement;
|
||||
/**
|
||||
* Prevent the `ScrollableList` with this scrollKey
|
||||
* from being scrolled while the dropdown is open
|
||||
*/
|
||||
scrollKey?: string;
|
||||
status?: ImmutableMap<string, unknown>;
|
||||
forceDropdown?: boolean;
|
||||
|
@ -316,6 +323,7 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
title = 'Menu',
|
||||
disabled,
|
||||
scrollable,
|
||||
placement = 'bottom',
|
||||
status,
|
||||
forceDropdown = false,
|
||||
renderItem,
|
||||
|
@ -331,16 +339,15 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
);
|
||||
const [currentId] = useState(id++);
|
||||
const open = currentId === openDropdownId;
|
||||
const activeElement = useRef<HTMLElement | null>(null);
|
||||
const targetRef = useRef<HTMLButtonElement | null>(null);
|
||||
const buttonRef = useRef<HTMLButtonElement | null>(null);
|
||||
const menuId = useId();
|
||||
const prefetchAccountId = status
|
||||
? status.getIn(['account', 'id'])
|
||||
: undefined;
|
||||
|
||||
const handleClose = useCallback(() => {
|
||||
if (activeElement.current) {
|
||||
activeElement.current.focus({ preventScroll: true });
|
||||
activeElement.current = null;
|
||||
if (buttonRef.current) {
|
||||
buttonRef.current.focus({ preventScroll: true });
|
||||
}
|
||||
|
||||
dispatch(
|
||||
|
@ -375,7 +382,7 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
[handleClose, onItemClick, items],
|
||||
);
|
||||
|
||||
const handleClick = useCallback(
|
||||
const toggleDropdown = useCallback(
|
||||
(e: React.MouseEvent | React.KeyboardEvent) => {
|
||||
const { type } = e;
|
||||
|
||||
|
@ -423,38 +430,6 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
],
|
||||
);
|
||||
|
||||
const handleMouseDown = useCallback(() => {
|
||||
if (!open && document.activeElement instanceof HTMLElement) {
|
||||
activeElement.current = document.activeElement;
|
||||
}
|
||||
}, [open]);
|
||||
|
||||
const handleButtonKeyDown = useCallback(
|
||||
(e: React.KeyboardEvent) => {
|
||||
switch (e.key) {
|
||||
case ' ':
|
||||
case 'Enter':
|
||||
handleMouseDown();
|
||||
break;
|
||||
}
|
||||
},
|
||||
[handleMouseDown],
|
||||
);
|
||||
|
||||
const handleKeyPress = useCallback(
|
||||
(e: React.KeyboardEvent) => {
|
||||
switch (e.key) {
|
||||
case ' ':
|
||||
case 'Enter':
|
||||
handleClick(e);
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
break;
|
||||
}
|
||||
},
|
||||
[handleClick],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
return () => {
|
||||
if (currentId === openDropdownId) {
|
||||
|
@ -465,14 +440,16 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
|
||||
let button: React.ReactElement;
|
||||
|
||||
const buttonProps = {
|
||||
disabled,
|
||||
onClick: toggleDropdown,
|
||||
'aria-expanded': open,
|
||||
'aria-controls': menuId,
|
||||
ref: buttonRef,
|
||||
};
|
||||
|
||||
if (children) {
|
||||
button = cloneElement(Children.only(children), {
|
||||
onClick: handleClick,
|
||||
onMouseDown: handleMouseDown,
|
||||
onKeyDown: handleButtonKeyDown,
|
||||
onKeyPress: handleKeyPress,
|
||||
ref: targetRef,
|
||||
});
|
||||
button = cloneElement(Children.only(children), buttonProps);
|
||||
} else if (icon && iconComponent) {
|
||||
button = (
|
||||
<IconButton
|
||||
|
@ -480,12 +457,7 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
iconComponent={iconComponent}
|
||||
title={title}
|
||||
active={open}
|
||||
disabled={disabled}
|
||||
onClick={handleClick}
|
||||
onMouseDown={handleMouseDown}
|
||||
onKeyDown={handleButtonKeyDown}
|
||||
onKeyPress={handleKeyPress}
|
||||
ref={targetRef}
|
||||
{...buttonProps}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
|
@ -499,13 +471,13 @@ export const Dropdown = <Item = MenuItem,>({
|
|||
<Overlay
|
||||
show={open}
|
||||
offset={offset}
|
||||
placement='bottom'
|
||||
placement={placement}
|
||||
flip
|
||||
target={targetRef}
|
||||
target={buttonRef}
|
||||
popperConfig={popperConfig}
|
||||
>
|
||||
{({ props, arrowProps, placement }) => (
|
||||
<div {...props}>
|
||||
<div {...props} id={menuId}>
|
||||
<div className={`dropdown-animation dropdown-menu ${placement}`}>
|
||||
<div
|
||||
className={`dropdown-menu__arrow ${placement}`}
|
||||
|
|
|
@ -14,7 +14,6 @@ interface Props {
|
|||
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
||||
onMouseDown?: React.MouseEventHandler<HTMLButtonElement>;
|
||||
onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
|
||||
onKeyPress?: React.KeyboardEventHandler<HTMLButtonElement>;
|
||||
active?: boolean;
|
||||
expanded?: boolean;
|
||||
style?: React.CSSProperties;
|
||||
|
@ -45,7 +44,6 @@ export const IconButton = forwardRef<HTMLButtonElement, Props>(
|
|||
activeStyle,
|
||||
onClick,
|
||||
onKeyDown,
|
||||
onKeyPress,
|
||||
onMouseDown,
|
||||
active = false,
|
||||
disabled = false,
|
||||
|
@ -85,16 +83,6 @@ export const IconButton = forwardRef<HTMLButtonElement, Props>(
|
|||
[disabled, onClick],
|
||||
);
|
||||
|
||||
const handleKeyPress: React.KeyboardEventHandler<HTMLButtonElement> =
|
||||
useCallback(
|
||||
(e) => {
|
||||
if (!disabled) {
|
||||
onKeyPress?.(e);
|
||||
}
|
||||
},
|
||||
[disabled, onKeyPress],
|
||||
);
|
||||
|
||||
const handleMouseDown: React.MouseEventHandler<HTMLButtonElement> =
|
||||
useCallback(
|
||||
(e) => {
|
||||
|
@ -161,7 +149,6 @@ export const IconButton = forwardRef<HTMLButtonElement, Props>(
|
|||
onClick={handleClick}
|
||||
onMouseDown={handleMouseDown}
|
||||
onKeyDown={handleKeyDown}
|
||||
onKeyPress={handleKeyPress} // eslint-disable-line @typescript-eslint/no-deprecated
|
||||
style={buttonStyle}
|
||||
tabIndex={tabIndex}
|
||||
disabled={disabled}
|
||||
|
|
|
@ -6,6 +6,7 @@ import classNames from 'classnames';
|
|||
import { Helmet } from 'react-helmet';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
|
||||
import { AccountBio } from '@/mastodon/components/account_bio';
|
||||
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
||||
import LockIcon from '@/material-icons/400-24px/lock.svg?react';
|
||||
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
||||
|
@ -773,7 +774,6 @@ export const AccountHeader: React.FC<{
|
|||
);
|
||||
}
|
||||
|
||||
const content = { __html: account.note_emojified };
|
||||
const displayNameHtml = { __html: account.display_name_html };
|
||||
const fields = account.fields;
|
||||
const isLocal = !account.acct.includes('@');
|
||||
|
@ -897,12 +897,11 @@ export const AccountHeader: React.FC<{
|
|||
<AccountNote accountId={accountId} />
|
||||
)}
|
||||
|
||||
{account.note.length > 0 && account.note !== '<p></p>' && (
|
||||
<div
|
||||
className='account__header__content translate'
|
||||
dangerouslySetInnerHTML={content}
|
||||
/>
|
||||
)}
|
||||
<AccountBio
|
||||
note={account.note_emojified}
|
||||
dropdownAccountId={accountId}
|
||||
className='account__header__content'
|
||||
/>
|
||||
|
||||
<div className='account__header__fields'>
|
||||
<dl>
|
||||
|
|
|
@ -47,10 +47,6 @@ const labelForRecentSearch = (search: RecentSearch) => {
|
|||
}
|
||||
};
|
||||
|
||||
const unfocus = () => {
|
||||
document.querySelector('.ui')?.parentElement?.focus();
|
||||
};
|
||||
|
||||
const ClearButton: React.FC<{
|
||||
onClick: () => void;
|
||||
hasValue: boolean;
|
||||
|
@ -107,6 +103,11 @@ export const Search: React.FC<{
|
|||
}, [initialValue]);
|
||||
const searchOptions: SearchOption[] = [];
|
||||
|
||||
const unfocus = useCallback(() => {
|
||||
document.querySelector('.ui')?.parentElement?.focus();
|
||||
setExpanded(false);
|
||||
}, []);
|
||||
|
||||
if (searchEnabled) {
|
||||
searchOptions.push(
|
||||
{
|
||||
|
@ -282,7 +283,7 @@ export const Search: React.FC<{
|
|||
history.push({ pathname: '/search', search: queryParams.toString() });
|
||||
unfocus();
|
||||
},
|
||||
[dispatch, history],
|
||||
[dispatch, history, unfocus],
|
||||
);
|
||||
|
||||
const handleChange = useCallback(
|
||||
|
@ -402,7 +403,7 @@ export const Search: React.FC<{
|
|||
|
||||
setQuickActions(newQuickActions);
|
||||
},
|
||||
[dispatch, history, signedIn, setValue, setQuickActions, submit],
|
||||
[signedIn, dispatch, unfocus, history, submit],
|
||||
);
|
||||
|
||||
const handleClear = useCallback(() => {
|
||||
|
@ -410,7 +411,7 @@ export const Search: React.FC<{
|
|||
setQuickActions([]);
|
||||
setSelectedOption(-1);
|
||||
unfocus();
|
||||
}, [setValue, setQuickActions, setSelectedOption]);
|
||||
}, [unfocus]);
|
||||
|
||||
const handleKeyDown = useCallback(
|
||||
(e: React.KeyboardEvent) => {
|
||||
|
@ -461,7 +462,7 @@ export const Search: React.FC<{
|
|||
break;
|
||||
}
|
||||
},
|
||||
[navigableOptions, value, selectedOption, setSelectedOption, submit],
|
||||
[unfocus, navigableOptions, selectedOption, submit, value],
|
||||
);
|
||||
|
||||
const handleFocus = useCallback(() => {
|
||||
|
@ -481,12 +482,38 @@ export const Search: React.FC<{
|
|||
}, [setExpanded, setSelectedOption, singleColumn]);
|
||||
|
||||
const handleBlur = useCallback(() => {
|
||||
setExpanded(false);
|
||||
setSelectedOption(-1);
|
||||
}, [setExpanded, setSelectedOption]);
|
||||
}, [setSelectedOption]);
|
||||
|
||||
const formRef = useRef<HTMLFormElement>(null);
|
||||
|
||||
useEffect(() => {
|
||||
// If the search popover is expanded, close it when tabbing or
|
||||
// clicking outside of it or the search form, while allowing
|
||||
// tabbing or clicking inside of the popover
|
||||
if (expanded) {
|
||||
function closeOnLeave(event: FocusEvent | MouseEvent) {
|
||||
const form = formRef.current;
|
||||
const isClickInsideForm =
|
||||
form &&
|
||||
(form === event.target || form.contains(event.target as Node));
|
||||
if (!isClickInsideForm) {
|
||||
setExpanded(false);
|
||||
}
|
||||
}
|
||||
document.addEventListener('focusin', closeOnLeave);
|
||||
document.addEventListener('click', closeOnLeave);
|
||||
|
||||
return () => {
|
||||
document.removeEventListener('focusin', closeOnLeave);
|
||||
document.removeEventListener('click', closeOnLeave);
|
||||
};
|
||||
}
|
||||
return () => null;
|
||||
}, [expanded]);
|
||||
|
||||
return (
|
||||
<form className={classNames('search', { active: expanded })}>
|
||||
<form ref={formRef} className={classNames('search', { active: expanded })}>
|
||||
<input
|
||||
ref={searchInputRef}
|
||||
className='search__input'
|
||||
|
@ -506,7 +533,7 @@ export const Search: React.FC<{
|
|||
|
||||
<ClearButton hasValue={hasValue} onClick={handleClear} />
|
||||
|
||||
<div className='search__popout'>
|
||||
<div className='search__popout' tabIndex={-1}>
|
||||
{!hasValue && (
|
||||
<>
|
||||
<h4>
|
||||
|
|
110
app/javascript/mastodon/features/emoji/constants.ts
Normal file
110
app/javascript/mastodon/features/emoji/constants.ts
Normal file
|
@ -0,0 +1,110 @@
|
|||
// Utility codes
|
||||
export const VARIATION_SELECTOR_CODE = 0xfe0f;
|
||||
export const KEYCAP_CODE = 0x20e3;
|
||||
|
||||
// Gender codes
|
||||
export const GENDER_FEMALE_CODE = 0x2640;
|
||||
export const GENDER_MALE_CODE = 0x2642;
|
||||
|
||||
// Skin tone codes
|
||||
export const SKIN_TONE_CODES = [
|
||||
0x1f3fb, // Light skin tone
|
||||
0x1f3fc, // Medium-light skin tone
|
||||
0x1f3fd, // Medium skin tone
|
||||
0x1f3fe, // Medium-dark skin tone
|
||||
0x1f3ff, // Dark skin tone
|
||||
] as const;
|
||||
|
||||
export const EMOJIS_WITH_DARK_BORDER = [
|
||||
'🎱', // 1F3B1
|
||||
'🐜', // 1F41C
|
||||
'⚫', // 26AB
|
||||
'🖤', // 1F5A4
|
||||
'⬛', // 2B1B
|
||||
'◼️', // 25FC-FE0F
|
||||
'◾', // 25FE
|
||||
'◼️', // 25FC-FE0F
|
||||
'✒️', // 2712-FE0F
|
||||
'▪️', // 25AA-FE0F
|
||||
'💣', // 1F4A3
|
||||
'🎳', // 1F3B3
|
||||
'📷', // 1F4F7
|
||||
'📸', // 1F4F8
|
||||
'♣️', // 2663-FE0F
|
||||
'🕶️', // 1F576-FE0F
|
||||
'✴️', // 2734-FE0F
|
||||
'🔌', // 1F50C
|
||||
'💂♀️', // 1F482-200D-2640-FE0F
|
||||
'📽️', // 1F4FD-FE0F
|
||||
'🍳', // 1F373
|
||||
'🦍', // 1F98D
|
||||
'💂', // 1F482
|
||||
'🔪', // 1F52A
|
||||
'🕳️', // 1F573-FE0F
|
||||
'🕹️', // 1F579-FE0F
|
||||
'🕋', // 1F54B
|
||||
'🖊️', // 1F58A-FE0F
|
||||
'🖋️', // 1F58B-FE0F
|
||||
'💂♂️', // 1F482-200D-2642-FE0F
|
||||
'🎤', // 1F3A4
|
||||
'🎓', // 1F393
|
||||
'🎥', // 1F3A5
|
||||
'🎼', // 1F3BC
|
||||
'♠️', // 2660-FE0F
|
||||
'🎩', // 1F3A9
|
||||
'🦃', // 1F983
|
||||
'📼', // 1F4FC
|
||||
'📹', // 1F4F9
|
||||
'🎮', // 1F3AE
|
||||
'🐃', // 1F403
|
||||
'🏴', // 1F3F4
|
||||
'🐞', // 1F41E
|
||||
'🕺', // 1F57A
|
||||
'📱', // 1F4F1
|
||||
'📲', // 1F4F2
|
||||
'🚲', // 1F6B2
|
||||
'🪮', // 1FAA6
|
||||
'🐦⬛', // 1F426-200D-2B1B
|
||||
];
|
||||
|
||||
export const EMOJIS_WITH_LIGHT_BORDER = [
|
||||
'👽', // 1F47D
|
||||
'⚾', // 26BE
|
||||
'🐔', // 1F414
|
||||
'☁️', // 2601-FE0F
|
||||
'💨', // 1F4A8
|
||||
'🕊️', // 1F54A-FE0F
|
||||
'👀', // 1F440
|
||||
'🍥', // 1F365
|
||||
'👻', // 1F47B
|
||||
'🐐', // 1F410
|
||||
'❕', // 2755
|
||||
'❔', // 2754
|
||||
'⛸️', // 26F8-FE0F
|
||||
'🌩️', // 1F329-FE0F
|
||||
'🔊', // 1F50A
|
||||
'🔇', // 1F507
|
||||
'📃', // 1F4C3
|
||||
'🌧️', // 1F327-FE0F
|
||||
'🐏', // 1F40F
|
||||
'🍚', // 1F35A
|
||||
'🍙', // 1F359
|
||||
'🐓', // 1F413
|
||||
'🐑', // 1F411
|
||||
'💀', // 1F480
|
||||
'☠️', // 2620-FE0F
|
||||
'🌨️', // 1F328-FE0F
|
||||
'🔉', // 1F509
|
||||
'🔈', // 1F508
|
||||
'💬', // 1F4AC
|
||||
'💭', // 1F4AD
|
||||
'🏐', // 1F3D0
|
||||
'🏳️', // 1F3F3-FE0F
|
||||
'⚪', // 26AA
|
||||
'⬜', // 2B1C
|
||||
'◽', // 25FD
|
||||
'◻️', // 25FB-FE0F
|
||||
'▫️', // 25AB-FE0F
|
||||
'🪽', // 1FAE8
|
||||
'🪿', // 1FABF
|
||||
];
|
102
app/javascript/mastodon/features/emoji/database.ts
Normal file
102
app/javascript/mastodon/features/emoji/database.ts
Normal file
|
@ -0,0 +1,102 @@
|
|||
import { SUPPORTED_LOCALES } from 'emojibase';
|
||||
import type { FlatCompactEmoji, Locale } from 'emojibase';
|
||||
import type { DBSchema } from 'idb';
|
||||
import { openDB } from 'idb';
|
||||
|
||||
import type { ApiCustomEmojiJSON } from '@/mastodon/api_types/custom_emoji';
|
||||
|
||||
import type { LocaleOrCustom } from './locale';
|
||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
||||
|
||||
interface EmojiDB extends LocaleTables, DBSchema {
|
||||
custom: {
|
||||
key: string;
|
||||
value: ApiCustomEmojiJSON;
|
||||
indexes: {
|
||||
category: string;
|
||||
};
|
||||
};
|
||||
etags: {
|
||||
key: LocaleOrCustom;
|
||||
value: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface LocaleTable {
|
||||
key: string;
|
||||
value: FlatCompactEmoji;
|
||||
indexes: {
|
||||
group: number;
|
||||
label: string;
|
||||
order: number;
|
||||
tags: string[];
|
||||
};
|
||||
}
|
||||
type LocaleTables = Record<Locale, LocaleTable>;
|
||||
|
||||
const SCHEMA_VERSION = 1;
|
||||
|
||||
const db = await openDB<EmojiDB>('mastodon-emoji', SCHEMA_VERSION, {
|
||||
upgrade(database) {
|
||||
const customTable = database.createObjectStore('custom', {
|
||||
keyPath: 'shortcode',
|
||||
autoIncrement: false,
|
||||
});
|
||||
customTable.createIndex('category', 'category');
|
||||
|
||||
database.createObjectStore('etags');
|
||||
|
||||
for (const locale of SUPPORTED_LOCALES) {
|
||||
const localeTable = database.createObjectStore(locale, {
|
||||
keyPath: 'hexcode',
|
||||
autoIncrement: false,
|
||||
});
|
||||
localeTable.createIndex('group', 'group');
|
||||
localeTable.createIndex('label', 'label');
|
||||
localeTable.createIndex('order', 'order');
|
||||
localeTable.createIndex('tags', 'tags', { multiEntry: true });
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export async function putEmojiData(emojis: FlatCompactEmoji[], locale: Locale) {
|
||||
const trx = db.transaction(locale, 'readwrite');
|
||||
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
||||
await trx.done;
|
||||
}
|
||||
|
||||
export async function putCustomEmojiData(emojis: ApiCustomEmojiJSON[]) {
|
||||
const trx = db.transaction('custom', 'readwrite');
|
||||
await Promise.all(emojis.map((emoji) => trx.store.put(emoji)));
|
||||
await trx.done;
|
||||
}
|
||||
|
||||
export function putLatestEtag(etag: string, localeString: string) {
|
||||
const locale = toSupportedLocaleOrCustom(localeString);
|
||||
return db.put('etags', etag, locale);
|
||||
}
|
||||
|
||||
export function searchEmojiByHexcode(hexcode: string, localeString: string) {
|
||||
const locale = toSupportedLocale(localeString);
|
||||
return db.get(locale, hexcode);
|
||||
}
|
||||
|
||||
export function searchEmojiByTag(tag: string, localeString: string) {
|
||||
const locale = toSupportedLocale(localeString);
|
||||
const range = IDBKeyRange.only(tag.toLowerCase());
|
||||
return db.getAllFromIndex(locale, 'tags', range);
|
||||
}
|
||||
|
||||
export function searchCustomEmojiByShortcode(shortcode: string) {
|
||||
return db.get('custom', shortcode);
|
||||
}
|
||||
|
||||
export async function loadLatestEtag(localeString: string) {
|
||||
const locale = toSupportedLocaleOrCustom(localeString);
|
||||
const rowCount = await db.count(locale);
|
||||
if (!rowCount) {
|
||||
return null; // No data for this locale, return null even if there is an etag.
|
||||
}
|
||||
const etag = await db.get('etags', locale);
|
||||
return etag ?? null;
|
||||
}
|
38
app/javascript/mastodon/features/emoji/index.ts
Normal file
38
app/javascript/mastodon/features/emoji/index.ts
Normal file
|
@ -0,0 +1,38 @@
|
|||
import initialState from '@/mastodon/initial_state';
|
||||
|
||||
import { toSupportedLocale } from './locale';
|
||||
|
||||
const serverLocale = toSupportedLocale(initialState?.meta.locale ?? 'en');
|
||||
|
||||
const worker =
|
||||
'Worker' in window
|
||||
? new Worker(new URL('./worker', import.meta.url), {
|
||||
type: 'module',
|
||||
})
|
||||
: null;
|
||||
|
||||
export async function initializeEmoji() {
|
||||
if (worker) {
|
||||
worker.addEventListener('message', (event: MessageEvent<string>) => {
|
||||
const { data: message } = event;
|
||||
if (message === 'ready') {
|
||||
worker.postMessage(serverLocale);
|
||||
worker.postMessage('custom');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const { importCustomEmojiData, importEmojiData } = await import('./loader');
|
||||
await Promise.all([importCustomEmojiData(), importEmojiData(serverLocale)]);
|
||||
}
|
||||
}
|
||||
|
||||
export async function loadEmojiLocale(localeString: string) {
|
||||
const locale = toSupportedLocale(localeString);
|
||||
|
||||
if (worker) {
|
||||
worker.postMessage(locale);
|
||||
} else {
|
||||
const { importEmojiData } = await import('./loader');
|
||||
await importEmojiData(locale);
|
||||
}
|
||||
}
|
77
app/javascript/mastodon/features/emoji/loader.ts
Normal file
77
app/javascript/mastodon/features/emoji/loader.ts
Normal file
|
@ -0,0 +1,77 @@
|
|||
import { flattenEmojiData } from 'emojibase';
|
||||
import type { CompactEmoji, FlatCompactEmoji } from 'emojibase';
|
||||
|
||||
import type { ApiCustomEmojiJSON } from '@/mastodon/api_types/custom_emoji';
|
||||
import { isDevelopment } from '@/mastodon/utils/environment';
|
||||
|
||||
import {
|
||||
putEmojiData,
|
||||
putCustomEmojiData,
|
||||
loadLatestEtag,
|
||||
putLatestEtag,
|
||||
} from './database';
|
||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
||||
import type { LocaleOrCustom } from './locale';
|
||||
|
||||
export async function importEmojiData(localeString: string) {
|
||||
const locale = toSupportedLocale(localeString);
|
||||
const emojis = await fetchAndCheckEtag<CompactEmoji[]>(locale);
|
||||
if (!emojis) {
|
||||
return;
|
||||
}
|
||||
const flattenedEmojis: FlatCompactEmoji[] = flattenEmojiData(emojis);
|
||||
await putEmojiData(flattenedEmojis, locale);
|
||||
}
|
||||
|
||||
export async function importCustomEmojiData() {
|
||||
const emojis = await fetchAndCheckEtag<ApiCustomEmojiJSON[]>('custom');
|
||||
if (!emojis) {
|
||||
return;
|
||||
}
|
||||
await putCustomEmojiData(emojis);
|
||||
}
|
||||
|
||||
async function fetchAndCheckEtag<ResultType extends object[]>(
|
||||
localeOrCustom: LocaleOrCustom,
|
||||
): Promise<ResultType | null> {
|
||||
const locale = toSupportedLocaleOrCustom(localeOrCustom);
|
||||
|
||||
let uri: string;
|
||||
if (locale === 'custom') {
|
||||
uri = '/api/v1/custom_emojis';
|
||||
} else {
|
||||
uri = `/packs${isDevelopment() ? '-dev' : ''}/emoji/${locale}.json`;
|
||||
}
|
||||
|
||||
const oldEtag = await loadLatestEtag(locale);
|
||||
const response = await fetch(uri, {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'If-None-Match': oldEtag ?? '', // Send the old ETag to check for modifications
|
||||
},
|
||||
});
|
||||
// If not modified, return null
|
||||
if (response.status === 304) {
|
||||
return null;
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch emoji data for ${localeOrCustom}: ${response.statusText}`,
|
||||
);
|
||||
}
|
||||
|
||||
const data = (await response.json()) as ResultType;
|
||||
if (!Array.isArray(data)) {
|
||||
throw new Error(
|
||||
`Unexpected data format for ${localeOrCustom}: expected an array`,
|
||||
);
|
||||
}
|
||||
|
||||
// Store the ETag for future requests
|
||||
const etag = response.headers.get('ETag');
|
||||
if (etag) {
|
||||
await putLatestEtag(etag, localeOrCustom);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
29
app/javascript/mastodon/features/emoji/locale.test.ts
Normal file
29
app/javascript/mastodon/features/emoji/locale.test.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
import { SUPPORTED_LOCALES } from 'emojibase';
|
||||
|
||||
import { toSupportedLocale, toSupportedLocaleOrCustom } from './locale';
|
||||
|
||||
describe('toSupportedLocale', () => {
|
||||
test('returns the same locale if it is supported', () => {
|
||||
for (const locale of SUPPORTED_LOCALES) {
|
||||
expect(toSupportedLocale(locale)).toBe(locale);
|
||||
}
|
||||
});
|
||||
|
||||
test('returns "en" for unsupported locales', () => {
|
||||
const unsupportedLocales = ['xx', 'fr-CA'];
|
||||
for (const locale of unsupportedLocales) {
|
||||
expect(toSupportedLocale(locale)).toBe('en');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('toSupportedLocaleOrCustom', () => {
|
||||
test('returns custom for "custom" locale', () => {
|
||||
expect(toSupportedLocaleOrCustom('custom')).toBe('custom');
|
||||
});
|
||||
test('returns supported locale for valid locales', () => {
|
||||
for (const locale of SUPPORTED_LOCALES) {
|
||||
expect(toSupportedLocaleOrCustom(locale)).toBe(locale);
|
||||
}
|
||||
});
|
||||
});
|
23
app/javascript/mastodon/features/emoji/locale.ts
Normal file
23
app/javascript/mastodon/features/emoji/locale.ts
Normal file
|
@ -0,0 +1,23 @@
|
|||
import type { Locale } from 'emojibase';
|
||||
import { SUPPORTED_LOCALES } from 'emojibase';
|
||||
|
||||
export type LocaleOrCustom = Locale | 'custom';
|
||||
|
||||
export function toSupportedLocale(localeBase: string): Locale {
|
||||
const locale = localeBase.toLowerCase();
|
||||
if (isSupportedLocale(locale)) {
|
||||
return locale;
|
||||
}
|
||||
return 'en'; // Default to English if unsupported
|
||||
}
|
||||
|
||||
export function toSupportedLocaleOrCustom(locale: string): LocaleOrCustom {
|
||||
if (locale.toLowerCase() === 'custom') {
|
||||
return 'custom';
|
||||
}
|
||||
return toSupportedLocale(locale);
|
||||
}
|
||||
|
||||
function isSupportedLocale(locale: string): locale is Locale {
|
||||
return SUPPORTED_LOCALES.includes(locale.toLowerCase() as Locale);
|
||||
}
|
101
app/javascript/mastodon/features/emoji/normalize.test.ts
Normal file
101
app/javascript/mastodon/features/emoji/normalize.test.ts
Normal file
|
@ -0,0 +1,101 @@
|
|||
import { readdir } from 'fs/promises';
|
||||
import { basename, resolve } from 'path';
|
||||
|
||||
import { flattenEmojiData } from 'emojibase';
|
||||
import unicodeRawEmojis from 'emojibase-data/en/data.json';
|
||||
|
||||
import {
|
||||
twemojiHasBorder,
|
||||
twemojiToUnicodeInfo,
|
||||
unicodeToTwemojiHex,
|
||||
CODES_WITH_DARK_BORDER,
|
||||
CODES_WITH_LIGHT_BORDER,
|
||||
emojiToUnicodeHex,
|
||||
} from './normalize';
|
||||
|
||||
const emojiSVGFiles = await readdir(
|
||||
// This assumes tests are run from project root
|
||||
resolve(process.cwd(), 'public/emoji'),
|
||||
{
|
||||
withFileTypes: true,
|
||||
},
|
||||
);
|
||||
const svgFileNames = emojiSVGFiles
|
||||
.filter((file) => file.isFile() && file.name.endsWith('.svg'))
|
||||
.map((file) => basename(file.name, '.svg').toUpperCase());
|
||||
const svgFileNamesWithoutBorder = svgFileNames.filter(
|
||||
(fileName) => !fileName.endsWith('_BORDER'),
|
||||
);
|
||||
|
||||
const unicodeEmojis = flattenEmojiData(unicodeRawEmojis);
|
||||
|
||||
describe('emojiToUnicodeHex', () => {
|
||||
test.concurrent.for([
|
||||
['🎱', '1F3B1'],
|
||||
['🐜', '1F41C'],
|
||||
['⚫', '26AB'],
|
||||
['🖤', '1F5A4'],
|
||||
['💀', '1F480'],
|
||||
['💂♂️', '1F482-200D-2642-FE0F'],
|
||||
] as const)(
|
||||
'emojiToUnicodeHex converts %s to %s',
|
||||
([emoji, hexcode], { expect }) => {
|
||||
expect(emojiToUnicodeHex(emoji)).toBe(hexcode);
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
describe('unicodeToTwemojiHex', () => {
|
||||
test.concurrent.for(
|
||||
unicodeEmojis
|
||||
// Our version of Twemoji only supports up to version 15.1
|
||||
.filter((emoji) => emoji.version < 16)
|
||||
.map((emoji) => [emoji.hexcode, emoji.label] as [string, string]),
|
||||
)('verifying an emoji exists for %s (%s)', ([hexcode], { expect }) => {
|
||||
const result = unicodeToTwemojiHex(hexcode);
|
||||
expect(svgFileNamesWithoutBorder).toContain(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('twemojiHasBorder', () => {
|
||||
test.concurrent.for(
|
||||
svgFileNames
|
||||
.filter((file) => file.endsWith('_BORDER'))
|
||||
.map((file) => {
|
||||
const hexCode = file.replace('_BORDER', '');
|
||||
return [
|
||||
hexCode,
|
||||
CODES_WITH_LIGHT_BORDER.includes(hexCode),
|
||||
CODES_WITH_DARK_BORDER.includes(hexCode),
|
||||
] as const;
|
||||
}),
|
||||
)('twemojiHasBorder for %s', ([hexCode, isLight, isDark], { expect }) => {
|
||||
const result = twemojiHasBorder(hexCode);
|
||||
expect(result).toHaveProperty('hexCode', hexCode);
|
||||
expect(result).toHaveProperty('hasLightBorder', isLight);
|
||||
expect(result).toHaveProperty('hasDarkBorder', isDark);
|
||||
});
|
||||
});
|
||||
|
||||
describe('twemojiToUnicodeInfo', () => {
|
||||
const unicodeCodeSet = new Set(unicodeEmojis.map((emoji) => emoji.hexcode));
|
||||
|
||||
test.concurrent.for(svgFileNamesWithoutBorder)(
|
||||
'verifying SVG file %s maps to Unicode emoji',
|
||||
(svgFileName, { expect }) => {
|
||||
assert(!!svgFileName);
|
||||
const result = twemojiToUnicodeInfo(svgFileName);
|
||||
const hexcode = typeof result === 'string' ? result : result.unqualified;
|
||||
if (!hexcode) {
|
||||
// No hexcode means this is a special case like the Shibuya 109 emoji
|
||||
expect(result).toHaveProperty('label');
|
||||
return;
|
||||
}
|
||||
assert(!!hexcode);
|
||||
expect(
|
||||
unicodeCodeSet.has(hexcode),
|
||||
`${hexcode} (${svgFileName}) not found`,
|
||||
).toBeTruthy();
|
||||
},
|
||||
);
|
||||
});
|
173
app/javascript/mastodon/features/emoji/normalize.ts
Normal file
173
app/javascript/mastodon/features/emoji/normalize.ts
Normal file
|
@ -0,0 +1,173 @@
|
|||
import {
|
||||
VARIATION_SELECTOR_CODE,
|
||||
KEYCAP_CODE,
|
||||
GENDER_FEMALE_CODE,
|
||||
GENDER_MALE_CODE,
|
||||
SKIN_TONE_CODES,
|
||||
EMOJIS_WITH_DARK_BORDER,
|
||||
EMOJIS_WITH_LIGHT_BORDER,
|
||||
} from './constants';
|
||||
|
||||
// Misc codes that have special handling
|
||||
const SKIER_CODE = 0x26f7;
|
||||
const CHRISTMAS_TREE_CODE = 0x1f384;
|
||||
const MR_CLAUS_CODE = 0x1f385;
|
||||
const EYE_CODE = 0x1f441;
|
||||
const LEVITATING_PERSON_CODE = 0x1f574;
|
||||
const SPEECH_BUBBLE_CODE = 0x1f5e8;
|
||||
const MS_CLAUS_CODE = 0x1f936;
|
||||
|
||||
export function emojiToUnicodeHex(emoji: string): string {
|
||||
const codes: number[] = [];
|
||||
for (const char of emoji) {
|
||||
const code = char.codePointAt(0);
|
||||
if (code !== undefined) {
|
||||
codes.push(code);
|
||||
}
|
||||
}
|
||||
return hexNumbersToString(codes);
|
||||
}
|
||||
|
||||
export function unicodeToTwemojiHex(unicodeHex: string): string {
|
||||
const codes = hexStringToNumbers(unicodeHex);
|
||||
const normalizedCodes: number[] = [];
|
||||
for (let i = 0; i < codes.length; i++) {
|
||||
const code = codes[i];
|
||||
if (!code) {
|
||||
continue;
|
||||
}
|
||||
// Some emoji have their variation selector removed
|
||||
if (code === VARIATION_SELECTOR_CODE) {
|
||||
// Key emoji
|
||||
if (i === 1 && codes.at(-1) === KEYCAP_CODE) {
|
||||
continue;
|
||||
}
|
||||
// Eye in speech bubble
|
||||
if (codes.at(0) === EYE_CODE && codes.at(-2) === SPEECH_BUBBLE_CODE) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// This removes zero padding to correctly match the SVG filenames
|
||||
normalizedCodes.push(code);
|
||||
}
|
||||
|
||||
return hexNumbersToString(normalizedCodes, 0);
|
||||
}
|
||||
|
||||
interface TwemojiBorderInfo {
|
||||
hexCode: string;
|
||||
hasLightBorder: boolean;
|
||||
hasDarkBorder: boolean;
|
||||
}
|
||||
|
||||
export const CODES_WITH_DARK_BORDER =
|
||||
EMOJIS_WITH_DARK_BORDER.map(emojiToUnicodeHex);
|
||||
|
||||
export const CODES_WITH_LIGHT_BORDER =
|
||||
EMOJIS_WITH_LIGHT_BORDER.map(emojiToUnicodeHex);
|
||||
|
||||
export function twemojiHasBorder(twemojiHex: string): TwemojiBorderInfo {
|
||||
const normalizedHex = twemojiHex.toUpperCase();
|
||||
let hasLightBorder = false;
|
||||
let hasDarkBorder = false;
|
||||
if (CODES_WITH_LIGHT_BORDER.includes(normalizedHex)) {
|
||||
hasLightBorder = true;
|
||||
}
|
||||
if (CODES_WITH_DARK_BORDER.includes(normalizedHex)) {
|
||||
hasDarkBorder = true;
|
||||
}
|
||||
return {
|
||||
hexCode: normalizedHex,
|
||||
hasLightBorder,
|
||||
hasDarkBorder,
|
||||
};
|
||||
}
|
||||
|
||||
interface TwemojiSpecificEmoji {
|
||||
unqualified?: string;
|
||||
gender?: number;
|
||||
skin?: number;
|
||||
label?: string;
|
||||
}
|
||||
|
||||
// Normalize man/woman to male/female
|
||||
const GENDER_CODES_MAP: Record<number, number> = {
|
||||
[GENDER_FEMALE_CODE]: GENDER_FEMALE_CODE,
|
||||
[GENDER_MALE_CODE]: GENDER_MALE_CODE,
|
||||
// These are man/woman markers, but are used for gender sometimes.
|
||||
[0x1f468]: GENDER_MALE_CODE,
|
||||
[0x1f469]: GENDER_FEMALE_CODE,
|
||||
};
|
||||
|
||||
const TWEMOJI_SPECIAL_CASES: Record<string, string | TwemojiSpecificEmoji> = {
|
||||
'1F441-200D-1F5E8': '1F441-FE0F-200D-1F5E8-FE0F', // Eye in speech bubble
|
||||
// An emoji that was never ported to the Unicode standard.
|
||||
// See: https://emojipedia.org/shibuya
|
||||
E50A: { label: 'Shibuya 109' },
|
||||
};
|
||||
|
||||
export function twemojiToUnicodeInfo(
|
||||
twemojiHex: string,
|
||||
): TwemojiSpecificEmoji | string {
|
||||
const specialCase = TWEMOJI_SPECIAL_CASES[twemojiHex.toUpperCase()];
|
||||
if (specialCase) {
|
||||
return specialCase;
|
||||
}
|
||||
const codes = hexStringToNumbers(twemojiHex);
|
||||
let gender: undefined | number;
|
||||
let skin: undefined | number;
|
||||
for (const code of codes) {
|
||||
if (!gender && code in GENDER_CODES_MAP) {
|
||||
gender = GENDER_CODES_MAP[code];
|
||||
} else if (!skin && code in SKIN_TONE_CODES) {
|
||||
skin = code;
|
||||
}
|
||||
|
||||
// Exit if we have both skin and gender
|
||||
if (skin && gender) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let mappedCodes: unknown[] = codes;
|
||||
|
||||
if (codes.at(-1) === CHRISTMAS_TREE_CODE && codes.length >= 3 && gender) {
|
||||
// Twemoji uses the christmas tree with a ZWJ for Mr. and Mrs. Claus,
|
||||
// but in Unicode that only works for Mx. Claus.
|
||||
const START_CODE =
|
||||
gender === GENDER_FEMALE_CODE ? MS_CLAUS_CODE : MR_CLAUS_CODE;
|
||||
mappedCodes = [START_CODE, skin];
|
||||
} else if (codes.at(-1) === KEYCAP_CODE && codes.length === 2) {
|
||||
// For key emoji, insert the variation selector
|
||||
mappedCodes = [codes[0], VARIATION_SELECTOR_CODE, KEYCAP_CODE];
|
||||
} else if (
|
||||
(codes.at(0) === SKIER_CODE || codes.at(0) === LEVITATING_PERSON_CODE) &&
|
||||
codes.length > 1
|
||||
) {
|
||||
// Twemoji offers more gender and skin options for the skier and levitating person emoji.
|
||||
return {
|
||||
unqualified: hexNumbersToString([codes.at(0)]),
|
||||
skin,
|
||||
gender,
|
||||
};
|
||||
}
|
||||
|
||||
return hexNumbersToString(mappedCodes);
|
||||
}
|
||||
|
||||
function hexStringToNumbers(hexString: string): number[] {
|
||||
return hexString
|
||||
.split('-')
|
||||
.map((code) => Number.parseInt(code, 16))
|
||||
.filter((code) => !Number.isNaN(code));
|
||||
}
|
||||
|
||||
function hexNumbersToString(codes: unknown[], padding = 4): string {
|
||||
return codes
|
||||
.filter(
|
||||
(code): code is number =>
|
||||
typeof code === 'number' && code > 0 && !Number.isNaN(code),
|
||||
)
|
||||
.map((code) => code.toString(16).padStart(padding, '0').toUpperCase())
|
||||
.join('-');
|
||||
}
|
13
app/javascript/mastodon/features/emoji/worker.ts
Normal file
13
app/javascript/mastodon/features/emoji/worker.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
import { importEmojiData, importCustomEmojiData } from './loader';
|
||||
|
||||
addEventListener('message', handleMessage);
|
||||
self.postMessage('ready'); // After the worker is ready, notify the main thread
|
||||
|
||||
function handleMessage(event: MessageEvent<string>) {
|
||||
const { data: locale } = event;
|
||||
if (locale !== 'custom') {
|
||||
void importEmojiData(locale);
|
||||
} else {
|
||||
void importCustomEmojiData();
|
||||
}
|
||||
}
|
|
@ -50,16 +50,22 @@ export const MoreLink: React.FC = () => {
|
|||
|
||||
const menu = useMemo(() => {
|
||||
const arr: MenuItem[] = [
|
||||
{ text: intl.formatMessage(messages.filters), href: '/filters' },
|
||||
{ text: intl.formatMessage(messages.mutes), to: '/mutes' },
|
||||
{ text: intl.formatMessage(messages.blocks), to: '/blocks' },
|
||||
{
|
||||
text: intl.formatMessage(messages.domainBlocks),
|
||||
to: '/domain_blocks',
|
||||
href: '/filters',
|
||||
text: intl.formatMessage(messages.filters),
|
||||
},
|
||||
{
|
||||
to: '/mutes',
|
||||
text: intl.formatMessage(messages.mutes),
|
||||
},
|
||||
{
|
||||
to: '/blocks',
|
||||
text: intl.formatMessage(messages.blocks),
|
||||
},
|
||||
{
|
||||
to: '/domain_blocks',
|
||||
text: intl.formatMessage(messages.domainBlocks),
|
||||
},
|
||||
];
|
||||
|
||||
arr.push(
|
||||
null,
|
||||
{
|
||||
href: '/settings/privacy',
|
||||
|
@ -77,7 +83,7 @@ export const MoreLink: React.FC = () => {
|
|||
href: '/settings/export',
|
||||
text: intl.formatMessage(messages.importExport),
|
||||
},
|
||||
);
|
||||
];
|
||||
|
||||
if (canManageReports(permissions)) {
|
||||
arr.push(null, {
|
||||
|
@ -106,7 +112,7 @@ export const MoreLink: React.FC = () => {
|
|||
}, [intl, dispatch, permissions]);
|
||||
|
||||
return (
|
||||
<Dropdown items={menu}>
|
||||
<Dropdown items={menu} placement='bottom-start'>
|
||||
<button className='column-link column-link--transparent'>
|
||||
<Icon id='' icon={MoreHorizIcon} className='column-link__icon' />
|
||||
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { PureComponent } from 'react';
|
||||
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import SettingsIcon from '@/material-icons/400-20px/settings.svg?react';
|
||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
||||
import { requestBrowserPermission } from 'mastodon/actions/notifications';
|
||||
import { changeSetting } from 'mastodon/actions/settings';
|
||||
import { Button } from 'mastodon/components/button';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { IconButton } from 'mastodon/components/icon_button';
|
||||
|
||||
const messages = defineMessages({
|
||||
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||
});
|
||||
|
||||
class NotificationsPermissionBanner extends PureComponent {
|
||||
|
||||
static propTypes = {
|
||||
dispatch: PropTypes.func.isRequired,
|
||||
intl: PropTypes.object.isRequired,
|
||||
};
|
||||
|
||||
handleClick = () => {
|
||||
this.props.dispatch(requestBrowserPermission());
|
||||
};
|
||||
|
||||
handleClose = () => {
|
||||
this.props.dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
|
||||
};
|
||||
|
||||
render () {
|
||||
const { intl } = this.props;
|
||||
|
||||
return (
|
||||
<div className='notifications-permission-banner'>
|
||||
<div className='notifications-permission-banner__close'>
|
||||
<IconButton icon='times' iconComponent={CloseIcon} onClick={this.handleClose} title={intl.formatMessage(messages.close)} />
|
||||
</div>
|
||||
|
||||
<h2><FormattedMessage id='notifications_permission_banner.title' defaultMessage='Never miss a thing' /></h2>
|
||||
<p><FormattedMessage id='notifications_permission_banner.how_to_control' defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled." values={{ icon: <Icon id='sliders' icon={SettingsIcon} /> }} /></p>
|
||||
<Button onClick={this.handleClick}><FormattedMessage id='notifications_permission_banner.enable' defaultMessage='Enable desktop notifications' /></Button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default connect()(injectIntl(NotificationsPermissionBanner));
|
|
@ -0,0 +1,74 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||
|
||||
import { useAppDispatch } from '@/mastodon/store';
|
||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
||||
import UnfoldMoreIcon from '@/material-icons/400-24px/unfold_more.svg?react';
|
||||
import { requestBrowserPermission } from 'mastodon/actions/notifications';
|
||||
import { changeSetting } from 'mastodon/actions/settings';
|
||||
import { Button } from 'mastodon/components/button';
|
||||
import { messages as columnHeaderMessages } from 'mastodon/components/column_header';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { IconButton } from 'mastodon/components/icon_button';
|
||||
|
||||
const messages = defineMessages({
|
||||
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||
});
|
||||
|
||||
const NotificationsPermissionBanner: React.FC = () => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const handleClick = useCallback(() => {
|
||||
dispatch(requestBrowserPermission());
|
||||
}, [dispatch]);
|
||||
|
||||
const handleClose = useCallback(() => {
|
||||
dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
|
||||
}, [dispatch]);
|
||||
|
||||
return (
|
||||
<div className='notifications-permission-banner'>
|
||||
<div className='notifications-permission-banner__close'>
|
||||
<IconButton
|
||||
icon='times'
|
||||
iconComponent={CloseIcon}
|
||||
onClick={handleClose}
|
||||
title={intl.formatMessage(messages.close)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<h2>
|
||||
<FormattedMessage
|
||||
id='notifications_permission_banner.title'
|
||||
defaultMessage='Never miss a thing'
|
||||
/>
|
||||
</h2>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id='notifications_permission_banner.how_to_control'
|
||||
defaultMessage="To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled."
|
||||
values={{
|
||||
icon: (
|
||||
<Icon
|
||||
id='sliders'
|
||||
icon={UnfoldMoreIcon}
|
||||
aria-label={intl.formatMessage(columnHeaderMessages.show)}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</p>
|
||||
<Button onClick={handleClick}>
|
||||
<FormattedMessage
|
||||
id='notifications_permission_banner.enable'
|
||||
defaultMessage='Enable desktop notifications'
|
||||
/>
|
||||
</Button>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default NotificationsPermissionBanner;
|
|
@ -1,4 +1,4 @@
|
|||
import { useCallback } from 'react';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
|
@ -21,6 +21,9 @@ import { openModal } from 'mastodon/actions/modal';
|
|||
import { IconButton } from 'mastodon/components/icon_button';
|
||||
import { useIdentity } from 'mastodon/identity_context';
|
||||
import { me } from 'mastodon/initial_state';
|
||||
import type { Status } from 'mastodon/models/status';
|
||||
import { makeGetStatus } from 'mastodon/selectors';
|
||||
import type { RootState } from 'mastodon/store';
|
||||
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
||||
|
||||
const messages = defineMessages({
|
||||
|
@ -47,6 +50,11 @@ const messages = defineMessages({
|
|||
open: { id: 'status.open', defaultMessage: 'Expand this status' },
|
||||
});
|
||||
|
||||
type GetStatusSelector = (
|
||||
state: RootState,
|
||||
props: { id?: string | null; contextType?: string },
|
||||
) => Status | null;
|
||||
|
||||
export const Footer: React.FC<{
|
||||
statusId: string;
|
||||
withOpenButton?: boolean;
|
||||
|
@ -56,7 +64,8 @@ export const Footer: React.FC<{
|
|||
const intl = useIntl();
|
||||
const history = useHistory();
|
||||
const dispatch = useAppDispatch();
|
||||
const status = useAppSelector((state) => state.statuses.get(statusId));
|
||||
const getStatus = useMemo(() => makeGetStatus(), []) as GetStatusSelector;
|
||||
const status = useAppSelector((state) => getStatus(state, { id: statusId }));
|
||||
const accountId = status?.get('account') as string | undefined;
|
||||
const account = useAppSelector((state) =>
|
||||
accountId ? state.accounts.get(accountId) : undefined,
|
||||
|
|
|
@ -13,6 +13,7 @@ export const ConfirmationModal: React.FC<
|
|||
title: React.ReactNode;
|
||||
message: React.ReactNode;
|
||||
confirm: React.ReactNode;
|
||||
cancel?: React.ReactNode;
|
||||
secondary?: React.ReactNode;
|
||||
onSecondary?: () => void;
|
||||
onConfirm: () => void;
|
||||
|
@ -22,6 +23,7 @@ export const ConfirmationModal: React.FC<
|
|||
title,
|
||||
message,
|
||||
confirm,
|
||||
cancel,
|
||||
onClose,
|
||||
onConfirm,
|
||||
secondary,
|
||||
|
@ -57,10 +59,12 @@ export const ConfirmationModal: React.FC<
|
|||
<div className='safety-action-modal__bottom'>
|
||||
<div className='safety-action-modal__actions'>
|
||||
<button onClick={handleCancel} className='link-button'>
|
||||
<FormattedMessage
|
||||
id='confirmation_modal.cancel'
|
||||
defaultMessage='Cancel'
|
||||
/>
|
||||
{cancel ?? (
|
||||
<FormattedMessage
|
||||
id='confirmation_modal.cancel'
|
||||
defaultMessage='Cancel'
|
||||
/>
|
||||
)}
|
||||
</button>
|
||||
|
||||
{secondary && (
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { replyCompose } from 'mastodon/actions/compose';
|
||||
import { editStatus } from 'mastodon/actions/statuses';
|
||||
import type { Status } from 'mastodon/models/status';
|
||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||
|
||||
import type { BaseConfirmationModalProps } from './confirmation_modal';
|
||||
import { ConfirmationModal } from './confirmation_modal';
|
||||
|
||||
const editMessages = defineMessages({
|
||||
title: {
|
||||
id: 'confirmations.discard_draft.edit.title',
|
||||
defaultMessage: 'Discard changes to your post?',
|
||||
},
|
||||
message: {
|
||||
id: 'confirmations.discard_draft.edit.message',
|
||||
defaultMessage:
|
||||
'Continuing will discard any changes you have made to the post you are currently editing.',
|
||||
},
|
||||
cancel: {
|
||||
id: 'confirmations.discard_draft.edit.cancel',
|
||||
defaultMessage: 'Resume editing',
|
||||
},
|
||||
});
|
||||
|
||||
const postMessages = defineMessages({
|
||||
title: {
|
||||
id: 'confirmations.discard_draft.post.title',
|
||||
defaultMessage: 'Discard your draft post?',
|
||||
},
|
||||
message: {
|
||||
id: 'confirmations.discard_draft.post.message',
|
||||
defaultMessage:
|
||||
'Continuing will discard the post you are currently composing.',
|
||||
},
|
||||
cancel: {
|
||||
id: 'confirmations.discard_draft.post.cancel',
|
||||
defaultMessage: 'Resume draft',
|
||||
},
|
||||
});
|
||||
|
||||
const messages = defineMessages({
|
||||
confirm: {
|
||||
id: 'confirmations.discard_draft.confirm',
|
||||
defaultMessage: 'Discard and continue',
|
||||
},
|
||||
});
|
||||
|
||||
const DiscardDraftConfirmationModal: React.FC<
|
||||
{
|
||||
onConfirm: () => void;
|
||||
} & BaseConfirmationModalProps
|
||||
> = ({ onConfirm, onClose }) => {
|
||||
const intl = useIntl();
|
||||
const isEditing = useAppSelector((state) => !!state.compose.get('id'));
|
||||
|
||||
const contextualMessages = isEditing ? editMessages : postMessages;
|
||||
|
||||
return (
|
||||
<ConfirmationModal
|
||||
title={intl.formatMessage(contextualMessages.title)}
|
||||
message={intl.formatMessage(contextualMessages.message)}
|
||||
cancel={intl.formatMessage(contextualMessages.cancel)}
|
||||
confirm={intl.formatMessage(messages.confirm)}
|
||||
onConfirm={onConfirm}
|
||||
onClose={onClose}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export const ConfirmReplyModal: React.FC<
|
||||
{
|
||||
status: Status;
|
||||
} & BaseConfirmationModalProps
|
||||
> = ({ status, onClose }) => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const onConfirm = useCallback(() => {
|
||||
dispatch(replyCompose(status));
|
||||
}, [dispatch, status]);
|
||||
|
||||
return (
|
||||
<DiscardDraftConfirmationModal onConfirm={onConfirm} onClose={onClose} />
|
||||
);
|
||||
};
|
||||
|
||||
export const ConfirmEditStatusModal: React.FC<
|
||||
{
|
||||
statusId: string;
|
||||
} & BaseConfirmationModalProps
|
||||
> = ({ statusId, onClose }) => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const onConfirm = useCallback(() => {
|
||||
dispatch(editStatus(statusId));
|
||||
}, [dispatch, statusId]);
|
||||
|
||||
return (
|
||||
<DiscardDraftConfirmationModal onConfirm={onConfirm} onClose={onClose} />
|
||||
);
|
||||
};
|
|
@ -1,45 +0,0 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { editStatus } from 'mastodon/actions/statuses';
|
||||
import { useAppDispatch } from 'mastodon/store';
|
||||
|
||||
import type { BaseConfirmationModalProps } from './confirmation_modal';
|
||||
import { ConfirmationModal } from './confirmation_modal';
|
||||
|
||||
const messages = defineMessages({
|
||||
editTitle: {
|
||||
id: 'confirmations.edit.title',
|
||||
defaultMessage: 'Overwrite post?',
|
||||
},
|
||||
editConfirm: { id: 'confirmations.edit.confirm', defaultMessage: 'Edit' },
|
||||
editMessage: {
|
||||
id: 'confirmations.edit.message',
|
||||
defaultMessage:
|
||||
'Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?',
|
||||
},
|
||||
});
|
||||
|
||||
export const ConfirmEditStatusModal: React.FC<
|
||||
{
|
||||
statusId: string;
|
||||
} & BaseConfirmationModalProps
|
||||
> = ({ statusId, onClose }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const onConfirm = useCallback(() => {
|
||||
dispatch(editStatus(statusId));
|
||||
}, [dispatch, statusId]);
|
||||
|
||||
return (
|
||||
<ConfirmationModal
|
||||
title={intl.formatMessage(messages.editTitle)}
|
||||
message={intl.formatMessage(messages.editMessage)}
|
||||
confirm={intl.formatMessage(messages.editConfirm)}
|
||||
onConfirm={onConfirm}
|
||||
onClose={onClose}
|
||||
/>
|
||||
);
|
||||
};
|
|
@ -1,8 +1,10 @@
|
|||
export { ConfirmationModal } from './confirmation_modal';
|
||||
export { ConfirmDeleteStatusModal } from './delete_status';
|
||||
export { ConfirmDeleteListModal } from './delete_list';
|
||||
export { ConfirmReplyModal } from './reply';
|
||||
export { ConfirmEditStatusModal } from './edit_status';
|
||||
export {
|
||||
ConfirmReplyModal,
|
||||
ConfirmEditStatusModal,
|
||||
} from './discard_draft_confirmation';
|
||||
export { ConfirmUnfollowModal } from './unfollow';
|
||||
export { ConfirmClearNotificationsModal } from './clear_notifications';
|
||||
export { ConfirmLogOutModal } from './log_out';
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
import { useCallback } from 'react';
|
||||
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { replyCompose } from 'mastodon/actions/compose';
|
||||
import type { Status } from 'mastodon/models/status';
|
||||
import { useAppDispatch } from 'mastodon/store';
|
||||
|
||||
import type { BaseConfirmationModalProps } from './confirmation_modal';
|
||||
import { ConfirmationModal } from './confirmation_modal';
|
||||
|
||||
const messages = defineMessages({
|
||||
replyTitle: {
|
||||
id: 'confirmations.reply.title',
|
||||
defaultMessage: 'Overwrite post?',
|
||||
},
|
||||
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
|
||||
replyMessage: {
|
||||
id: 'confirmations.reply.message',
|
||||
defaultMessage:
|
||||
'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?',
|
||||
},
|
||||
});
|
||||
|
||||
export const ConfirmReplyModal: React.FC<
|
||||
{
|
||||
status: Status;
|
||||
} & BaseConfirmationModalProps
|
||||
> = ({ status, onClose }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const onConfirm = useCallback(() => {
|
||||
dispatch(replyCompose(status));
|
||||
}, [dispatch, status]);
|
||||
|
||||
return (
|
||||
<ConfirmationModal
|
||||
title={intl.formatMessage(messages.replyTitle)}
|
||||
message={intl.formatMessage(messages.replyMessage)}
|
||||
confirm={intl.formatMessage(messages.replyConfirm)}
|
||||
onConfirm={onConfirm}
|
||||
onClose={onClose}
|
||||
/>
|
||||
);
|
||||
};
|
|
@ -8,13 +8,14 @@ import { openURL } from 'mastodon/actions/search';
|
|||
import { useAppDispatch } from 'mastodon/store';
|
||||
|
||||
const isMentionClick = (element: HTMLAnchorElement) =>
|
||||
element.classList.contains('mention');
|
||||
element.classList.contains('mention') &&
|
||||
!element.classList.contains('hashtag');
|
||||
|
||||
const isHashtagClick = (element: HTMLAnchorElement) =>
|
||||
element.textContent?.[0] === '#' ||
|
||||
element.previousSibling?.textContent?.endsWith('#');
|
||||
|
||||
export const useLinks = () => {
|
||||
export const useLinks = (skipHashtags?: boolean) => {
|
||||
const history = useHistory();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
|
@ -61,12 +62,12 @@ export const useLinks = () => {
|
|||
if (isMentionClick(target)) {
|
||||
e.preventDefault();
|
||||
void handleMentionClick(target);
|
||||
} else if (isHashtagClick(target)) {
|
||||
} else if (isHashtagClick(target) && !skipHashtags) {
|
||||
e.preventDefault();
|
||||
handleHashtagClick(target);
|
||||
}
|
||||
},
|
||||
[handleMentionClick, handleHashtagClick],
|
||||
[skipHashtags, handleMentionClick, handleHashtagClick],
|
||||
);
|
||||
|
||||
return handleClick;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// @ts-check
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {[code: string, name: string, localName: string]} InitialStateLanguage
|
||||
*/
|
||||
|
@ -64,6 +63,7 @@
|
|||
* @property {boolean=} critical_updates_pending
|
||||
* @property {InitialStateMeta} meta
|
||||
* @property {Role?} role
|
||||
* @property {string[]} features
|
||||
*/
|
||||
|
||||
const element = document.getElementById('initial-state');
|
||||
|
@ -140,4 +140,12 @@ export function getAccessToken() {
|
|||
return getMeta('access_token');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} feature
|
||||
* @returns {boolean}
|
||||
*/
|
||||
export function isFeatureEnabled(feature) {
|
||||
return initialState?.features?.includes(feature) || false;
|
||||
}
|
||||
|
||||
export default initialState;
|
||||
|
|
|
@ -120,7 +120,6 @@
|
|||
"confirmations.discard_edit_media.confirm": "Gooi weg",
|
||||
"confirmations.logout.confirm": "Teken Uit",
|
||||
"confirmations.logout.message": "Is jy seker jy wil uitteken?",
|
||||
"confirmations.reply.confirm": "Antwoord",
|
||||
"conversation.mark_as_read": "Merk as gelees",
|
||||
"conversation.open": "Sien gesprek",
|
||||
"conversation.with": "Met {names}",
|
||||
|
|
|
@ -133,8 +133,6 @@
|
|||
"confirmations.logout.message": "Yes seguro de querer zarrar la sesión?",
|
||||
"confirmations.mute.confirm": "Silenciar",
|
||||
"confirmations.redraft.confirm": "Borrar y tornar ta borrador",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder sobrescribirá lo mensache que yes escribindo. Yes seguro que deseyas continar?",
|
||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||
"confirmations.unfollow.message": "Yes seguro que quiers deixar de seguir a {name}?",
|
||||
"conversation.delete": "Borrar conversación",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"about.blocks": "خوادم تحت الإشراف",
|
||||
"about.contact": "للاتصال:",
|
||||
"about.default_locale": "افتراضيالافتراضية",
|
||||
"about.disclaimer": "ماستدون برنامج حر ومفتوح المصدر وعلامة تجارية لـ Mastodon GmbH.",
|
||||
"about.domain_blocks.no_reason_available": "السبب غير متوفر",
|
||||
"about.domain_blocks.preamble": "يتيح مَستُدون عمومًا لمستخدميه مطالعة المحتوى من المستخدمين من الخواديم الأخرى في الفدرالية والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم.",
|
||||
|
@ -8,6 +9,7 @@
|
|||
"about.domain_blocks.silenced.title": "محدود",
|
||||
"about.domain_blocks.suspended.explanation": "لن يتم معالجة أي بيانات من هذا الخادم أو تخزينها أو تبادلها، مما يجعل أي تفاعل أو اتصال مع المستخدمين من هذا الخادم مستحيلا.",
|
||||
"about.domain_blocks.suspended.title": "مُعلّق",
|
||||
"about.language_label": "اللغة",
|
||||
"about.not_available": "لم يتم توفير هذه المعلومات على هذا الخادم.",
|
||||
"about.powered_by": "شبكة اجتماعية لامركزية مدعومة من {mastodon}",
|
||||
"about.rules": "قواعد الخادم",
|
||||
|
@ -19,13 +21,21 @@
|
|||
"account.block_domain": "حظر اسم النِّطاق {domain}",
|
||||
"account.block_short": "حظر",
|
||||
"account.blocked": "محظور",
|
||||
"account.blocking": "محظور",
|
||||
"account.cancel_follow_request": "إلغاء طلب المتابعة",
|
||||
"account.copy": "نسخ الرابط إلى الملف الشخصي",
|
||||
"account.direct": "إشارة خاصة لـ @{name}",
|
||||
"account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}",
|
||||
"account.domain_blocking": "نطاق محظور",
|
||||
"account.edit_profile": "تعديل الملف الشخصي",
|
||||
"account.enable_notifications": "أشعرني عندما ينشر @{name}",
|
||||
"account.endorse": "أوصِ به على صفحتك الشخصية",
|
||||
"account.familiar_followers_many": "يتبعه {name1}، {name2} و{othersCount, plural, one {شخص آخر تعرفه} other {# أشخاص آخرون تعرفهم}}",
|
||||
"account.familiar_followers_one": "يتبعه {name1}",
|
||||
"account.familiar_followers_two": "يتبعه {name1} و {name2}",
|
||||
"account.featured": "معروض",
|
||||
"account.featured.accounts": "ملفات شخصية",
|
||||
"account.featured.hashtags": "هاشتاقات",
|
||||
"account.featured_tags.last_status_at": "آخر منشور في {date}",
|
||||
"account.featured_tags.last_status_never": "لا توجد رسائل",
|
||||
"account.follow": "متابعة",
|
||||
|
@ -33,9 +43,11 @@
|
|||
"account.followers": "مُتابِعون",
|
||||
"account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.",
|
||||
"account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two {مُتابعانِ اِثنان} few {{counter} مُتابِعين} many {{counter} مُتابِعًا} other {{counter} مُتابع}}",
|
||||
"account.followers_you_know_counter": "{counter} شخص تعرفه",
|
||||
"account.following": "الاشتراكات",
|
||||
"account.following_counter": "{count, plural, zero{لا يُتابِع أحدًا} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}",
|
||||
"account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.",
|
||||
"account.follows_you": "يتابعك",
|
||||
"account.go_to_profile": "اذهب إلى الملف الشخصي",
|
||||
"account.hide_reblogs": "إخفاء المعاد نشرها مِن @{name}",
|
||||
"account.in_memoriam": "في الذكرى.",
|
||||
|
@ -50,17 +62,23 @@
|
|||
"account.mute_notifications_short": "كتم الإشعارات",
|
||||
"account.mute_short": "اكتم",
|
||||
"account.muted": "مَكتوم",
|
||||
"account.muting": "مكتوم",
|
||||
"account.mutual": "أنتم تتابعون بعضكم البعض",
|
||||
"account.no_bio": "لم يتم تقديم وصف.",
|
||||
"account.open_original_page": "افتح الصفحة الأصلية",
|
||||
"account.posts": "منشورات",
|
||||
"account.posts_with_replies": "المنشورات والرُدود",
|
||||
"account.remove_from_followers": "إزالة {name} من المتابعين",
|
||||
"account.report": "الإبلاغ عن @{name}",
|
||||
"account.requested": "في انتظار القبول. اضغط لإلغاء طلب المُتابعة",
|
||||
"account.requested_follow": "لقد طلب {name} متابعتك",
|
||||
"account.requests_to_follow_you": "طلبات المتابعة",
|
||||
"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_domain_short": "رفع الحظر",
|
||||
"account.unblock_short": "ألغ الحجب",
|
||||
"account.unendorse": "لا تُرَوِّج لهُ في الملف الشخصي",
|
||||
"account.unfollow": "إلغاء المُتابعة",
|
||||
|
@ -82,9 +100,33 @@
|
|||
"alert.unexpected.message": "لقد طرأ خطأ غير متوقّع.",
|
||||
"alert.unexpected.title": "المعذرة!",
|
||||
"alt_text_badge.title": "نص بديل",
|
||||
"alt_text_modal.add_alt_text": "أضف نصًا بديلًا",
|
||||
"alt_text_modal.add_text_from_image": "أضف النص من الصورة",
|
||||
"alt_text_modal.cancel": "إلغاء",
|
||||
"alt_text_modal.change_thumbnail": "غيّر الصورة المصغرة",
|
||||
"alt_text_modal.describe_for_people_with_hearing_impairments": "قم بوصفها للأشخاص ذوي الإعاقة السمعية…",
|
||||
"alt_text_modal.describe_for_people_with_visual_impairments": "قم بوصفها للأشخاص ذوي الإعاقة البصرية…",
|
||||
"alt_text_modal.done": "تمّ",
|
||||
"announcement.announcement": "إعلان",
|
||||
"annual_report.summary.archetype.booster": "The cool-hunter",
|
||||
"annual_report.summary.archetype.lurker": "المتصفح الصامت",
|
||||
"annual_report.summary.archetype.oracle": "حكيم",
|
||||
"annual_report.summary.archetype.pollster": "مستطلع للرأي",
|
||||
"annual_report.summary.archetype.replier": "الفراشة الاجتماعية",
|
||||
"annual_report.summary.followers.followers": "المُتابِعُون",
|
||||
"annual_report.summary.followers.total": "{count} في المجمل",
|
||||
"annual_report.summary.here_it_is": "هذا ملخص الخص بك لسنة {year}:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "المنشور ذو أعلى عدد تفضيلات",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "أكثر منشور مُعاد نشره",
|
||||
"annual_report.summary.highlighted_post.by_replies": "المنشور بأعلى عدد تعليقات",
|
||||
"annual_report.summary.highlighted_post.possessive": "من قبل {name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "التطبيق الأكثر استخداماً",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "الهاشتاق الأكثر استخداماً",
|
||||
"annual_report.summary.most_used_hashtag.none": "لا شيء",
|
||||
"annual_report.summary.new_posts.new_posts": "المنشورات الجديدة",
|
||||
"annual_report.summary.percentile.text": "<topLabel>هذا يجعلك من بين أكثر </topLabel><percentage></percentage><bottomLabel>مستخدمي {domain} نشاطاً </bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "سيبقى هذا الأمر بيننا.",
|
||||
"annual_report.summary.thanks": "شكرا لكونك جزءاً من ماستدون!",
|
||||
"attachments_list.unprocessed": "(غير معالَج)",
|
||||
"audio.hide": "إخفاء المقطع الصوتي",
|
||||
"block_modal.remote_users_caveat": "سوف نطلب من الخادم {domain} أن يحترم قرارك، لكن الالتزام غير مضمون لأن بعض الخواديم قد تتعامل مع نصوص الكتل بشكل مختلف. قد تظل المنشورات العامة مرئية للمستخدمين غير المسجلين الدخول.",
|
||||
|
@ -108,6 +150,7 @@
|
|||
"bundle_column_error.routing.body": "تعذر العثور على الصفحة المطلوبة. هل أنت متأكد من أنّ الرابط التشعبي URL في شريط العناوين صحيح؟",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "إغلاق",
|
||||
"bundle_modal_error.message": "حدث خطأ أثناء تحميل هذه الشاشة.",
|
||||
"bundle_modal_error.retry": "إعادة المُحاولة",
|
||||
"closed_registrations.other_server_instructions": "بما أن ماستدون لامركزي، يمكنك إنشاء حساب على خادم آخر للاستمرار في التفاعل مع هذا الخادم.",
|
||||
"closed_registrations_modal.description": "لا يمكن إنشاء حساب على {domain} حاليا، ولكن على فكرة لست بحاجة إلى حساب على {domain} بذاته لاستخدام ماستدون.",
|
||||
|
@ -176,21 +219,32 @@
|
|||
"confirmations.delete_list.confirm": "حذف",
|
||||
"confirmations.delete_list.message": "هل أنتَ مُتأكدٌ أنكَ تُريدُ حَذفَ هذِهِ القائمة بشكلٍ دائم؟",
|
||||
"confirmations.delete_list.title": "أتريد حذف القائمة؟",
|
||||
"confirmations.discard_draft.confirm": "تجاهل ومتابعة",
|
||||
"confirmations.discard_draft.edit.cancel": "استئناف التعديل",
|
||||
"confirmations.discard_draft.edit.message": "سيتم تجاهل أي تغييرات قمت بها على هذا المنشور.",
|
||||
"confirmations.discard_draft.edit.title": "تجاهل التغييرات على منشورك؟",
|
||||
"confirmations.discard_draft.post.cancel": "استئناف المسودة",
|
||||
"confirmations.discard_draft.post.message": "عبر الاستمرار سيتم تجاهل المنشور الذي تقوم بكتابته الآن.",
|
||||
"confirmations.discard_draft.post.title": "تجاهل مسودة منشورك؟",
|
||||
"confirmations.discard_edit_media.confirm": "تجاهل",
|
||||
"confirmations.discard_edit_media.message": "لديك تغييرات غير محفوظة لوصف الوسائط أو معاينتها، أتريد تجاهلها على أي حال؟",
|
||||
"confirmations.edit.confirm": "تعديل",
|
||||
"confirmations.edit.message": "التعديل في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد تحريرها. متأكد من أنك تريد المواصلة؟",
|
||||
"confirmations.edit.title": "هل تريد استبدال المنشور؟",
|
||||
"confirmations.follow_to_list.confirm": "متابعة وأضفه للقائمة",
|
||||
"confirmations.follow_to_list.message": "يجب أن تتابع {name} لإضافتهم إلى قائمة.",
|
||||
"confirmations.follow_to_list.title": "متابعة المستخدم؟",
|
||||
"confirmations.logout.confirm": "خروج",
|
||||
"confirmations.logout.message": "متأكد من أنك تريد الخروج؟",
|
||||
"confirmations.logout.title": "أتريد المغادرة؟",
|
||||
"confirmations.missing_alt_text.confirm": "أضف نصًا بديلًا",
|
||||
"confirmations.missing_alt_text.message": "يحتوي منشورك على وسائط دون نص بديل. إضافة أوصاف تساعد على جعل المحتوى متاحاً للمزيد من الأشخاص.",
|
||||
"confirmations.missing_alt_text.secondary": "انشر على أي حال",
|
||||
"confirmations.missing_alt_text.title": "أضف نصًا بديلًا؟",
|
||||
"confirmations.mute.confirm": "أكتم",
|
||||
"confirmations.redraft.confirm": "إزالة وإعادة الصياغة",
|
||||
"confirmations.redraft.message": "هل أنت متأكد من أنك تريد حذف هذا المنشور و إعادة صياغته؟ سوف تفقد جميع الإعجابات و الترقيات أما الردود المتصلة به فستُصبِح يتيمة.",
|
||||
"confirmations.redraft.title": "أتريد حذف وإعادة صياغة المنشور؟",
|
||||
"confirmations.reply.confirm": "رد",
|
||||
"confirmations.reply.message": "الرد في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد كتابتها. متأكد من أنك تريد المواصلة؟",
|
||||
"confirmations.reply.title": "هل تريد استبدال المنشور؟",
|
||||
"confirmations.remove_from_followers.confirm": "إزالة المتابع",
|
||||
"confirmations.remove_from_followers.message": "سيتوقف {name} عن متابعتك. هل بالتأكيد تريد المتابعة؟",
|
||||
"confirmations.remove_from_followers.title": "إزالة المتابع؟",
|
||||
"confirmations.unfollow.confirm": "إلغاء المتابعة",
|
||||
"confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
|
||||
"confirmations.unfollow.title": "إلغاء متابعة المستخدم؟",
|
||||
|
@ -212,12 +266,15 @@
|
|||
"disabled_account_banner.text": "حسابك {disabledAccount} معطل حاليا.",
|
||||
"dismissable_banner.community_timeline": "هذه هي أحدث المنشورات العامة من أشخاص تُستضاف حساباتهم على {domain}.",
|
||||
"dismissable_banner.dismiss": "رفض",
|
||||
"dismissable_banner.public_timeline": "هذه أحدث المنشورات العامة على الشبكة الفيدرالية التي يتابعها مستخدمي نطاق {domain}.",
|
||||
"domain_block_modal.block": "حظر الخادم",
|
||||
"domain_block_modal.block_account_instead": "أحجب @{name} بدلاً من ذلك",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "يمكن للأشخاص من هذا الخادم التفاعل مع منشوراتك القديمة.",
|
||||
"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 مثل لغة ماستدون التي يتحدث بها مع شبكات اجتماعية أخرى.",
|
||||
|
@ -249,6 +306,9 @@
|
|||
"emoji_button.search_results": "نتائج البحث",
|
||||
"emoji_button.symbols": "رموز",
|
||||
"emoji_button.travel": "الأماكن والسفر",
|
||||
"empty_column.account_featured.me": "لم تعرض أي شيء حتى الآن. هل تعلم أنه يمكنك عرض الهاشتاقات التي تستخدمها، وحتى حسابات أصدقاءك على ملفك الشخصي؟",
|
||||
"empty_column.account_featured.other": "{acct} لم يعرض أي شيء حتى الآن. هل تعلم أنه يمكنك عرض الهاشتاقات التي تستخدمها، وحتى حسابات أصدقاءك على ملفك الشخصي؟",
|
||||
"empty_column.account_featured_other.unknown": "هذا الحساب لم يعرض أي شيء حتى الآن.",
|
||||
"empty_column.account_hides_collections": "اختار هذا المستخدم عدم إتاحة هذه المعلومات للعامة",
|
||||
"empty_column.account_suspended": "حساب معلق",
|
||||
"empty_column.account_timeline": "لا توجد منشورات هنا!",
|
||||
|
@ -277,9 +337,15 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
|
||||
"errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
|
||||
"explore.suggested_follows": "أشخاص",
|
||||
"explore.title": "رائج",
|
||||
"explore.trending_links": "المُستجدّات",
|
||||
"explore.trending_statuses": "المنشورات",
|
||||
"explore.trending_tags": "وُسُوم",
|
||||
"featured_carousel.header": "{count, plural, zero {}one {منشور معروض} two {منشور معروضَين} few {منشورات معروضة} many {منشورات معروضة} other {منشورات معروضة}}",
|
||||
"featured_carousel.next": "التالي",
|
||||
"featured_carousel.post": "منشور",
|
||||
"featured_carousel.previous": "السابق",
|
||||
"featured_carousel.slide": "{index} من {total}",
|
||||
"filter_modal.added.context_mismatch_explanation": "فئة عامل التصفية هذه لا تنطبق على السياق الذي وصلت فيه إلى هذه المشاركة. إذا كنت ترغب في تصفية المنشور في هذا السياق أيضا، فسيتعين عليك تعديل عامل التصفية.",
|
||||
"filter_modal.added.context_mismatch_title": "عدم تطابق السياق!",
|
||||
"filter_modal.added.expired_explanation": "انتهت صلاحية فئة عامل التصفية هذه، سوف تحتاج إلى تغيير تاريخ انتهاء الصلاحية لتطبيقها.",
|
||||
|
@ -296,6 +362,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": "هذا الخادم",
|
||||
|
@ -329,6 +397,9 @@
|
|||
"footer.terms_of_service": "شروط الخدمة",
|
||||
"generic.saved": "تم الحفظ",
|
||||
"getting_started.heading": "استعدّ للبدء",
|
||||
"hashtag.admin_moderation": "افتح الواجهة الإشراف لـ #{name}",
|
||||
"hashtag.browse": "تصفح المنشورات التي تحتوي #{hashtag}",
|
||||
"hashtag.browse_from_account": "تصفح المنشورات من @{name} التي تحتوي على #{hashtag}",
|
||||
"hashtag.column_header.tag_mode.all": "و {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "أو {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "بدون {additional}",
|
||||
|
@ -341,13 +412,21 @@
|
|||
"hashtag.counter_by_accounts": "{count, plural, zero {لَا مُشارك} one {مُشارَك واحد} two {مُشارِكان إثنان} few {{counter} مشاركين} many {{counter} مُشاركًا} other {{counter} مُشارِك}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}",
|
||||
"hashtag.feature": "اعرضه على صفحتك الشخصية",
|
||||
"hashtag.follow": "اتبع الوسم",
|
||||
"hashtag.mute": "اكتم #{hashtag}",
|
||||
"hashtag.unfeature": "أزله من العرض على الملف الشخصي",
|
||||
"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}",
|
||||
"home.column_settings.show_quotes": "إظهار الاقتباسات",
|
||||
"home.column_settings.show_reblogs": "اعرض المعاد نشرها",
|
||||
"home.column_settings.show_replies": "اعرض الردود",
|
||||
"home.hide_announcements": "إخفاء الإعلانات",
|
||||
|
@ -357,9 +436,23 @@
|
|||
"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": "تجاهل الإشعارات للرسائل التي لم تطلبها؟",
|
||||
"info_button.label": "المساعدة",
|
||||
"info_button.what_is_alt_text": "<h1> ماهو النص البديل؟</h1><p> يوفر النص البديل أوصافا للصور للأشخاص الذين يعانون من إعاقات بصرية أو اتصالات شبكة ضعيفة أو أولئك الذين يبحثون عن سياق إضافي.</p><p> يمكنك تحسين إمكانية الوصول والفهم للجميع من خلال كتابة نص بديل واضح وموجز وموضوعي. </p><ul><li> حدد العناصر المهمة</li><li>لخص النص في الصور</li><li>استخدام بنية الجمل العادية</li><li>تجنب المعلومات الزائدة</li><li> ركز على الاتجاهات والنتائج الرئيسية في العناصر المرئية المعقدة (مثل الرسوم البيانية أو الخرائط)</li></ul>",
|
||||
"interaction_modal.action.favourite": "للمتابعة، تحتاج إلى تفضيل المنشور من حسابك.",
|
||||
"interaction_modal.action.follow": "للمتابعة، تحتاج إلى متابعة المنشور من حسابك.",
|
||||
"interaction_modal.action.reblog": "للمتابعة، تحتاج إلى إعادة نشر المنشور من حسابك.",
|
||||
"interaction_modal.action.reply": "للمتابعة، تحتاج إلى الرد من حسابك.",
|
||||
"interaction_modal.action.vote": "للمتابعة، تحتاج إلى التصويت من حسابك.",
|
||||
"interaction_modal.go": "اذهب",
|
||||
"interaction_modal.no_account_yet": "لا تملك حساباً بعد؟",
|
||||
"interaction_modal.on_another_server": "على خادم مختلف",
|
||||
"interaction_modal.on_this_server": "على هذا الخادم",
|
||||
|
@ -367,6 +460,8 @@
|
|||
"interaction_modal.title.follow": "اتبع {name}",
|
||||
"interaction_modal.title.reblog": "إعادة نشر منشور {name}",
|
||||
"interaction_modal.title.reply": "الرد على منشور {name}",
|
||||
"interaction_modal.title.vote": "صوّت في استطلاع {name}",
|
||||
"interaction_modal.username_prompt": "مثلاً {example}",
|
||||
"intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
|
||||
"intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
|
||||
"intervals.full.minutes": "{number, plural, one {دقيقة واحدة}two {دقيقتان} other {# دقائق}}",
|
||||
|
@ -402,30 +497,44 @@
|
|||
"keyboard_shortcuts.toggle_hidden": "لعرض أو إخفاء النص مِن وراء التحذير",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "لعرض/إخفاء الوسائط",
|
||||
"keyboard_shortcuts.toot": "للشروع في تحرير منشور جديد",
|
||||
"keyboard_shortcuts.translate": "لترجمة منشور",
|
||||
"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": "تم إخفاء هذا الملف الشخصي من قبل مشرفي {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.add_member": "إضافة",
|
||||
"lists.add_to_list": "إضافة إلى القائمة",
|
||||
"lists.add_to_lists": "إضافة {name} إلى القوائم",
|
||||
"lists.create": "إنشاء",
|
||||
"lists.create_a_list_to_organize": "أنشئ قائمة جديدة لتنظم الصفحة الرئيسة خاصتك",
|
||||
"lists.create_list": "إنشاء قائمة",
|
||||
"lists.delete": "احذف القائمة",
|
||||
"lists.done": "تمّ",
|
||||
"lists.edit": "عدّل القائمة",
|
||||
"lists.exclusive": "إخفاء الأعضاء في الصفحة الرئيسية",
|
||||
"lists.exclusive_hint": "إذا يوجد شخص في هذه القائمة، فقم بإخفائه في صفحتك الرئيسة لتجنب رؤية منشوراته مرتين.",
|
||||
"lists.find_users_to_add": "ابحث عن مستخدمين للإضافة",
|
||||
"lists.list_members_count": "{count, plural, zero {}one {# عضو} two {# عضو} few {# عضو} many {# عضو} other {# عضو}}",
|
||||
"lists.list_name": "اسم القائمة",
|
||||
"lists.new_list_name": "اسم القائمة الجديدة",
|
||||
"lists.no_lists_yet": "لا توجد قوائم بعد.",
|
||||
"lists.no_members_yet": "لا أعضاء حتى الآن.",
|
||||
"lists.no_results_found": "لم يتمّ العثور على أي نتيجة.",
|
||||
"lists.remove_member": "إزالة",
|
||||
"lists.replies_policy.followed": "أي مستخدم متابَع",
|
||||
"lists.replies_policy.list": "أعضاء القائمة",
|
||||
"lists.replies_policy.none": "لا أحد",
|
||||
"lists.save": "حفظ",
|
||||
"lists.search": "بحث",
|
||||
"lists.show_replies_to": "تضمين الردود من أعضاء القائمة إلى",
|
||||
"load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
|
||||
"loading_indicator.label": "جاري التحميل…",
|
||||
"media_gallery.hide": "إخفاء",
|
||||
|
@ -440,8 +549,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "لن تر المنشورات التي يُشار فيها إليه.",
|
||||
"mute_modal.you_wont_see_posts": "سيكون بإمكانه رؤية منشوراتك، لكنك لن ترى منشوراته.",
|
||||
"navigation_bar.about": "عن",
|
||||
"navigation_bar.account_settings": "كلمة المرور والأمان",
|
||||
"navigation_bar.administration": "الإدارة",
|
||||
"navigation_bar.advanced_interface": "افتحه في واجهة الويب المتقدمة",
|
||||
"navigation_bar.automated_deletion": "الحذف الآلي للمنشورات",
|
||||
"navigation_bar.blocks": "الحسابات المحجوبة",
|
||||
"navigation_bar.bookmarks": "الفواصل المرجعية",
|
||||
"navigation_bar.direct": "الإشارات الخاصة",
|
||||
|
@ -451,19 +562,41 @@
|
|||
"navigation_bar.follow_requests": "طلبات المتابعة",
|
||||
"navigation_bar.followed_tags": "الوسوم المتابَعة",
|
||||
"navigation_bar.follows_and_followers": "المتابِعون والمتابَعون",
|
||||
"navigation_bar.import_export": "الاستيراد والتصدير",
|
||||
"navigation_bar.lists": "القوائم",
|
||||
"navigation_bar.live_feed_local": "البث الحي للمنشورات المحلية",
|
||||
"navigation_bar.live_feed_public": "البث الحي للمنشورات العالمية",
|
||||
"navigation_bar.logout": "خروج",
|
||||
"navigation_bar.moderation": "الإشراف",
|
||||
"navigation_bar.more": "المزيد",
|
||||
"navigation_bar.mutes": "الحسابات المكتومة",
|
||||
"navigation_bar.opened_in_classic_interface": "تُفتَح المنشورات والحسابات وغيرها من الصفحات الخاصة بشكل مبدئي على واجهة الويب التقليدية.",
|
||||
"navigation_bar.preferences": "التفضيلات",
|
||||
"navigation_bar.privacy_and_reach": "الخصوصية و الوصول",
|
||||
"navigation_bar.search": "البحث",
|
||||
"navigation_bar.search_trends": "البحث / الرائج",
|
||||
"navigation_panel.collapse_followed_tags": "طي قائمة الهاشتاقات المتابعة",
|
||||
"navigation_panel.collapse_lists": "طي قائمة القائمة",
|
||||
"navigation_panel.expand_followed_tags": "توسيع قائمة الهاشتاقات المتابعة",
|
||||
"navigation_panel.expand_lists": "توسيع قائمة القائمة",
|
||||
"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.annual_report.message": "إن #Wrapstodon الخاص بك لسنة {year} ينتظرك! تعرّف إلى النقاط البارزة واللحظات التي لا تنسى على ماستدون!",
|
||||
"notification.annual_report.view": "عرض #Wrapstodon",
|
||||
"notification.favourite": "أضاف {name} منشورك إلى مفضلته",
|
||||
"notification.favourite.name_and_others_with_link": "{name} و<a>{count, plural, zero {}one {شخص آخر} two {شخصان آخرين} few {# أشخاص آخرون} many {# أشخاص آخرون} other {# أشخاص آخرون}}</a> قاموا بتفضيل منشورك",
|
||||
"notification.favourite_pm": "قام {name} بتفضيل إشارتك الخاصة",
|
||||
"notification.favourite_pm.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": "رد خاص",
|
||||
|
@ -482,6 +615,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 {# حسابات}} تتابعها.",
|
||||
|
@ -490,12 +624,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": "الإشعارات المصفاة",
|
||||
|
@ -511,6 +653,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": "الإشعارات",
|
||||
|
@ -537,7 +680,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 {# أيام}}",
|
||||
|
@ -552,7 +697,11 @@
|
|||
"notifications_permission_banner.enable": "تفعيل إشعارات سطح المكتب",
|
||||
"notifications_permission_banner.how_to_control": "لتلقي الإشعارات عندما لا يكون ماستدون مفتوح، قم بتفعيل إشعارات سطح المكتب، يمكنك التحكم بدقة في أنواع التفاعلات التي تولد إشعارات سطح المكتب من خلال زر الـ{icon} أعلاه بمجرد تفعيلها.",
|
||||
"notifications_permission_banner.title": "لا تفوت شيئاً أبداً",
|
||||
"onboarding.follows.back": "عودة",
|
||||
"onboarding.follows.done": "تمّ",
|
||||
"onboarding.follows.empty": "نأسف، لا يمكن عرض نتائج في الوقت الحالي. جرب البحث أو انتقل لصفحة الاستكشاف لإيجاد أشخاص للمتابعة، أو حاول مرة أخرى.",
|
||||
"onboarding.follows.search": "بحث",
|
||||
"onboarding.follows.title": "للبدء قم بمتابعة أشخاص",
|
||||
"onboarding.profile.discoverable": "اجعل ملفي الشخصي قابلاً للاكتشاف",
|
||||
"onboarding.profile.discoverable_hint": "عندما تختار تفعيل إمكانية الاكتشاف على ماستدون، قد تظهر منشوراتك في نتائج البحث والمواضيع الرائجة، وقد يتم اقتراح ملفك الشخصي لأشخاص ذوي اهتمامات مماثلة معك.",
|
||||
"onboarding.profile.display_name": "الاسم العلني",
|
||||
|
@ -578,6 +727,7 @@
|
|||
"poll_button.remove_poll": "إزالة استطلاع الرأي",
|
||||
"privacy.change": "اضبط خصوصية المنشور",
|
||||
"privacy.direct.long": "كل من ذُكر في المنشور",
|
||||
"privacy.direct.short": "إشارة خاصة",
|
||||
"privacy.private.long": "متابعيك فقط",
|
||||
"privacy.private.short": "للمتابِعين",
|
||||
"privacy.public.long": "أي شخص على أو خارج ماستدون",
|
||||
|
@ -589,6 +739,8 @@
|
|||
"privacy_policy.title": "سياسة الخصوصية",
|
||||
"recommended": "موصى به",
|
||||
"refresh": "أنعِش",
|
||||
"regeneration_indicator.please_stand_by": "الرجاء الانتظار.",
|
||||
"regeneration_indicator.preparing_your_home_feed": "جارٍ إعداد صفحتك الرئيسة…",
|
||||
"relative_time.days": "{number}ي",
|
||||
"relative_time.full.days": "منذ {number, plural, zero {} one {# يوم} two {# يومين} few {# أيام} many {# أيام} other {# يوم}}",
|
||||
"relative_time.full.hours": "منذ {number, plural, zero {} one {ساعة واحدة} two {ساعتَيْن} few {# ساعات} many {# ساعة} other {# ساعة}}",
|
||||
|
@ -653,6 +805,7 @@
|
|||
"report_notification.categories.violation": "القاعدة المنتهَكة",
|
||||
"report_notification.categories.violation_sentence": "انتهاك لقاعدة",
|
||||
"report_notification.open": "فتح التقرير",
|
||||
"search.clear": "مسح البحث",
|
||||
"search.no_recent_searches": "ما من عمليات بحث تمت مؤخرًا",
|
||||
"search.placeholder": "ابحث",
|
||||
"search.quick_action.account_search": "الملفات التعريفية المطابقة لـ {x}",
|
||||
|
@ -672,14 +825,19 @@
|
|||
"search_results.accounts": "الصفحات التعريفية",
|
||||
"search_results.all": "الكل",
|
||||
"search_results.hashtags": "الوُسوم",
|
||||
"search_results.no_results": "لا توجد نتائج.",
|
||||
"search_results.no_search_yet": "حاول البحث عن المنشورات، ملفات الشخصية أو الهاشتاقات.",
|
||||
"search_results.see_all": "رؤية الكل",
|
||||
"search_results.statuses": "المنشورات",
|
||||
"search_results.title": "البحث عن \"{q}\"",
|
||||
"server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)",
|
||||
"server_banner.active_users": "مستخدم نشط",
|
||||
"server_banner.administered_by": "يُديره:",
|
||||
"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}",
|
||||
|
@ -714,6 +872,13 @@
|
|||
"status.mute_conversation": "كتم المحادثة",
|
||||
"status.open": "وسّع هذا المنشور",
|
||||
"status.pin": "دبّسه على الصفحة التعريفية",
|
||||
"status.quote_error.filtered": "مُخفي بسبب إحدى إعدادات التصفية خاصتك",
|
||||
"status.quote_error.not_found": "لا يمكن عرض هذا المنشور.",
|
||||
"status.quote_error.pending_approval": "هذا المنشور ينتظر موافقة صاحب المنشور الأصلي.",
|
||||
"status.quote_error.rejected": "لا يمكن عرض هذا المنشور لأن صاحب المنشور الأصلي لا يسمح له بأن يكون مقتبس.",
|
||||
"status.quote_error.removed": "تمت إزالة المنشور من قبل صاحبه.",
|
||||
"status.quote_error.unauthorized": "لا يمكن عرض هذا المنشور لأنك لست مخولاً برؤيته.",
|
||||
"status.quote_post_author": "منشور من {name}",
|
||||
"status.read_more": "اقرأ المزيد",
|
||||
"status.reblog": "إعادة النشر",
|
||||
"status.reblog_private": "إعادة النشر إلى الجمهور الأصلي",
|
||||
|
@ -722,6 +887,7 @@
|
|||
"status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.",
|
||||
"status.redraft": "إزالة وإعادة الصياغة",
|
||||
"status.remove_bookmark": "احذفه مِن الفواصل المرجعية",
|
||||
"status.remove_favourite": "إزالة من التفضيلات",
|
||||
"status.replied_in_thread": "رد في خيط",
|
||||
"status.replied_to": "رَدًا على {name}",
|
||||
"status.reply": "ردّ",
|
||||
|
@ -742,8 +908,13 @@
|
|||
"subscribed_languages.save": "حفظ التغييرات",
|
||||
"subscribed_languages.target": "تغيير اللغات المشتركة لـ {target}",
|
||||
"tabs_bar.home": "الرئيسية",
|
||||
"tabs_bar.menu": "القائمة",
|
||||
"tabs_bar.notifications": "الإشعارات",
|
||||
"tabs_bar.publish": "منشور جديد",
|
||||
"tabs_bar.search": "ابحث",
|
||||
"terms_of_service.effective_as_of": "مطبق اعتباراً من {date}",
|
||||
"terms_of_service.title": "شروط الخدمة",
|
||||
"terms_of_service.upcoming_changes_on": "تغييرات قادمة في تاريخ {date}",
|
||||
"time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية",
|
||||
"time_remaining.hours": "{number, plural, one {# ساعة} other {# ساعات}} متبقية",
|
||||
"time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية",
|
||||
|
@ -759,6 +930,11 @@
|
|||
"upload_button.label": "إضافة وسائط",
|
||||
"upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
|
||||
"upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
|
||||
"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_progress.label": "يرفع...",
|
||||
"upload_progress.processing": "تتم المعالجة…",
|
||||
|
@ -769,6 +945,12 @@
|
|||
"video.expand": "توسيع الفيديو",
|
||||
"video.fullscreen": "ملء الشاشة",
|
||||
"video.hide": "إخفاء الفيديو",
|
||||
"video.mute": "كتم",
|
||||
"video.pause": "إيقاف مؤقت",
|
||||
"video.play": "تشغيل"
|
||||
"video.play": "تشغيل",
|
||||
"video.skip_backward": "تخطى إلى الوراء",
|
||||
"video.skip_forward": "تخطي للأمام",
|
||||
"video.unmute": "إلغاء الكتم",
|
||||
"video.volume_down": "خفض الصوت",
|
||||
"video.volume_up": "رفع الصوت"
|
||||
}
|
||||
|
|
|
@ -146,8 +146,6 @@
|
|||
"confirmations.delete_list.message": "¿De xuru que quies desaniciar permanentemente esta llista?",
|
||||
"confirmations.delete_list.title": "¿Quies desaniciar la llista?",
|
||||
"confirmations.discard_edit_media.confirm": "Escartar",
|
||||
"confirmations.edit.confirm": "Editar",
|
||||
"confirmations.edit.message": "La edición va sobrescribir el mensaxe que tas escribiendo. ¿De xuru que quies siguir?",
|
||||
"confirmations.follow_to_list.title": "¿Siguir al usuariu?",
|
||||
"confirmations.logout.confirm": "Zarrar la sesión",
|
||||
"confirmations.logout.message": "¿De xuru que quies zarrar la sesión?",
|
||||
|
@ -156,8 +154,6 @@
|
|||
"confirmations.missing_alt_text.title": "¿Quies amestar testu alternativu?",
|
||||
"confirmations.redraft.confirm": "Desaniciar y reeditar",
|
||||
"confirmations.redraft.title": "¿Desaniciar y reeditar la publicación?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder agora va sobrescribir el mensaxe que tas componiendo anguaño. ¿De xuru que quies siguir?",
|
||||
"confirmations.unfollow.confirm": "Dexar de siguir",
|
||||
"confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
|
||||
"confirmations.unfollow.title": "¿Dexar de siguir al usuariu?",
|
||||
|
|
|
@ -206,9 +206,6 @@
|
|||
"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.follow_to_list.confirm": "İzlə və siyahıya əlavə et",
|
||||
"confirmations.follow_to_list.message": "{name} istifadəçisini siyahıya əlavə etmək üçün onu izləməlisiniz.",
|
||||
"confirmations.follow_to_list.title": "İstifadəçini izlə?",
|
||||
|
@ -223,9 +220,6 @@
|
|||
"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.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.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?",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"about.blocks": "Мадэраваныя серверы",
|
||||
"about.contact": "Кантакт:",
|
||||
"about.default_locale": "Прадвызначаная",
|
||||
"about.disclaimer": "Mastodon - свабоднае праграмнае забеспячэнне, з адкрытым зыходным кодам, і гандлёвай маркай Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Прычына недаступная",
|
||||
"about.domain_blocks.preamble": "Mastodon, у асноўным, дазваляе вам праглядаць кантэнт і ўзаемадзейнічаць з карыстальнікамі з іншых сервераў у федэсвету. Гэтыя выключэнні былі зроблены дакладна на гэтым серверы.",
|
||||
|
@ -8,6 +9,7 @@
|
|||
"about.domain_blocks.silenced.title": "Абмежаваны",
|
||||
"about.domain_blocks.suspended.explanation": "Ніякая інфармацыя з гэтага сервера не будзе апрацавана, захавана або абменена, узаемадзеянне або камунікацыя з карыстальнікамі гэтага сервера немагчымы.",
|
||||
"about.domain_blocks.suspended.title": "Прыпынены",
|
||||
"about.language_label": "Мова",
|
||||
"about.not_available": "Дадзеная інфармацыя не дасяжная на гэтым серверы.",
|
||||
"about.powered_by": "Дэцэнтралізаваная сацыяльная сетка, створаная {mastodon}",
|
||||
"about.rules": "Правілы сервера",
|
||||
|
@ -19,13 +21,21 @@
|
|||
"account.block_domain": "Заблакіраваць дамен {domain}",
|
||||
"account.block_short": "Заблакіраваць",
|
||||
"account.blocked": "Заблакіраваны",
|
||||
"account.blocking": "Блакіраванне",
|
||||
"account.cancel_follow_request": "Скасаваць запыт на падпіску",
|
||||
"account.copy": "Скапіраваць спасылку на профіль",
|
||||
"account.direct": "Згадаць асабіста @{name}",
|
||||
"account.disable_notifications": "Не паведамляць мне пра публікацыі @{name}",
|
||||
"account.domain_blocking": "Блакіраванне дамена",
|
||||
"account.edit_profile": "Рэдагаваць профіль",
|
||||
"account.enable_notifications": "Апавяшчаць мяне пра допісы @{name}",
|
||||
"account.endorse": "Паказваць у профілі",
|
||||
"account.familiar_followers_many": "Мае сярод падпісчыкаў {name1}, {name2}, і {othersCount, plural, one {яшчэ # чалавека, знаёмага вам} few {яшчэ # чалавекі, знаёмыя вам} many {яшчэ # чалавек, знаёмых вам} other {яшчэ # чалавекі, знаёмыя вам}}",
|
||||
"account.familiar_followers_one": "Мае сярод падпісчыкаў {name1}",
|
||||
"account.familiar_followers_two": "Мае сярод падпісчыкаў {name1} і {name2}",
|
||||
"account.featured": "Рэкамендаванае",
|
||||
"account.featured.accounts": "Профілі",
|
||||
"account.featured.hashtags": "Хэштэгі",
|
||||
"account.featured_tags.last_status_at": "Апошні допіс ад {date}",
|
||||
"account.featured_tags.last_status_never": "Няма допісаў",
|
||||
"account.follow": "Падпісацца",
|
||||
|
@ -33,9 +43,11 @@
|
|||
"account.followers": "Падпісчыкі",
|
||||
"account.followers.empty": "Ніхто пакуль не падпісаны на гэтага карыстальніка.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} падпісчык} few {{counter} падпісчыкі} many {{counter} падпісчыкаў} other {{counter} падпісчыка}}",
|
||||
"account.followers_you_know_counter": "{count, one {{counter}, знаёмы вам} other {{counter}, знаёмых вам}}",
|
||||
"account.following": "Падпіскі",
|
||||
"account.following_counter": "{count, plural, one {{counter} падпіска} few {{counter} падпіскі} many {{counter} падпісак} other {{counter} падпіскі}}",
|
||||
"account.follows.empty": "Карыстальнік ні на каго не падпісаны.",
|
||||
"account.follows_you": "Падпісаны на вас",
|
||||
"account.go_to_profile": "Перайсці да профілю",
|
||||
"account.hide_reblogs": "Схаваць пашырэнні ад @{name}",
|
||||
"account.in_memoriam": "У памяць.",
|
||||
|
@ -50,18 +62,22 @@
|
|||
"account.mute_notifications_short": "Не апавяшчаць",
|
||||
"account.mute_short": "Ігнараваць",
|
||||
"account.muted": "Ігнаруецца",
|
||||
"account.mutual": "Вы падпісаны адно на аднаго",
|
||||
"account.no_bio": "Апісанне адсутнічае.",
|
||||
"account.open_original_page": "Адкрыць арыгінальную старонку",
|
||||
"account.posts": "Допісы",
|
||||
"account.posts_with_replies": "Допісы і адказы",
|
||||
"account.remove_from_followers": "Выдаліць карыстальніка {name} з падпісчыкаў",
|
||||
"account.report": "Паскардзіцца на @{name}",
|
||||
"account.requested": "Чакаецца ўхваленне. Націсніце, каб скасаваць запыт на падпіску",
|
||||
"account.requested_follow": "{name} адправіў запыт на падпіску",
|
||||
"account.requests_to_follow_you": "Хоча падпісацца на вас",
|
||||
"account.share": "Абагуліць профіль @{name}",
|
||||
"account.show_reblogs": "Паказаць падштурхоўванні ад @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
||||
"account.unblock": "Разблакіраваць @{name}",
|
||||
"account.unblock_domain": "Разблакіраваць дамен {domain}",
|
||||
"account.unblock_domain_short": "Разблакіраваць",
|
||||
"account.unblock_short": "Разблакіраваць",
|
||||
"account.unendorse": "Не паказваць у профілі",
|
||||
"account.unfollow": "Адпісацца",
|
||||
|
@ -83,26 +99,30 @@
|
|||
"alert.unexpected.message": "Узнікла нечаканая памылка.",
|
||||
"alert.unexpected.title": "Вой!",
|
||||
"alt_text_badge.title": "Альтэрнатыўны тэкст",
|
||||
"alt_text_modal.add_alt_text": "Дадаць альтэрнатыўны тэкст",
|
||||
"alt_text_modal.add_text_from_image": "Дадаць тэкст з відарыса",
|
||||
"alt_text_modal.cancel": "Скасаваць",
|
||||
"alt_text_modal.change_thumbnail": "Змяніць мініяцюру",
|
||||
"alt_text_modal.done": "Гатова",
|
||||
"announcement.announcement": "Аб'ява",
|
||||
"annual_report.summary.archetype.booster": "Трэнда-сьледнік",
|
||||
"annual_report.summary.archetype.booster": "Паляўнічы на трэнды",
|
||||
"annual_report.summary.archetype.lurker": "Назіральнік",
|
||||
"annual_report.summary.archetype.oracle": "Аракул",
|
||||
"annual_report.summary.archetype.pollster": "Апытвальнік",
|
||||
"annual_report.summary.archetype.replier": "Душа кампанійі",
|
||||
"annual_report.summary.followers.followers": "падпісанты",
|
||||
"annual_report.summary.followers.total": "Усяго {count}",
|
||||
"annual_report.summary.here_it_is": "Вось вашыя вынікі {year} году:",
|
||||
"annual_report.summary.archetype.replier": "Душа кампаніі",
|
||||
"annual_report.summary.followers.followers": "падпісчыкі",
|
||||
"annual_report.summary.followers.total": "Агулам {count}",
|
||||
"annual_report.summary.here_it_is": "Вось вашы вынікі {year} за год:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "самы ўпадабаны допіс",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "самы пашыраны допіс",
|
||||
"annual_report.summary.highlighted_post.by_replies": "самы каментаваны допіс",
|
||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||
"annual_report.summary.most_used_app.most_used_app": "самая выкарыстоўваная аплікацыя",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "самы выкарыстоўваны гэштаґ",
|
||||
"annual_report.summary.most_used_app.most_used_app": "праграма, якой карысталіся часцей",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "хэштэг, якім карысталіся часцей",
|
||||
"annual_report.summary.most_used_hashtag.none": "Няма",
|
||||
"annual_report.summary.new_posts.new_posts": "новыя допісы",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Мэта месьціць вас у топ</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Мы ня скажам аб гэтым Сіняпальцаму.",
|
||||
"annual_report.summary.percentile.text": "<topLabel>З-за гэтага, вы знаходзіцеся ў топе</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "КДБ пра гэта не даведаецца.",
|
||||
"annual_report.summary.thanks": "Дзякуй за ўдзел у Mastodon!",
|
||||
"attachments_list.unprocessed": "(неапрацаваны)",
|
||||
"audio.hide": "Схаваць аўдыя",
|
||||
|
@ -127,7 +147,7 @@
|
|||
"bundle_column_error.routing.body": "Запытаная старонка не знойдзена. Вы ўпэўнены, што URL у адрасным радку правільны?",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "Закрыць",
|
||||
"bundle_modal_error.message": "Падчас загрузкі гэтага экрана штосьці пайшло ня так.",
|
||||
"bundle_modal_error.message": "Падчас загрузкі гэтага экрана штосьці пайшло не так.",
|
||||
"bundle_modal_error.retry": "Паспрабуйце зноў",
|
||||
"closed_registrations.other_server_instructions": "Паколькі Mastodon дэцэнтралізаваны, вы можаце стварыць уліковы запіс на іншым серверы і працягваць узаемадзейнічаць з ім.",
|
||||
"closed_registrations_modal.description": "Стварэнне ўліковага запісу на {domain} цяпер немагчыма. Заўважце, што няма неабходнасці мець уліковы запіс менавіта на {domain}, каб выкарыстоўваць Mastodon.",
|
||||
|
@ -147,7 +167,7 @@
|
|||
"column.firehose": "Стужкі",
|
||||
"column.follow_requests": "Запыты на падпіску",
|
||||
"column.home": "Галоўная",
|
||||
"column.list_members": "Кіраванне ўдзельнікамі спісу",
|
||||
"column.list_members": "Кіраванне ўдзельнікамі спіса",
|
||||
"column.lists": "Спісы",
|
||||
"column.mutes": "Ігнараваныя карыстальнікі",
|
||||
"column.notifications": "Апавяшчэнні",
|
||||
|
@ -196,25 +216,24 @@
|
|||
"confirmations.delete_list.confirm": "Выдаліць",
|
||||
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?",
|
||||
"confirmations.delete_list.title": "Выдаліць спіс?",
|
||||
"confirmations.discard_draft.edit.cancel": "Працягнуць рэдагаванне",
|
||||
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
||||
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
||||
"confirmations.edit.confirm": "Рэдагаваць",
|
||||
"confirmations.edit.message": "Калі вы зменіце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
|
||||
"confirmations.edit.title": "Замяніць допіс?",
|
||||
"confirmations.follow_to_list.confirm": "Падпісацца й дадаць у сьпіс",
|
||||
"confirmations.follow_to_list.message": "Вы мусіце быць падпісаныя на {name} каб дадаць яго ў сьпіс.",
|
||||
"confirmations.follow_to_list.confirm": "Падпісацца і дадаць у спіс",
|
||||
"confirmations.follow_to_list.message": "Вам трэба падпісацца на карыстальніка {name}, каб дадаць яго ў спіс.",
|
||||
"confirmations.follow_to_list.title": "Падпісацца на карыстальніка?",
|
||||
"confirmations.logout.confirm": "Выйсці",
|
||||
"confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?",
|
||||
"confirmations.logout.title": "Выйсці?",
|
||||
"confirmations.missing_alt_text.title": "Дадаць апісаньне?",
|
||||
"confirmations.missing_alt_text.confirm": "Дадаць альтэрнатыўны тэкст",
|
||||
"confirmations.missing_alt_text.secondary": "Усё адно апублікаваць",
|
||||
"confirmations.missing_alt_text.title": "Дадаць альтэрнатыўны тэкст?",
|
||||
"confirmations.mute.confirm": "Ігнараваць",
|
||||
"confirmations.redraft.confirm": "Выдаліць і перапісаць",
|
||||
"confirmations.redraft.message": "Вы ўпэўнены, што хочаце выдаліць допіс і перапісаць яго? Упадабанні і пашырэнні згубяцца, а адказы да арыгінальнага допісу асірацеюць.",
|
||||
"confirmations.redraft.title": "Выдаліць і перапісаць допіс?",
|
||||
"confirmations.reply.confirm": "Адказаць",
|
||||
"confirmations.reply.message": "Калі вы адкажаце зараз, гэта ператрэ паведамленне, якое вы пішаце. Вы ўпэўнены, што хочаце працягнуць?",
|
||||
"confirmations.reply.title": "Замяніць допіс?",
|
||||
"confirmations.remove_from_followers.confirm": "Выдаліць падпісчыка",
|
||||
"confirmations.remove_from_followers.title": "Выдаліць падпісчыка?",
|
||||
"confirmations.unfollow.confirm": "Адпісацца",
|
||||
"confirmations.unfollow.message": "Вы ўпэўненыя, што хочаце адпісацца ад {name}?",
|
||||
"confirmations.unfollow.title": "Адпісацца ад карыстальніка?",
|
||||
|
@ -227,7 +246,7 @@
|
|||
"conversation.with": "З {names}",
|
||||
"copy_icon_button.copied": "Скапіявана ў буфер абмену",
|
||||
"copypaste.copied": "Скапіравана",
|
||||
"copypaste.copy_to_clipboard": "Капіраваць у буфер абмену",
|
||||
"copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену",
|
||||
"directory.federated": "З вядомага федэсвету",
|
||||
"directory.local": "Толькі з {domain}",
|
||||
"directory.new_arrivals": "Новыя карыстальнікі",
|
||||
|
@ -236,7 +255,7 @@
|
|||
"disabled_account_banner.text": "Ваш уліковы запіс {disabledAccount} часова адключаны.",
|
||||
"dismissable_banner.community_timeline": "Гэта самыя апошнія допісы ад людзей, уліковыя запісы якіх размяшчаюцца на {domain}.",
|
||||
"dismissable_banner.dismiss": "Адхіліць",
|
||||
"dismissable_banner.public_timeline": "Гэта самыя новыя публічныя допісы ад карыстальнікаў фэдывёрсу на якіх падпісаныя карыстальнікі {domain}.",
|
||||
"dismissable_banner.public_timeline": "Вось апошнія публічныя допісы ад карыстальнікаў fediverse на якіх падпісаны карыстальнікі {domain}.",
|
||||
"domain_block_modal.block": "Заблакіраваць сервер",
|
||||
"domain_block_modal.block_account_instead": "Заблакіраваць @{name} замест гэтага",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Людзі з гэтага сервера змогуць узаемадзейнічаць з вашымі старымі допісамі.",
|
||||
|
@ -281,15 +300,15 @@
|
|||
"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.follow_requests": "У вас яшчэ няма запытаў на падпіску. Калі вы атрымаеце запыт, ён з’явіцца тут.",
|
||||
"empty_column.followed_tags": "Вы пакуль не падпісаны ні на адзін хэштэг. Калі падпішацеся, яны з’явяцца тут.",
|
||||
"empty_column.hashtag": "Па гэтаму хэштэгу пакуль што нічога няма.",
|
||||
"empty_column.home": "Галоўная стужка пустая! Падпішыцеся на іншых людзей, каб запоўніць яе. {suggestions}",
|
||||
"empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены лісту апублікуюць новыя запісы, яны з'явяцца тут.",
|
||||
|
@ -300,13 +319,18 @@
|
|||
"error.unexpected_crash.explanation": "Гэта старонка не можа быць адлюстравана карэктна з-за памылкі ў нашым кодзе, або праблемы з сумяшчальнасцю браўзера.",
|
||||
"error.unexpected_crash.explanation_addons": "Гэтая старонка не можа быць адлюстравана карэктна. Верагодна, гэтая памылка выклікана дадатковым кампанентам браўзера або інструментамі аўтаматычнага перакладу",
|
||||
"error.unexpected_crash.next_steps": "Паспрабуйце абнавіць старонку. Калі гэта не дапаможа, вы можаце паспрабаваць іншы браўзер, альбо выкарыстаць усталяваную праграму.",
|
||||
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і аднавіць старонку. Калі гэта не дапаможа, вы можаце карыстацца Мастадонт праз другі браўзер ці аплікацыю.",
|
||||
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і абнавіць старонку. Калі гэта не дапамагае, вы ўсё яшчэ можаце карыстацца Mastodon праз іншы браўзер ці натыўную праграму.",
|
||||
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
||||
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
||||
"explore.suggested_follows": "Людзі",
|
||||
"explore.title": "Трэндавае",
|
||||
"explore.trending_links": "Навіны",
|
||||
"explore.trending_statuses": "Допісы",
|
||||
"explore.trending_tags": "Хэштэгі",
|
||||
"featured_carousel.next": "Далей",
|
||||
"featured_carousel.post": "Допіс",
|
||||
"featured_carousel.previous": "Назад",
|
||||
"featured_carousel.slide": "{index} з {total}",
|
||||
"filter_modal.added.context_mismatch_explanation": "Гэтая катэгорыя фільтра не прымяняецца да кантэксту, у якім вы адкрылі гэты пост. Калі вы хочаце, каб паведамленне таксама было адфільтравана ў гэтым кантэксце, вам трэба будзе адрэдагаваць фільтр",
|
||||
"filter_modal.added.context_mismatch_title": "Неадпаведны кантэкст!",
|
||||
"filter_modal.added.expired_explanation": "Тэрмін дзеяння гэтай катэгорыі фільтраў скончыўся, вам трэба будзе змяніць дату заканчэння тэрміну дзеяння, каб яна прымянялася",
|
||||
|
@ -355,10 +379,10 @@
|
|||
"footer.privacy_policy": "Палітыка прыватнасці",
|
||||
"footer.source_code": "Прагледзець зыходны код",
|
||||
"footer.status": "Статус",
|
||||
"footer.terms_of_service": "Умовы абслугоўваньня",
|
||||
"footer.terms_of_service": "Умовы выкарыстання",
|
||||
"generic.saved": "Захавана",
|
||||
"getting_started.heading": "Пачатак працы",
|
||||
"hashtag.admin_moderation": "Адкрыць інтэрфэйс мадаратара для #{name}",
|
||||
"hashtag.admin_moderation": "Адкрыць інтэрфейс мадэратара для #{name}",
|
||||
"hashtag.column_header.tag_mode.all": "і {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "або {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "без {additional}",
|
||||
|
@ -380,35 +404,39 @@
|
|||
"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_quotes": "Паказаць цытаты",
|
||||
"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.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.private_mentions_title": "Ігнараваць апавяшчэнні пра непажаданыя асабістыя згадванні?",
|
||||
"info_button.label": "Даведка",
|
||||
"interaction_modal.action.favourite": "Каб працягнуць, вы мусіце ўпадабаць з вашага ўліковага запісу.",
|
||||
"interaction_modal.action.follow": "Каб працягнуць, вы мусіце падпісацца з вашага ўліковага запісу.",
|
||||
"interaction_modal.action.favourite": "Каб працягнуць, вы мусіце ўпадабаць нешта са свайго ўліковага запісу.",
|
||||
"interaction_modal.action.follow": "Каб працягнуць, вы мусіце падпісацца на некага са свайго ўліковага запісу.",
|
||||
"interaction_modal.go": "Перайсці",
|
||||
"interaction_modal.no_account_yet": "Не маеце ўліковага запісу?",
|
||||
"interaction_modal.on_another_server": "На іншым серверы",
|
||||
"interaction_modal.on_this_server": "На гэтым серверы",
|
||||
"interaction_modal.title.favourite": "Упадабаць допіс {name}",
|
||||
"interaction_modal.title.follow": "Падпісацца на {name}",
|
||||
"interaction_modal.title.reblog": "Пашырыць допіс ад {name}",
|
||||
"interaction_modal.title.reply": "Адказаць на допіс {name}",
|
||||
"interaction_modal.username_prompt": "Напр., {example}",
|
||||
"intervals.full.days": "{number, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}}",
|
||||
"intervals.full.hours": "{number, plural, one {# гадзіна} few {# гадзіны} many {# гадзін} other {# гадзіны}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# хвіліна} few {# хвіліны} many {# хвілін} other {# хвіліны}}",
|
||||
|
@ -444,21 +472,32 @@
|
|||
"keyboard_shortcuts.toggle_hidden": "Паказаць/схаваць тэкст за папярэджаннем пра кантэнт",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Паказаць/схаваць медыя",
|
||||
"keyboard_shortcuts.toot": "Стварыць новы допіс",
|
||||
"keyboard_shortcuts.translate": "каб перакласці допіс",
|
||||
"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": "Гэты профіль быў схаваны мадэратарамі",
|
||||
"link_preview.author": "Ад {name}",
|
||||
"link_preview.more_from_author": "Больш ад {name}",
|
||||
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
||||
"lists.add_member": "Дадаць",
|
||||
"lists.add_to_list": "Дадаць у спіс",
|
||||
"lists.add_to_lists": "Дадаць {name} у спісы",
|
||||
"lists.create": "Стварыць",
|
||||
"lists.create_list": "Стварыць спіс",
|
||||
"lists.delete": "Выдаліць спіс",
|
||||
"lists.done": "Гатова",
|
||||
"lists.edit": "Рэдагаваць спіс",
|
||||
"lists.list_name": "Назва спіса",
|
||||
"lists.new_list_name": "Назва новага спіса",
|
||||
"lists.no_lists_yet": "Пакуль няма спісаў.",
|
||||
"lists.no_members_yet": "Пакуль няма ўдзельнікаў.",
|
||||
"lists.no_results_found": "Нічога не знойдзена.",
|
||||
"lists.remove_member": "Выдаліць",
|
||||
"lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся",
|
||||
"lists.replies_policy.list": "Удзельнікі гэтага спісу",
|
||||
|
@ -466,7 +505,7 @@
|
|||
"lists.save": "Захаваць",
|
||||
"lists.search": "Пошук",
|
||||
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
|
||||
"loading_indicator.label": "Загрузка…",
|
||||
"loading_indicator.label": "Ідзе загрузка…",
|
||||
"media_gallery.hide": "Схаваць",
|
||||
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
|
||||
"mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў",
|
||||
|
@ -479,7 +518,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць вашыя паведамленні, але вы не будзеце паведамленні карыстальніка.",
|
||||
"navigation_bar.about": "Пра нас",
|
||||
"navigation_bar.account_settings": "Пароль і бяспека",
|
||||
"navigation_bar.administration": "Адміністрацыя",
|
||||
"navigation_bar.advanced_interface": "Адкрыць у пашыраным вэб-інтэрфейсе",
|
||||
"navigation_bar.automated_deletion": "Аўтаматычнае выдаленне допісаў",
|
||||
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
|
||||
"navigation_bar.bookmarks": "Закладкі",
|
||||
"navigation_bar.direct": "Асабістыя згадванні",
|
||||
|
@ -489,13 +531,21 @@
|
|||
"navigation_bar.follow_requests": "Запыты на падпіску",
|
||||
"navigation_bar.followed_tags": "Падпіскі",
|
||||
"navigation_bar.follows_and_followers": "Падпіскі і падпісчыкі",
|
||||
"navigation_bar.import_export": "Імпарт і экспарт",
|
||||
"navigation_bar.lists": "Спісы",
|
||||
"navigation_bar.live_feed_local": "Жывая стужка (лакальная)",
|
||||
"navigation_bar.live_feed_public": "Жывая стужка (публічная)",
|
||||
"navigation_bar.logout": "Выйсці",
|
||||
"navigation_bar.moderation": "Мадэрацыя",
|
||||
"navigation_bar.more": "Больш",
|
||||
"navigation_bar.mutes": "Ігнараваныя карыстальнікі",
|
||||
"navigation_bar.opened_in_classic_interface": "Допісы, уліковыя запісы і іншыя спецыфічныя старонкі па змоўчанні адчыняюцца ў класічным вэб-інтэрфейсе.",
|
||||
"navigation_bar.preferences": "Налады",
|
||||
"navigation_bar.privacy_and_reach": "Прыватнасць і пошук",
|
||||
"navigation_bar.search": "Пошук",
|
||||
"navigation_bar.search_trends": "Пошук / Трэндавае",
|
||||
"navigation_panel.collapse_followed_tags": "Згарнуць меню падпісак на хэштэгі",
|
||||
"navigation_panel.collapse_lists": "Згарнуць меню спісаў",
|
||||
"not_signed_in_indicator.not_signed_in": "Вам трэба ўвайсці каб атрымаць доступ да гэтага рэсурсу.",
|
||||
"notification.admin.report": "{name} паскардзіўся на {target}",
|
||||
"notification.admin.report_account": "{name} паскардзіўся на {count, plural, one {# допіс} many {# допісаў} other {# допіса}} ад {target} з прычыны {category}",
|
||||
|
@ -503,7 +553,10 @@
|
|||
"notification.admin.report_statuses": "{name} паскардзіўся на {target} з прычыны {category}",
|
||||
"notification.admin.report_statuses_other": "{name} паскардзіўся на {target}",
|
||||
"notification.admin.sign_up": "{name} зарэгістраваўся",
|
||||
"notification.annual_report.view": "Перайсці да #Wrapstodon",
|
||||
"notification.favourite": "Ваш допіс упадабаны {name}",
|
||||
"notification.favourite_pm": "Ваша асабістае згадванне ўпадабана {name}",
|
||||
"notification.favourite_pm.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы} few {# іншыя} many {# іншых} other {# іншых}}</a> ўпадабалі ваша асабістае згадванне",
|
||||
"notification.follow": "{name} падпісаўся на вас",
|
||||
"notification.follow_request": "{name} адправіў запыт на падпіску",
|
||||
"notification.follow_request.name_and_others": "{name} і {count, plural, one {# іншы} many {# іншых} other {# іншых}} запыталіся падпісацца на вас",
|
||||
|
@ -514,7 +567,7 @@
|
|||
"notification.mention": "Згадванне",
|
||||
"notification.mentioned_you": "{name} згадаў вас",
|
||||
"notification.moderation-warning.learn_more": "Даведацца больш",
|
||||
"notification.moderation_warning": "Вы атрымалі папярэджанне аб мадэрацыі",
|
||||
"notification.moderation_warning": "Вы атрымалі папярэджанне ад мадэратараў",
|
||||
"notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.",
|
||||
"notification.moderation_warning.action_disable": "Ваш уліковы запіс быў адключаны.",
|
||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як далікатныя.",
|
||||
|
@ -545,7 +598,7 @@
|
|||
"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": "Новыя ўваходы:",
|
||||
|
@ -555,7 +608,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-апавяшчэнні",
|
||||
|
@ -577,13 +630,13 @@
|
|||
"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.filter": "Фільтраваць",
|
||||
"notifications.policy.filter_limited_accounts_title": "Абмежаваныя ўліковыя запісы",
|
||||
"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 {# дня}}",
|
||||
|
@ -600,13 +653,13 @@
|
|||
"onboarding.follows.done": "Гатова",
|
||||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
||||
"onboarding.follows.search": "Пошук",
|
||||
"onboarding.follows.title": "Падпішыцеся каб пачаць",
|
||||
"onboarding.follows.title": "Падпішыцеся на некага, каб пачаць",
|
||||
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
||||
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||
"onboarding.profile.display_name": "Бачнае імя",
|
||||
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
||||
"onboarding.profile.note": "Біяграфія",
|
||||
"onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||
"onboarding.profile.note_hint": "Вы можаце @згадваць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||
"onboarding.profile.save_and_continue": "Захаваць і працягнуць",
|
||||
"onboarding.profile.title": "Налады профілю",
|
||||
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
||||
|
@ -626,6 +679,7 @@
|
|||
"poll_button.remove_poll": "Выдаліць апытанне",
|
||||
"privacy.change": "Змяніць прыватнасць допісу",
|
||||
"privacy.direct.long": "Усе згаданыя ў допісе",
|
||||
"privacy.direct.short": "Асабістае згадванне",
|
||||
"privacy.private.long": "Толькі вашыя падпісчыкі",
|
||||
"privacy.private.short": "Падпісчыкі",
|
||||
"privacy.public.long": "Усе, хто ёсць і каго няма ў Mastodon",
|
||||
|
@ -635,10 +689,10 @@
|
|||
"privacy.unlisted.short": "Ціхі публічны",
|
||||
"privacy_policy.last_updated": "Адноўлена {date}",
|
||||
"privacy_policy.title": "Палітыка канфідэнцыйнасці",
|
||||
"recommended": "Рэкамендуем",
|
||||
"recommended": "Рэкамендаванае",
|
||||
"refresh": "Абнавiць",
|
||||
"regeneration_indicator.please_stand_by": "Калі ласка, пачакайце.",
|
||||
"regeneration_indicator.preparing_your_home_feed": "Рыхтуем вашую стужку…",
|
||||
"regeneration_indicator.please_stand_by": "Пачакайце.",
|
||||
"regeneration_indicator.preparing_your_home_feed": "Рыхтуем вашу галоўную стужку…",
|
||||
"relative_time.days": "{number} д",
|
||||
"relative_time.full.days": "{number, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}} таму",
|
||||
"relative_time.full.hours": "{number, plural, one {# гадзіна} few {# гадзіны} many {# гадзін} other {# гадзіны}} таму",
|
||||
|
@ -655,7 +709,7 @@
|
|||
"reply_indicator.poll": "Апытанне",
|
||||
"report.block": "Заблакіраваць",
|
||||
"report.block_explanation": "Вы перастанеце бачыць допісы гэтага карыстальніка. Ён не зможа сачыць за вамі і бачыць вашы допісы. Ён зможа зразумець, што яго заблакіравалі.",
|
||||
"report.categories.legal": "Права",
|
||||
"report.categories.legal": "Звязанае з правам",
|
||||
"report.categories.other": "Іншае",
|
||||
"report.categories.spam": "Спам",
|
||||
"report.categories.violation": "Змест парушае адно ці некалькі правілаў сервера",
|
||||
|
@ -722,8 +776,8 @@
|
|||
"search_results.accounts": "Профілі",
|
||||
"search_results.all": "Усё",
|
||||
"search_results.hashtags": "Хэштэгі",
|
||||
"search_results.no_results": "Анічога ня знойдзена.",
|
||||
"search_results.no_search_yet": "Паспрабуйце пашукаць допісы, профілі або гэштаґі.",
|
||||
"search_results.no_results": "Няма вынікаў.",
|
||||
"search_results.no_search_yet": "Паспрабуйце пашукаць допісы, профілі або хэштэгі.",
|
||||
"search_results.see_all": "Праглядзець усе",
|
||||
"search_results.statuses": "Допісы",
|
||||
"search_results.title": "Шукаць \"{q}\"",
|
||||
|
@ -744,7 +798,7 @@
|
|||
"status.bookmark": "Дадаць закладку",
|
||||
"status.cancel_reblog_private": "Прыбраць",
|
||||
"status.cannot_reblog": "Гэты пост нельга пашырыць",
|
||||
"status.continued_thread": "Працяг тэмы",
|
||||
"status.continued_thread": "Працяг ланцужка",
|
||||
"status.copy": "Скапіраваць спасылку на допіс",
|
||||
"status.delete": "Выдаліць",
|
||||
"status.detailed_status": "Дэтальны агляд размовы",
|
||||
|
@ -769,6 +823,7 @@
|
|||
"status.mute_conversation": "Ігнараваць размову",
|
||||
"status.open": "Разгарнуць гэты допіс",
|
||||
"status.pin": "Замацаваць у профілі",
|
||||
"status.quote_post_author": "Допіс карыстальніка @{name}",
|
||||
"status.read_more": "Чытаць болей",
|
||||
"status.reblog": "Пашырыць",
|
||||
"status.reblog_private": "Пашырыць з першапачатковай бачнасцю",
|
||||
|
@ -777,7 +832,7 @@
|
|||
"status.reblogs.empty": "Гэты допіс яшчэ ніхто не пашырыў. Калі гэта адбудзецца, гэтых людзей будзе бачна тут.",
|
||||
"status.redraft": "Выдаліць і паправіць",
|
||||
"status.remove_bookmark": "Выдаліць закладку",
|
||||
"status.replied_in_thread": "Адказаў у тэме",
|
||||
"status.replied_in_thread": "Адказаў у ланцужку",
|
||||
"status.replied_to": "Адказаў {name}",
|
||||
"status.reply": "Адказаць",
|
||||
"status.replyAll": "Адказаць у ланцугу",
|
||||
|
@ -797,8 +852,11 @@
|
|||
"subscribed_languages.save": "Захаваць змены",
|
||||
"subscribed_languages.target": "Змяніць мовы падпіскі для {target}",
|
||||
"tabs_bar.home": "Галоўная",
|
||||
"tabs_bar.menu": "Меню",
|
||||
"tabs_bar.notifications": "Апавяшчэнні",
|
||||
"terms_of_service.title": "Умовы абслугоўваньня",
|
||||
"tabs_bar.publish": "Новы допіс",
|
||||
"tabs_bar.search": "Пошук",
|
||||
"terms_of_service.title": "Умовы выкарыстання",
|
||||
"time_remaining.days": "{number, plural, one {застаўся # дзень} few {засталося # дні} many {засталося # дзён} other {засталося # дня}}",
|
||||
"time_remaining.hours": "{number, plural, one {засталася # гадзіна} few {засталося # гадзіны} many {засталося # гадзін} other {засталося # гадзіны}}",
|
||||
"time_remaining.minutes": "{number, plural, one {засталася # хвіліна} few {засталося # хвіліны} many {засталося # хвілін} other {засталося # хвіліны}}",
|
||||
|
@ -824,6 +882,12 @@
|
|||
"video.expand": "Разгарнуць відэа",
|
||||
"video.fullscreen": "Увесь экран",
|
||||
"video.hide": "Схаваць відэа",
|
||||
"video.mute": "Выключыць гук",
|
||||
"video.pause": "Паўза",
|
||||
"video.play": "Прайграць"
|
||||
"video.play": "Прайграць",
|
||||
"video.skip_backward": "Праматаць назад",
|
||||
"video.skip_forward": "Праматаць уперад",
|
||||
"video.unmute": "Уключыць гук",
|
||||
"video.volume_down": "Паменшыць гучнасць",
|
||||
"video.volume_up": "Павялічыць гучнасць"
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"about.domain_blocks.silenced.title": "Ограничено",
|
||||
"about.domain_blocks.suspended.explanation": "Никакви данни от този сървър няма да се обработват, съхраняват или обменят, правещи невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри.",
|
||||
"about.domain_blocks.suspended.title": "Спряно",
|
||||
"about.language_label": "Език",
|
||||
"about.not_available": "Тази информация не е публична на този сървър.",
|
||||
"about.powered_by": "Децентрализирана социална мрежа, захранвана от {mastodon}",
|
||||
"about.rules": "Правила на сървъра",
|
||||
|
@ -28,6 +29,7 @@
|
|||
"account.edit_profile": "Редактиране на профила",
|
||||
"account.enable_notifications": "Известяване при публикуване от @{name}",
|
||||
"account.endorse": "Представи в профила",
|
||||
"account.familiar_followers_many": "Последвано от {name1}, {name2}, и {othersCount, plural, one {един друг, когото познавате} other {# други, които познавате}}",
|
||||
"account.familiar_followers_one": "Последвано от {name1}",
|
||||
"account.familiar_followers_two": "Последвано от {name1} и {name2}",
|
||||
"account.featured": "Препоръчано",
|
||||
|
@ -40,6 +42,7 @@
|
|||
"account.followers": "Последователи",
|
||||
"account.followers.empty": "Още никой не следва потребителя.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
|
||||
"account.followers_you_know_counter": "{counter} познавате",
|
||||
"account.following": "Последвано",
|
||||
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
|
||||
"account.follows.empty": "Потребителят още никого не следва.",
|
||||
|
@ -185,7 +188,7 @@
|
|||
"community.column_settings.remote_only": "Само отдалечено",
|
||||
"compose.language.change": "Смяна на езика",
|
||||
"compose.language.search": "Търсене на езици...",
|
||||
"compose.published.body": "Публикувана публикация.",
|
||||
"compose.published.body": "Публикувано.",
|
||||
"compose.published.open": "Отваряне",
|
||||
"compose.saved.body": "Запазена публикация.",
|
||||
"compose_form.direct_message_warning_learn_more": "Още информация",
|
||||
|
@ -215,11 +218,15 @@
|
|||
"confirmations.delete_list.confirm": "Изтриване",
|
||||
"confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги списъка?",
|
||||
"confirmations.delete_list.title": "Изтривате ли списъка?",
|
||||
"confirmations.discard_draft.confirm": "Изхвърляне и продължаване",
|
||||
"confirmations.discard_draft.edit.cancel": "Възобновяване на редактиране",
|
||||
"confirmations.discard_draft.edit.message": "Продължаването ще изхвърли всякакви промени, които сте правили в публикацията, която сега редактирате.",
|
||||
"confirmations.discard_draft.edit.title": "Изхвърляте ли промените в публикацията си?",
|
||||
"confirmations.discard_draft.post.cancel": "Възстановка на чернова",
|
||||
"confirmations.discard_draft.post.message": "Продължаването ще изхвърли публикацията, която сега съставяте.",
|
||||
"confirmations.discard_draft.post.title": "Изхвърляте ли черновата си публикация?",
|
||||
"confirmations.discard_edit_media.confirm": "Отхвърляне",
|
||||
"confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?",
|
||||
"confirmations.edit.confirm": "Редактиране",
|
||||
"confirmations.edit.message": "Редактирането сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
|
||||
"confirmations.edit.title": "Презаписвате ли публикацията?",
|
||||
"confirmations.follow_to_list.confirm": "Последване и добавяне в списък",
|
||||
"confirmations.follow_to_list.message": "Трябва да последвате {name}, за да добавите лицето към списък.",
|
||||
"confirmations.follow_to_list.title": "Последвате ли потребителя?",
|
||||
|
@ -237,9 +244,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Премахване на последовател",
|
||||
"confirmations.remove_from_followers.message": "{name} ще спре да ви следва. Наистина ли искате да продължите?",
|
||||
"confirmations.remove_from_followers.title": "Премахвате ли последовател?",
|
||||
"confirmations.reply.confirm": "Отговор",
|
||||
"confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
|
||||
"confirmations.reply.title": "Презаписвате ли публикацията?",
|
||||
"confirmations.unfollow.confirm": "Без следване",
|
||||
"confirmations.unfollow.message": "Наистина ли искате вече да не следвате {name}?",
|
||||
"confirmations.unfollow.title": "Спирате ли да следвате потребителя?",
|
||||
|
@ -330,9 +334,15 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Копиране на трасето на стека в буферната памет",
|
||||
"errors.unexpected_crash.report_issue": "Сигнал за проблем",
|
||||
"explore.suggested_follows": "Хора",
|
||||
"explore.title": "Вървежно",
|
||||
"explore.trending_links": "Новини",
|
||||
"explore.trending_statuses": "Публикации",
|
||||
"explore.trending_tags": "Хаштагове",
|
||||
"featured_carousel.header": "{count, plural, one {закачена публикация} other {закачени публикации}}",
|
||||
"featured_carousel.next": "Напред",
|
||||
"featured_carousel.post": "Публикация",
|
||||
"featured_carousel.previous": "Назад",
|
||||
"featured_carousel.slide": "{index} от {total}",
|
||||
"filter_modal.added.context_mismatch_explanation": "Тази категория филтър не е приложима към контекста, в който достъпвате тази публикация. Ако желаете да филтрирате публикациите в този контекст, трябва да изберете друг филтър.",
|
||||
"filter_modal.added.context_mismatch_title": "Несъвпадащ контекст!",
|
||||
"filter_modal.added.expired_explanation": "Валидността на тази категория филтър е изтекла. Сменете срока на валидност, за да я приложите.",
|
||||
|
@ -411,6 +421,7 @@
|
|||
"hints.profiles.see_more_posts": "Преглед на още публикации на {domain}",
|
||||
"hints.threads.replies_may_be_missing": "Отговори от други сървъри може да липсват.",
|
||||
"hints.threads.see_more": "Преглед на още отговори на {domain}",
|
||||
"home.column_settings.show_quotes": "Показване на цитираното",
|
||||
"home.column_settings.show_reblogs": "Показване на подсилванията",
|
||||
"home.column_settings.show_replies": "Показване на отговорите",
|
||||
"home.hide_announcements": "Скриване на оповестяванията",
|
||||
|
@ -533,8 +544,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "Няма да виждате споменаващите ги публикации.",
|
||||
"mute_modal.you_wont_see_posts": "Още могат да виждат публикациите ви, но вие техните не.",
|
||||
"navigation_bar.about": "Относно",
|
||||
"navigation_bar.account_settings": "Парола и сигурност",
|
||||
"navigation_bar.administration": "Администрация",
|
||||
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
||||
"navigation_bar.automated_deletion": "Автоматично изтриване на публикации",
|
||||
"navigation_bar.blocks": "Блокирани потребители",
|
||||
"navigation_bar.bookmarks": "Отметки",
|
||||
"navigation_bar.direct": "Частни споменавания",
|
||||
|
@ -544,13 +557,17 @@
|
|||
"navigation_bar.follow_requests": "Заявки за последване",
|
||||
"navigation_bar.followed_tags": "Последвани хаштагове",
|
||||
"navigation_bar.follows_and_followers": "Последвания и последователи",
|
||||
"navigation_bar.import_export": "Внасяне и изнасяне",
|
||||
"navigation_bar.lists": "Списъци",
|
||||
"navigation_bar.logout": "Излизане",
|
||||
"navigation_bar.moderation": "Модериране",
|
||||
"navigation_bar.more": "Още",
|
||||
"navigation_bar.mutes": "Заглушени потребители",
|
||||
"navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.",
|
||||
"navigation_bar.preferences": "Предпочитания",
|
||||
"navigation_bar.privacy_and_reach": "Поверителност и обхват",
|
||||
"navigation_bar.search": "Търсене",
|
||||
"navigation_bar.search_trends": "Търсене / Вървежно",
|
||||
"not_signed_in_indicator.not_signed_in": "Трябва ви вход за достъп до ресурса.",
|
||||
"notification.admin.report": "{name} докладва {target}",
|
||||
"notification.admin.report_account": "{name} докладва {count, plural, one {публикация} other {# публикации}} от {target} за {category}",
|
||||
|
@ -777,6 +794,7 @@
|
|||
"report_notification.categories.violation": "Нарушение на правилото",
|
||||
"report_notification.categories.violation_sentence": "нарушение на правило",
|
||||
"report_notification.open": "Отваряне на доклада",
|
||||
"search.clear": "Изчистване на търсенето",
|
||||
"search.no_recent_searches": "Няма скорошни търсения",
|
||||
"search.placeholder": "Търсене",
|
||||
"search.quick_action.account_search": "Съвпадение на профили {x}",
|
||||
|
@ -843,6 +861,13 @@
|
|||
"status.mute_conversation": "Заглушаване на разговора",
|
||||
"status.open": "Разширяване на публикацията",
|
||||
"status.pin": "Закачане в профила",
|
||||
"status.quote_error.filtered": "Скрито поради един от филтрите ви",
|
||||
"status.quote_error.not_found": "Публикацията не може да се показва.",
|
||||
"status.quote_error.pending_approval": "Публикацията чака одобрение от първоначалния автор.",
|
||||
"status.quote_error.rejected": "Публикацията не може да се показва като първоначалния автор не позволява цитирането ѝ.",
|
||||
"status.quote_error.removed": "Публикацията е премахната от автора ѝ.",
|
||||
"status.quote_error.unauthorized": "Публикацията не може да се показва, тъй като не сте упълномощени да я гледате.",
|
||||
"status.quote_post_author": "Публикация от {name}",
|
||||
"status.read_more": "Още за четене",
|
||||
"status.reblog": "Подсилване",
|
||||
"status.reblog_private": "Подсилване с оригиналната видимост",
|
||||
|
@ -872,7 +897,10 @@
|
|||
"subscribed_languages.save": "Запазване на промените",
|
||||
"subscribed_languages.target": "Промяна на абонираните езици за {target}",
|
||||
"tabs_bar.home": "Начало",
|
||||
"tabs_bar.menu": "Меню",
|
||||
"tabs_bar.notifications": "Известия",
|
||||
"tabs_bar.publish": "Нова публикация",
|
||||
"tabs_bar.search": "Търсене",
|
||||
"terms_of_service.effective_as_of": "В сила от {date}",
|
||||
"terms_of_service.title": "Условия на услугата",
|
||||
"terms_of_service.upcoming_changes_on": "Предстоящи промени на {date}",
|
||||
|
|
|
@ -148,14 +148,10 @@
|
|||
"confirmations.delete_list.message": "আপনি কি নিশ্চিত যে আপনি এই তালিকাটি স্থায়িভাবে মুছে ফেলতে চান ?",
|
||||
"confirmations.discard_edit_media.confirm": "বাতিল করো",
|
||||
"confirmations.discard_edit_media.message": "মিডিয়া Description বা Preview তে আপনার আপনার অসংরক্ষিত পরিবর্তন আছে, সেগুলো বাতিল করবেন?",
|
||||
"confirmations.edit.confirm": "সম্পাদন",
|
||||
"confirmations.edit.message": "এখন সম্পাদনা করলে আপনি যে মেসেজ লিখছেন তা overwrite করবে, চালিয়ে যেতে চান?",
|
||||
"confirmations.logout.confirm": "প্রস্থান",
|
||||
"confirmations.logout.message": "আপনি লগ আউট করতে চান?",
|
||||
"confirmations.mute.confirm": "সরিয়ে ফেলুন",
|
||||
"confirmations.redraft.confirm": "মুছে ফেলুন এবং আবার সম্পাদন করুন",
|
||||
"confirmations.reply.confirm": "মতামত",
|
||||
"confirmations.reply.message": "এখন মতামত লিখতে গেলে আপনার এখন যেটা লিখছেন সেটা মুছে যাবে। আপনি নি নিশ্চিত এটা করতে চান ?",
|
||||
"confirmations.unfollow.confirm": "অনুসরণ বন্ধ করো",
|
||||
"confirmations.unfollow.message": "তুমি কি নিশ্চিত {name} কে আর অনুসরণ করতে চাও না?",
|
||||
"conversation.delete": "কথোপকথন মুছে ফেলুন",
|
||||
|
|
|
@ -173,15 +173,11 @@
|
|||
"confirmations.delete_list.title": "Dilemel al listenn?",
|
||||
"confirmations.discard_edit_media.confirm": "Nac'hañ",
|
||||
"confirmations.discard_edit_media.message": "Bez ez eus kemmoù n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullañ anezho evelato?",
|
||||
"confirmations.edit.confirm": "Kemmañ",
|
||||
"confirmations.edit.message": "Kemmañ bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
|
||||
"confirmations.follow_to_list.title": "Heuliañ an implijer·ez?",
|
||||
"confirmations.logout.confirm": "Digevreañ",
|
||||
"confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?",
|
||||
"confirmations.mute.confirm": "Kuzhat",
|
||||
"confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro",
|
||||
"confirmations.reply.confirm": "Respont",
|
||||
"confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
|
||||
"confirmations.unfollow.confirm": "Diheuliañ",
|
||||
"confirmations.unfollow.message": "Ha sur oc'h e fell deoc'h paouez da heuliañ {name} ?",
|
||||
"content_warning.show_more": "Diskouez muioc'h",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Elimina",
|
||||
"confirmations.delete_list.message": "Segur que vols suprimir permanentment aquesta llista?",
|
||||
"confirmations.delete_list.title": "Eliminar la llista?",
|
||||
"confirmations.discard_draft.confirm": "Descarta i continua",
|
||||
"confirmations.discard_draft.edit.cancel": "Continua l'edició",
|
||||
"confirmations.discard_draft.edit.message": "Continuar descartarà tots els canvis que hàgiu fet a la publicació que editeu.",
|
||||
"confirmations.discard_draft.edit.title": "Descartar els canvis a la publicació?",
|
||||
"confirmations.discard_draft.post.cancel": "Reprendre l'esborrany",
|
||||
"confirmations.discard_draft.post.message": "Continuar descartarà la publicació que escriviu.",
|
||||
"confirmations.discard_draft.post.title": "Descartar l'esborrany?",
|
||||
"confirmations.discard_edit_media.confirm": "Descarta",
|
||||
"confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?",
|
||||
"confirmations.edit.confirm": "Edita",
|
||||
"confirmations.edit.message": "Editant ara sobreescriuràs el missatge que estàs editant. Segur que vols continuar?",
|
||||
"confirmations.edit.title": "Sobreescriure la publicació?",
|
||||
"confirmations.follow_to_list.confirm": "Seguir i afegir a una llista",
|
||||
"confirmations.follow_to_list.message": "Cal seguir {name} per a afegir-lo a una llista.",
|
||||
"confirmations.follow_to_list.title": "Seguir l'usuari?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Elimina el seguidor",
|
||||
"confirmations.remove_from_followers.message": "{name} deixarà de seguir-vos. Tirem endavant?",
|
||||
"confirmations.remove_from_followers.title": "Eliminem el seguidor?",
|
||||
"confirmations.reply.confirm": "Respon",
|
||||
"confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?",
|
||||
"confirmations.reply.title": "Sobreescriure la publicació?",
|
||||
"confirmations.unfollow.confirm": "Deixa de seguir",
|
||||
"confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?",
|
||||
"confirmations.unfollow.title": "Deixar de seguir l'usuari?",
|
||||
|
@ -562,6 +563,8 @@
|
|||
"navigation_bar.follows_and_followers": "Seguint i seguidors",
|
||||
"navigation_bar.import_export": "Importació i exportació",
|
||||
"navigation_bar.lists": "Llistes",
|
||||
"navigation_bar.live_feed_local": "Canal en directe (local)",
|
||||
"navigation_bar.live_feed_public": "Canal en directe (públic)",
|
||||
"navigation_bar.logout": "Tanca la sessió",
|
||||
"navigation_bar.moderation": "Moderació",
|
||||
"navigation_bar.more": "Més",
|
||||
|
@ -570,7 +573,10 @@
|
|||
"navigation_bar.preferences": "Preferències",
|
||||
"navigation_bar.privacy_and_reach": "Privacitat i abast",
|
||||
"navigation_bar.search": "Cerca",
|
||||
"navigation_bar.search_trends": "Cerca / En tendència",
|
||||
"navigation_panel.collapse_followed_tags": "Comprimeix el menú d'etiquetes seguides",
|
||||
"navigation_panel.collapse_lists": "Tanca el menú",
|
||||
"navigation_panel.expand_followed_tags": "Expandeix el menú d'etiquetes seguides",
|
||||
"navigation_panel.expand_lists": "Expandeix el menú",
|
||||
"not_signed_in_indicator.not_signed_in": "Cal que iniciïs la sessió per a accedir a aquest recurs.",
|
||||
"notification.admin.report": "{name} ha reportat {target}",
|
||||
|
@ -798,6 +804,7 @@
|
|||
"report_notification.categories.violation": "Violació de norma",
|
||||
"report_notification.categories.violation_sentence": "violació de normes",
|
||||
"report_notification.open": "Obre l'informe",
|
||||
"search.clear": "Esborra la cerca",
|
||||
"search.no_recent_searches": "No hi ha cerques recents",
|
||||
"search.placeholder": "Cerca",
|
||||
"search.quick_action.account_search": "Perfils coincidint amb {x}",
|
||||
|
|
|
@ -155,15 +155,11 @@
|
|||
"confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?",
|
||||
"confirmations.discard_edit_media.confirm": "ڕەتکردنەوە",
|
||||
"confirmations.discard_edit_media.message": "گۆڕانکاریت لە وەسف یان پێشبینی میدیادا هەڵنەگیراوە، بەهەر حاڵ فڕێیان بدە؟",
|
||||
"confirmations.edit.confirm": "دەستکاری",
|
||||
"confirmations.edit.message": "دەستکاری کردنی ئێستا: دەبێتە هۆی نووسینەوەی ئەو پەیامەی، کە ئێستا داتدەڕشت. ئایا دڵنیای، کە دەتەوێت بەردەوام بیت؟",
|
||||
"confirmations.logout.confirm": "چوونە دەرەوە",
|
||||
"confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?",
|
||||
"confirmations.mute.confirm": "بێدەنگ",
|
||||
"confirmations.redraft.confirm": "سڕینەوە & دووبارە ڕەشکردنەوە",
|
||||
"confirmations.redraft.message": "دڵنیای دەتەوێت ئەم پۆستە بسڕیتەوە و دووبارە دایبڕێژیتەوە؟ فەڤۆریت و بووستەکان لەدەست دەچن، وەڵامەکانی پۆستە ئەسڵیەکەش هەتیو دەبن.",
|
||||
"confirmations.reply.confirm": "وەڵام",
|
||||
"confirmations.reply.message": "وەڵامدانەوە ئێستا ئەو نامەیە ی کە تۆ ئێستا دایڕشتووە، دەنووسێتەوە. ئایا دڵنیایت کە دەتەوێت بەردەوام بیت?",
|
||||
"confirmations.unfollow.confirm": "بەدوادانەچو",
|
||||
"confirmations.unfollow.message": "ئایا دڵنیایت لەوەی دەتەوێت پەیڕەوی {name}?",
|
||||
"conversation.delete": "سڕینەوەی گفتوگۆ",
|
||||
|
|
|
@ -87,8 +87,6 @@
|
|||
"confirmations.logout.message": "Site sicuru·a che vulete scunnettà vi?",
|
||||
"confirmations.mute.confirm": "Piattà",
|
||||
"confirmations.redraft.confirm": "Sguassà è riscrive",
|
||||
"confirmations.reply.confirm": "Risponde",
|
||||
"confirmations.reply.message": "Risponde avà sguasserà u missaghju chì scrivite. Site sicuru·a chì vulete cuntinuà?",
|
||||
"confirmations.unfollow.confirm": "Disabbunassi",
|
||||
"confirmations.unfollow.message": "Site sicuru·a ch'ùn vulete più siguità @{name}?",
|
||||
"conversation.delete": "Sguassà a cunversazione",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Smazat",
|
||||
"confirmations.delete_list.message": "Opravdu chcete tento seznam navždy smazat?",
|
||||
"confirmations.delete_list.title": "Smazat seznam?",
|
||||
"confirmations.discard_draft.confirm": "Zahodit a pokračovat",
|
||||
"confirmations.discard_draft.edit.cancel": "Pokračovat v úpravách",
|
||||
"confirmations.discard_draft.edit.message": "Pokračování zruší všechny změny, které jste provedli v příspěvku, který právě upravujete.",
|
||||
"confirmations.discard_draft.edit.title": "Zahodit změny ve vašem příspěvku?",
|
||||
"confirmations.discard_draft.post.cancel": "Obnovit koncept",
|
||||
"confirmations.discard_draft.post.message": "Pokračování zahodíte příspěvek, který právě tvoříte.",
|
||||
"confirmations.discard_draft.post.title": "Zahodit váš koncept příspěvku?",
|
||||
"confirmations.discard_edit_media.confirm": "Zahodit",
|
||||
"confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, chcete je přesto zahodit?",
|
||||
"confirmations.edit.confirm": "Upravit",
|
||||
"confirmations.edit.message": "Editovat teď znamená přepsání zprávy, kterou právě tvoříte. Opravdu chcete pokračovat?",
|
||||
"confirmations.edit.title": "Přepsat příspěvek?",
|
||||
"confirmations.follow_to_list.confirm": "Sledovat a přidat do seznamu",
|
||||
"confirmations.follow_to_list.message": "Musíte {name} sledovat, abyste je přidali do seznamu.",
|
||||
"confirmations.follow_to_list.title": "Sledovat uživatele?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Odstranit sledujícího",
|
||||
"confirmations.remove_from_followers.message": "{name} vás přestane sledovat. Jste si jisti, že chcete pokračovat?",
|
||||
"confirmations.remove_from_followers.title": "Odstranit sledujícího?",
|
||||
"confirmations.reply.confirm": "Odpovědět",
|
||||
"confirmations.reply.message": "Odpověď přepíše vaši rozepsanou zprávu. Opravdu chcete pokračovat?",
|
||||
"confirmations.reply.title": "Přepsat příspěvek?",
|
||||
"confirmations.unfollow.confirm": "Přestat sledovat",
|
||||
"confirmations.unfollow.message": "Opravdu chcete {name} přestat sledovat?",
|
||||
"confirmations.unfollow.title": "Přestat sledovat uživatele?",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Dileu",
|
||||
"confirmations.delete_list.message": "Ydych chi'n siŵr eich bod eisiau dileu'r rhestr hwn am byth?",
|
||||
"confirmations.delete_list.title": "Dileu rhestr?",
|
||||
"confirmations.discard_draft.confirm": "Dileu a pharhau",
|
||||
"confirmations.discard_draft.edit.cancel": "Ail-ddechrau golygu",
|
||||
"confirmations.discard_draft.edit.message": "Bydd parhau yn dileu unrhyw newidiadau rydych chi wedi'u gwneud i'r postiad rydych chi'n ei olygu ar hyn o bryd.",
|
||||
"confirmations.discard_draft.edit.title": "Dileu newidiadau i'ch postiad?",
|
||||
"confirmations.discard_draft.post.cancel": "Ail-ddechrau'r drafft",
|
||||
"confirmations.discard_draft.post.message": "Bydd parhau yn dileu'r postiad rydych chi'n ei ysgrifennu ar hyn o bryd.",
|
||||
"confirmations.discard_draft.post.title": "Dileu drafft eich postiad?",
|
||||
"confirmations.discard_edit_media.confirm": "Dileu",
|
||||
"confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg - eu dileu beth bynnag?",
|
||||
"confirmations.edit.confirm": "Golygu",
|
||||
"confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?",
|
||||
"confirmations.edit.title": "Trosysgrifo'r postiad?",
|
||||
"confirmations.follow_to_list.confirm": "Dilyn ac ychwanegu at y rhestr",
|
||||
"confirmations.follow_to_list.message": "Mae angen i chi fod yn dilyn {name} i'w ychwanegu at restr.",
|
||||
"confirmations.follow_to_list.title": "Dilyn defnyddiwr?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Dileu dilynwr",
|
||||
"confirmations.remove_from_followers.message": "Bydd {name} yn rhoi'r gorau i'ch dilyn. A ydych yn siŵr eich bod am fwrw ymlaen?",
|
||||
"confirmations.remove_from_followers.title": "Tynnu dilynwr?",
|
||||
"confirmations.reply.confirm": "Ymateb",
|
||||
"confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n siŵr eich bod am barhau?",
|
||||
"confirmations.reply.title": "Trosysgrifo'r postiad?",
|
||||
"confirmations.unfollow.confirm": "Dad-ddilyn",
|
||||
"confirmations.unfollow.message": "Ydych chi'n siŵr eich bod am ddad-ddilyn {name}?",
|
||||
"confirmations.unfollow.title": "Dad-ddilyn defnyddiwr?",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Yn dilyn a dilynwyr",
|
||||
"navigation_bar.import_export": "Mewnforio ac allforio",
|
||||
"navigation_bar.lists": "Rhestrau",
|
||||
"navigation_bar.live_feed_local": "Ffrwd fyw (lleol)",
|
||||
"navigation_bar.live_feed_public": "Ffrwd fyw (cyhoeddus)",
|
||||
"navigation_bar.logout": "Allgofnodi",
|
||||
"navigation_bar.moderation": "Cymedroil",
|
||||
"navigation_bar.more": "Rhagor",
|
||||
|
@ -802,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Torri rheol",
|
||||
"report_notification.categories.violation_sentence": "torri rheolau",
|
||||
"report_notification.open": "Agor adroddiad",
|
||||
"search.clear": "Clirio'r chwilio",
|
||||
"search.no_recent_searches": "Does dim chwiliadau diweddar",
|
||||
"search.placeholder": "Chwilio",
|
||||
"search.quick_action.account_search": "Proffiliau sy'n cyfateb i {x}",
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
"about.default_locale": "Standard",
|
||||
"about.disclaimer": "Mastodon er gratis, open-source software og et varemærke tilhørende Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Begrundelse ikke tilgængelig",
|
||||
"about.domain_blocks.preamble": "Mastodon tillader generelt, at man ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.",
|
||||
"about.domain_blocks.preamble": "Mastodon tillader generelt, at du ser indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne server.",
|
||||
"about.domain_blocks.silenced.explanation": "Du vil generelt ikke se profiler og indhold fra denne server, medmindre du udtrykkeligt slår den op eller vælger den ved at følge.",
|
||||
"about.domain_blocks.silenced.title": "Begrænset",
|
||||
"about.domain_blocks.suspended.explanation": "Data fra denne server hverken behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra denne server.",
|
||||
"about.domain_blocks.suspended.title": "Udelukket",
|
||||
"about.domain_blocks.suspended.title": "Suspenderet",
|
||||
"about.language_label": "Sprog",
|
||||
"about.not_available": "Denne information er ikke blevet gjort tilgængelig på denne server.",
|
||||
"about.powered_by": "Decentraliserede sociale medier drevet af {mastodon}",
|
||||
|
@ -25,12 +25,12 @@
|
|||
"account.cancel_follow_request": "Annullér anmodning om at følge",
|
||||
"account.copy": "Kopiér link til profil",
|
||||
"account.direct": "Nævn @{name} privat",
|
||||
"account.disable_notifications": "Advisér mig ikke længere, når @{name} poster",
|
||||
"account.disable_notifications": "Giv mig ikke længere en notifikation, når @{name} laver indlæg",
|
||||
"account.domain_blocking": "Blokerer domæne",
|
||||
"account.edit_profile": "Redigér profil",
|
||||
"account.enable_notifications": "Advisér mig, når @{name} poster",
|
||||
"account.enable_notifications": "Giv mig besked, når @{name} laver indlæg",
|
||||
"account.endorse": "Fremhæv på profil",
|
||||
"account.familiar_followers_many": "Følges af {name1}, {name2} og {othersCount, plural, one {# mere, man kender} other {# mere, man kender}}",
|
||||
"account.familiar_followers_many": "Følges af {name1}, {name2} og {othersCount, plural, one {# mere, man kender} other {# mere, du kender}}",
|
||||
"account.familiar_followers_one": "Følges af {name1}",
|
||||
"account.familiar_followers_two": "Følges af {name1} og {name2}",
|
||||
"account.featured": "Fremhævet",
|
||||
|
@ -43,7 +43,7 @@
|
|||
"account.followers": "Følgere",
|
||||
"account.followers.empty": "Ingen følger denne bruger endnu.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}",
|
||||
"account.followers_you_know_counter": "{counter} man kender",
|
||||
"account.followers_you_know_counter": "{counter} du kender",
|
||||
"account.following": "Følger",
|
||||
"account.following_counter": "{count, plural, one {{counter} følger} other {{counter} følger}}",
|
||||
"account.follows.empty": "Denne bruger følger ikke nogen endnu.",
|
||||
|
@ -62,7 +62,7 @@
|
|||
"account.mute_notifications_short": "Sluk for notifikationer",
|
||||
"account.mute_short": "Skjul",
|
||||
"account.muted": "Skjult",
|
||||
"account.muting": "Tavsgørelse",
|
||||
"account.muting": "Skjuler",
|
||||
"account.mutual": "I følger hinanden",
|
||||
"account.no_bio": "Ingen beskrivelse til rådighed.",
|
||||
"account.open_original_page": "Åbn oprindelig side",
|
||||
|
@ -80,29 +80,29 @@
|
|||
"account.unblock_domain": "Fjern blokering af domænet {domain}",
|
||||
"account.unblock_domain_short": "Afblokér",
|
||||
"account.unblock_short": "Fjern blokering",
|
||||
"account.unendorse": "Fjern visning på din profil",
|
||||
"account.unendorse": "Vis ikke på profil",
|
||||
"account.unfollow": "Følg ikke længere",
|
||||
"account.unmute": "Vis @{name} igen",
|
||||
"account.unmute_notifications_short": "Tænd for notifikationer",
|
||||
"account.unmute_notifications_short": "Vis notifikationer igen",
|
||||
"account.unmute_short": "Vis igen",
|
||||
"account_note.placeholder": "Klik for at tilføje notat",
|
||||
"admin.dashboard.daily_retention": "Brugerfastholdelsesrate per dag efter tilmelding",
|
||||
"admin.dashboard.monthly_retention": "Brugerfastholdelsesrate per måned efter tilmelding",
|
||||
"admin.dashboard.retention.average": "Gennemsnitlig",
|
||||
"admin.dashboard.daily_retention": "Brugerfastholdelsesrate pr. dag efter tilmelding",
|
||||
"admin.dashboard.monthly_retention": "Brugerfastholdelsesrate pr. måned efter tilmelding",
|
||||
"admin.dashboard.retention.average": "Gennemsnit",
|
||||
"admin.dashboard.retention.cohort": "Tilmeldingsmåned",
|
||||
"admin.dashboard.retention.cohort_size": "Nye brugere",
|
||||
"admin.impact_report.instance_accounts": "Konti profiler, som dette ville slette",
|
||||
"admin.impact_report.instance_followers": "Følgere vores brugere ville miste",
|
||||
"admin.impact_report.instance_follows": "Følgere deres brugere ville miste",
|
||||
"admin.impact_report.title": "Resumé af virkninger",
|
||||
"admin.impact_report.instance_followers": "Følgere, vores brugere ville miste",
|
||||
"admin.impact_report.instance_follows": "Følgere, deres brugere ville miste",
|
||||
"admin.impact_report.title": "Resumé af effekt",
|
||||
"alert.rate_limited.message": "Forsøg igen efter {retry_time, time, medium}.",
|
||||
"alert.rate_limited.title": "Hastighedsbegrænset",
|
||||
"alert.unexpected.message": "En uventet fejl opstod.",
|
||||
"alert.unexpected.title": "Ups!",
|
||||
"alt_text_badge.title": "Alt text",
|
||||
"alt_text_badge.title": "Alt-text",
|
||||
"alt_text_modal.add_alt_text": "Tilføj alternativ tekst",
|
||||
"alt_text_modal.add_text_from_image": "Tilføj tekst fra billede",
|
||||
"alt_text_modal.cancel": "Afbryd",
|
||||
"alt_text_modal.cancel": "Annullér",
|
||||
"alt_text_modal.change_thumbnail": "Skift miniature",
|
||||
"alt_text_modal.describe_for_people_with_hearing_impairments": "Beskriv dette for personer med nedsat hørelse…",
|
||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Beskriv dette for personer med nedsat syn…",
|
||||
|
@ -124,13 +124,13 @@
|
|||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "mest benyttede hashtag",
|
||||
"annual_report.summary.most_used_hashtag.none": "Intet",
|
||||
"annual_report.summary.new_posts.new_posts": "nye indlæg",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Det betyder, at man er i top</topLabel><percentage></percentage><bottomLabel>af {domain}-brugere.</bottomLabel>",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Dermed er du i top</topLabel><percentage></percentage><bottomLabel>af {domain}-brugere.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Vi fortæller det ikke til Pernille Skipper.",
|
||||
"annual_report.summary.thanks": "Tak for at være en del af Mastodon!",
|
||||
"attachments_list.unprocessed": "(ubehandlet)",
|
||||
"audio.hide": "Skjul lyd",
|
||||
"block_modal.remote_users_caveat": "Serveren {domain} vil blive bedt om at respektere din beslutning. Overholdelse er dog ikke garanteret, da nogle servere kan håndtere blokke forskelligt. Offentlige indlæg kan stadig være synlige for ikke-indloggede brugere.",
|
||||
"block_modal.show_less": "Vis færre",
|
||||
"block_modal.show_less": "Vis mindre",
|
||||
"block_modal.show_more": "Vis flere",
|
||||
"block_modal.they_cant_mention": "Vedkommende kan ikke omtale eller følge dig.",
|
||||
"block_modal.they_cant_see_posts": "Vedkommende kan ikke se dine indlæg, og du vil ikke se vedkommendes.",
|
||||
|
@ -146,7 +146,7 @@
|
|||
"bundle_column_error.network.body": "En fejl opstod under forsøget på at indlæse denne side. Dette kan skyldes flere typer af fejl.",
|
||||
"bundle_column_error.network.title": "Netværksfejl",
|
||||
"bundle_column_error.retry": "Forsøg igen",
|
||||
"bundle_column_error.return": "Retur til hjem",
|
||||
"bundle_column_error.return": "Tilbage til hjem",
|
||||
"bundle_column_error.routing.body": "Den anmodede side kunne ikke findes. Er du sikker på, at URL'en er korrekt?",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "Luk",
|
||||
|
@ -167,7 +167,7 @@
|
|||
"column.domain_blocks": "Blokerede domæner",
|
||||
"column.edit_list": "Redigér liste",
|
||||
"column.favourites": "Favoritter",
|
||||
"column.firehose": "Aktuelt",
|
||||
"column.firehose": "Live feeds",
|
||||
"column.follow_requests": "Følgeanmodninger",
|
||||
"column.home": "Hjem",
|
||||
"column.list_members": "Håndtér listemedlemmer",
|
||||
|
@ -183,7 +183,7 @@
|
|||
"column_header.pin": "Fastgør",
|
||||
"column_header.show_settings": "Vis indstillinger",
|
||||
"column_header.unpin": "Frigør",
|
||||
"column_search.cancel": "Afbryd",
|
||||
"column_search.cancel": "Annullér",
|
||||
"community.column_settings.local_only": "Kun lokalt",
|
||||
"community.column_settings.media_only": "Kun medier",
|
||||
"community.column_settings.remote_only": "Kun udefra",
|
||||
|
@ -205,12 +205,12 @@
|
|||
"compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype",
|
||||
"compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype",
|
||||
"compose_form.poll.type": "Stil",
|
||||
"compose_form.publish": "Slå op",
|
||||
"compose_form.publish": "Publicér",
|
||||
"compose_form.reply": "Svar",
|
||||
"compose_form.save_changes": "Opdatér",
|
||||
"compose_form.spoiler.marked": "Fjern emnefelt",
|
||||
"compose_form.spoiler.unmarked": "Tilføj emnefelt",
|
||||
"compose_form.spoiler_placeholder": "Emnefelt (valgfrit)",
|
||||
"compose_form.spoiler.marked": "Fjern indholdsadvarsel",
|
||||
"compose_form.spoiler.unmarked": "Tilføj indholdsadvarsel",
|
||||
"compose_form.spoiler_placeholder": "Indholdsadvarsel (valgfri)",
|
||||
"confirmation_modal.cancel": "Afbryd",
|
||||
"confirmations.block.confirm": "Blokér",
|
||||
"confirmations.delete.confirm": "Slet",
|
||||
|
@ -219,13 +219,17 @@
|
|||
"confirmations.delete_list.confirm": "Slet",
|
||||
"confirmations.delete_list.message": "Er du sikker på, at du vil slette denne liste permanent?",
|
||||
"confirmations.delete_list.title": "Slet liste?",
|
||||
"confirmations.discard_draft.confirm": "Kassér og fortsæt",
|
||||
"confirmations.discard_draft.edit.cancel": "Fortsæt redigering",
|
||||
"confirmations.discard_draft.edit.message": "Hvis du fortsætter, kasseres alle ændringer, du har foretaget i det indlæg, du er i gang med at redigere.",
|
||||
"confirmations.discard_draft.edit.title": "Kassér ændringer til dit indlæg?",
|
||||
"confirmations.discard_draft.post.cancel": "Genoptag udkast",
|
||||
"confirmations.discard_draft.post.message": "Hvis du fortsætter, kasseres det indlæg, du er i gang med at udforme.",
|
||||
"confirmations.discard_draft.post.title": "Kassér dit indlægsudkast?",
|
||||
"confirmations.discard_edit_media.confirm": "Kassér",
|
||||
"confirmations.discard_edit_media.message": "Der er ugemte ændringer i mediebeskrivelsen eller forhåndsvisningen, kassér dem alligevel?",
|
||||
"confirmations.edit.confirm": "Redigér",
|
||||
"confirmations.edit.message": "Redigeres nu, overskrive den besked, der forfattes pt. Fortsæt alligevel?",
|
||||
"confirmations.edit.title": "Overskriv indlæg?",
|
||||
"confirmations.follow_to_list.confirm": "Følg og føj til liste",
|
||||
"confirmations.follow_to_list.message": "Man skal følge {name} for at føje vedkommende til en liste.",
|
||||
"confirmations.follow_to_list.message": "Du skal følge {name} for at føje vedkommende til en liste.",
|
||||
"confirmations.follow_to_list.title": "Følg bruger?",
|
||||
"confirmations.logout.confirm": "Log ud",
|
||||
"confirmations.logout.message": "Er du sikker på, at du vil logge ud?",
|
||||
|
@ -235,15 +239,12 @@
|
|||
"confirmations.missing_alt_text.secondary": "Læg op alligevel",
|
||||
"confirmations.missing_alt_text.title": "Tilføj alt-tekst?",
|
||||
"confirmations.mute.confirm": "Skjul",
|
||||
"confirmations.redraft.confirm": "Slet og omformulér",
|
||||
"confirmations.redraft.confirm": "Slet og omskriv",
|
||||
"confirmations.redraft.message": "Sikker på, at dette indlæg skal slettes og omskrives? Favoritter og fremhævelser går tabt, og svar til det oprindelige indlæg mister tilknytningen.",
|
||||
"confirmations.redraft.title": "Slet og omformulér indlæg?",
|
||||
"confirmations.redraft.title": "Slet og omskriv indlæg?",
|
||||
"confirmations.remove_from_followers.confirm": "Fjern følger",
|
||||
"confirmations.remove_from_followers.message": "{name} vil ophøre med at være en følger. Sikker på, at man vil fortsætte?",
|
||||
"confirmations.remove_from_followers.message": "{name} vil ikke længere følge dig. Er du sikker på, at du vil fortsætte?",
|
||||
"confirmations.remove_from_followers.title": "Fjern følger?",
|
||||
"confirmations.reply.confirm": "Svar",
|
||||
"confirmations.reply.message": "Hvis du svarer nu, vil det overskrive den besked, du er ved at skrive. Fortsæt alligevel?",
|
||||
"confirmations.reply.title": "Overskriv indlæg?",
|
||||
"confirmations.unfollow.confirm": "Følg ikke længere",
|
||||
"confirmations.unfollow.message": "Er du sikker på, at du ikke længere vil følge {name}?",
|
||||
"confirmations.unfollow.title": "Følg ikke længere bruger?",
|
||||
|
@ -257,35 +258,35 @@
|
|||
"copy_icon_button.copied": "Kopieret til udklipsholderen",
|
||||
"copypaste.copied": "Kopieret",
|
||||
"copypaste.copy_to_clipboard": "Kopiér til udklipsholder",
|
||||
"directory.federated": "Fra kendt fødivers",
|
||||
"directory.federated": "Fra kendt fediverse",
|
||||
"directory.local": "Kun fra {domain}",
|
||||
"directory.new_arrivals": "Nye ankomster",
|
||||
"directory.new_arrivals": "Nyankomne",
|
||||
"directory.recently_active": "Aktive for nyligt",
|
||||
"disabled_account_banner.account_settings": "Kontoindstillinger",
|
||||
"disabled_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret.",
|
||||
"dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostet af {domain}.",
|
||||
"dismissable_banner.dismiss": "Afvis",
|
||||
"dismissable_banner.public_timeline": "Dette er de seneste offentlige indlæg fra personer på fødiverset, som folk på {domain} følger.",
|
||||
"dismissable_banner.public_timeline": "Dette er de seneste offentlige indlæg fra personer på fediverset, som folk på {domain} følger.",
|
||||
"domain_block_modal.block": "Blokér server",
|
||||
"domain_block_modal.block_account_instead": "Blokér i stedet @{name}",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Folk fra denne server kan interagere med de gamle indlæg.",
|
||||
"domain_block_modal.they_cant_follow": "Ingen fra denne server kan følge dig.",
|
||||
"domain_block_modal.they_wont_know": "De ser ikke den aktive blokering.",
|
||||
"domain_block_modal.title": "Blokér domæne?",
|
||||
"domain_block_modal.you_will_lose_num_followers": "Man vil miste {followersCount, plural, one {{followersCountDisplay} følger} other {{followersCountDisplay} følgere}} og {followingCount, plural, one {{followingCountDisplay} person, man følger} other {{followingCountDisplay} personer, man følger}}.",
|
||||
"domain_block_modal.you_will_lose_num_followers": "Du vil miste {followersCount, plural, one {{followersCountDisplay} følger} other {{followersCountDisplay} følgere}} og {followingCount, plural, one {{followingCountDisplay} person, du følger} other {{followingCountDisplay} personer, du følger}}.",
|
||||
"domain_block_modal.you_will_lose_relationships": "Alle følgere og personer som følges på denne server mistes.",
|
||||
"domain_block_modal.you_wont_see_posts": "Indlæg eller notifikationer fra brugere på denne server vises ikke.",
|
||||
"domain_pill.activitypub_lets_connect": "Det muliggører at forbinde og interagere med folk, ikke kun på Mastodon, men også på tværs af forskellige sociale apps.",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub er \"sproget\", som Mastodon taler med andre sociale netværk.",
|
||||
"domain_pill.server": "Server",
|
||||
"domain_pill.their_handle": "Deres greb:",
|
||||
"domain_pill.their_handle": "Deres handle:",
|
||||
"domain_pill.their_server": "Det digitale hjem, hvor alle indlæggene findes.",
|
||||
"domain_pill.their_username": "Entydig identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.",
|
||||
"domain_pill.username": "Brugernavn",
|
||||
"domain_pill.whats_in_a_handle": "Hvad er der i et greb?",
|
||||
"domain_pill.who_they_are": "Da et greb fortæller, hvem nogen er, og hvor de er, kan man interagere med folk på tværs af det sociale net af <button>ActivityPub-drevne platforme</button>.",
|
||||
"domain_pill.who_you_are": "Da et greb fortæller, hvem man er, og hvor man er, kan man interagere med folk på tværs af det sociale net af <button>ActivityPub-drevne platforme</button>.",
|
||||
"domain_pill.your_handle": "Dit greb:",
|
||||
"domain_pill.whats_in_a_handle": "Hvad indeholder et handle?",
|
||||
"domain_pill.who_they_are": "Da et handle fortæller, hvem nogen er, og hvor de er, kan du interagere med folk på tværs af det sociale net af <button>ActivityPub-drevne platforme</button>.",
|
||||
"domain_pill.who_you_are": "Fordi dit handle fortæller, hvem du er, og hvor du er, kan du interagere med folk på tværs af det sociale net af <button>ActivityPub-drevne platforme</button>.",
|
||||
"domain_pill.your_handle": "Dit handle:",
|
||||
"domain_pill.your_server": "Dit digitale hjem, hvor alle dine indlæg lever. Synes ikke om den her server? Du kan til enhver tid rykke over på en anden server og beholde dine følgere.",
|
||||
"domain_pill.your_username": "Din entydige identifikator på denne server. Det er muligt at finde brugere med samme brugernavn på forskellige servere.",
|
||||
"embed.instructions": "Indlejr dette indlæg på din hjemmeside ved at kopiere nedenstående kode.",
|
||||
|
@ -305,7 +306,7 @@
|
|||
"emoji_button.search_results": "Søgeresultater",
|
||||
"emoji_button.symbols": "Symboler",
|
||||
"emoji_button.travel": "Rejser og steder",
|
||||
"empty_column.account_featured.me": "Intet fremhævet endnu. Vidste du, at man kan fremhæve sine mest brugte hashtags og endda din vens konti på din profil?",
|
||||
"empty_column.account_featured.me": "Intet fremhævet endnu. Vidste du, at du kan fremhæve dine mest brugte hashtags og endda din vens konti på din profil?",
|
||||
"empty_column.account_featured.other": "{acct} har ikke fremhævet noget endnu. Vidste du, at du kan fremhæve dine mest brugte hashtags og endda din vens konti på din profil?",
|
||||
"empty_column.account_featured_other.unknown": "Denne konto har ikke fremhævet noget endnu.",
|
||||
"empty_column.account_hides_collections": "Brugeren har valgt ikke at gøre denne information tilgængelig",
|
||||
|
@ -315,20 +316,20 @@
|
|||
"empty_column.blocks": "Ingen brugere blokeret endnu.",
|
||||
"empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.",
|
||||
"empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!",
|
||||
"empty_column.direct": "Der er endnu ingen private omtaler. Når en sendes eller modtages, dukker den op her.",
|
||||
"empty_column.direct": "Du har ikke nogen private omtaler endnu. Når du sender eller modtager en, vil den blive vist her.",
|
||||
"empty_column.domain_blocks": "Ingen blokerede domæner endnu.",
|
||||
"empty_column.explore_statuses": "Ingen nye tendenser lige nu. Tjek igen senere!",
|
||||
"empty_column.explore_statuses": "Ingen nye trends lige nu. Tjek igen senere!",
|
||||
"empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du føjer et opslag til favoritter, vil det dukke op her.",
|
||||
"empty_column.favourites": "Ingen har endnu føjet dette indlæg til favoritter. Når nogen gør det, vil det dukke op her.",
|
||||
"empty_column.follow_requests": "Du har endnu ingen følgeanmodninger. Når du modtager én, vil den dukke op her.",
|
||||
"empty_column.followed_tags": "Ingen hashtags følges endnu. Når det sker, vil de fremgå her.",
|
||||
"empty_column.hashtag": "Der er intet med dette hashtag endnu.",
|
||||
"empty_column.home": "Din hjemmetidslinje er tom! Følg nogle personer, for at fylde den op.",
|
||||
"empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af listen udgiver nye indlæg vil de fremgå her.",
|
||||
"empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af denne liste udgiver nye indlæg, vil de blive vist her.",
|
||||
"empty_column.mutes": "Du har endnu ikke skjult nogle brugere.",
|
||||
"empty_column.notification_requests": "Alt er klar! Der er intet her. Når der modtages nye notifikationer, fremgår de her jævnfør dine indstillinger.",
|
||||
"empty_column.notifications": "Du har endnu ingen notifikationer. Når andre interagerer med dig, vil det fremgå her.",
|
||||
"empty_column.public": "Der er intet her! Skriv noget offentligt eller følg manuelt brugere fra andre servere for at se indhold",
|
||||
"empty_column.public": "Der er ikke noget her! Skriv noget offentligt, eller følg manuelt brugere fra andre servere for at se indhold",
|
||||
"error.unexpected_crash.explanation": "Grundet en fejl i vores kode, eller en netlæser-kompatibilitetsfejl, kunne siden ikke vises korrekt.",
|
||||
"error.unexpected_crash.explanation_addons": "Denne side kunne ikke vises korrekt. Fejlen skyldes sandsynligvis en browsertilføjelse eller automatiske oversættelsesværktøjer.",
|
||||
"error.unexpected_crash.next_steps": "Prøv at opfriske siden. Hjælper dette ikke, kan Mastodon muligvis stadig bruges via en anden netlæser eller app.",
|
||||
|
@ -362,7 +363,7 @@
|
|||
"filter_modal.select_filter.title": "Filtrér dette indlæg",
|
||||
"filter_modal.title.status": "Filtrér et indlæg",
|
||||
"filter_warning.matches_filter": "Matcher filteret “<span>{title}</span>”",
|
||||
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {én person} other {# personer}}, man måske kender",
|
||||
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {én person} other {# personer}}, du måske kender",
|
||||
"filtered_notifications_banner.title": "Filtrerede notifikationer",
|
||||
"firehose.all": "Alle",
|
||||
"firehose.local": "Denne server",
|
||||
|
@ -373,7 +374,7 @@
|
|||
"follow_suggestions.curated_suggestion": "Personaleudvalgt",
|
||||
"follow_suggestions.dismiss": "Vis ikke igen",
|
||||
"follow_suggestions.featured_longer": "Håndplukket af {domain}-teamet",
|
||||
"follow_suggestions.friends_of_friends_longer": "Populært blandt personer, som følges",
|
||||
"follow_suggestions.friends_of_friends_longer": "Populær blandt personer, du følger",
|
||||
"follow_suggestions.hints.featured": "Denne profil er håndplukket af {domain}-teamet.",
|
||||
"follow_suggestions.hints.friends_of_friends": "Denne profil er populær blandt de personer, som følges.",
|
||||
"follow_suggestions.hints.most_followed": "Denne profil er en af de mest fulgte på {domain}.",
|
||||
|
@ -382,10 +383,10 @@
|
|||
"follow_suggestions.personalized_suggestion": "Personligt forslag",
|
||||
"follow_suggestions.popular_suggestion": "Populært forslag",
|
||||
"follow_suggestions.popular_suggestion_longer": "Populært på {domain}",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Svarende til profiler, som for nylig er fulgt",
|
||||
"follow_suggestions.similar_to_recently_followed_longer": "Minder om profiler, du har fulgt for nylig",
|
||||
"follow_suggestions.view_all": "Vis alle",
|
||||
"follow_suggestions.who_to_follow": "Hvem, som skal følges",
|
||||
"followed_tags": "Hashtag, som følges",
|
||||
"followed_tags": "Hashtags, som følges",
|
||||
"footer.about": "Om",
|
||||
"footer.directory": "Profiloversigt",
|
||||
"footer.get_app": "Hent appen",
|
||||
|
@ -413,7 +414,7 @@
|
|||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}} i dag",
|
||||
"hashtag.feature": "Fremhæv på profil",
|
||||
"hashtag.follow": "Følg hashtag",
|
||||
"hashtag.mute": "Tavsgør #{hashtag}",
|
||||
"hashtag.mute": "Skjul #{hashtag}",
|
||||
"hashtag.unfeature": "Fremhæv ikke på profil",
|
||||
"hashtag.unfollow": "Følg ikke længere hashtag",
|
||||
"hashtags.and_other": "…og {count, plural, one {}other {# flere}}",
|
||||
|
@ -433,24 +434,24 @@
|
|||
"home.pending_critical_update.link": "Se opdateringer",
|
||||
"home.pending_critical_update.title": "Kritisk sikkerhedsopdatering tilgængelig!",
|
||||
"home.show_announcements": "Vis bekendtgørelser",
|
||||
"ignore_notifications_modal.disclaimer": "Mastodon kan ikke informere brugere om, at man har ignoreret deres notifikationer. Ignorerer man notifikationer, forhindrer det ikke selve beskedafsendelsen.",
|
||||
"ignore_notifications_modal.disclaimer": "Mastodon kan ikke informere brugere om, at du har ignoreret deres notifikationer. At ignorere notifikationer forhindrer ikke selve beskederne i at blive sendt.",
|
||||
"ignore_notifications_modal.filter_instead": "Filtrér i stedet",
|
||||
"ignore_notifications_modal.filter_to_act_users": "Man vil stadig kunne acceptere, afvise eller anmelde brugere",
|
||||
"ignore_notifications_modal.filter_to_act_users": "Du vil stadig kunne acceptere, afvise eller anmelde brugere",
|
||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering medvirker til at undgå potentiel forvirring",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "Man kan gennemgå filtrerede notifikationer separat",
|
||||
"ignore_notifications_modal.filter_to_review_separately": "Du kan gennemgå filtrerede notifikationer separat",
|
||||
"ignore_notifications_modal.ignore": "Ignorér notifikationer",
|
||||
"ignore_notifications_modal.limited_accounts_title": "Ignorér notifikationer fra modererede konti?",
|
||||
"ignore_notifications_modal.new_accounts_title": "Ignorér notifikationer fra nye konti?",
|
||||
"ignore_notifications_modal.not_followers_title": "Ignorér notifikationer fra folk, som ikke er følgere?",
|
||||
"ignore_notifications_modal.not_following_title": "Ignorér notifikationer fra folk, man ikke følger?",
|
||||
"ignore_notifications_modal.not_following_title": "Ignorér notifikationer fra folk, du ikke følger?",
|
||||
"ignore_notifications_modal.private_mentions_title": "Ignorér notifikationer fra uopfordrede private omtaler?",
|
||||
"info_button.label": "Hjælp",
|
||||
"info_button.what_is_alt_text": "<h1>Hvad er alt-tekst?</h1> <p>Alt-tekst leverer billedbeskrivelser til folk med synsnedsættelser, lav båndbredde-forbindelser eller med ønske om ekstra kontekst.</p> <p>Tilgængelighed og forståelse kan forbedres for alle ved at skrive klar, kortfattet og objektiv alt-tekst.</p> <ul> <li>Fang vigtige elementer</li> <li>Opsummér tekst i billeder</li> <li>Brug almindelig sætningsstruktur</li> <li>Undgå overflødig information</li> <li>Fokusér på tendenser og centrale resultater i kompleks grafik (såsom diagrammer eller kort)</li> </ul>",
|
||||
"interaction_modal.action.favourite": "For at fortsætte, skal du føje til favoritter fra din konto.",
|
||||
"interaction_modal.action.follow": "For at fortsætte, skal man vælge Følg fra sin konto.",
|
||||
"interaction_modal.action.reblog": "For at fortsætte, skal man vælge Fremhæv fra sin konto.",
|
||||
"interaction_modal.action.reply": "For at fortsætte, skal man besvar fra sin konto.",
|
||||
"interaction_modal.action.vote": "For at fortsætte, skal man stemme fra sin konto.",
|
||||
"interaction_modal.action.follow": "For at fortsætte skal du følge fra din konto.",
|
||||
"interaction_modal.action.reblog": "For at fortsætte, skal du vælge fremhæv fra din konto.",
|
||||
"interaction_modal.action.reply": "For at fortsætte, skal du besvare fra din konto.",
|
||||
"interaction_modal.action.vote": "For at fortsætte, skal du stemme fra din konto.",
|
||||
"interaction_modal.go": "Gå",
|
||||
"interaction_modal.no_account_yet": "Har endnu ingen konto?",
|
||||
"interaction_modal.on_another_server": "På en anden server",
|
||||
|
@ -491,9 +492,9 @@
|
|||
"keyboard_shortcuts.reply": "Besvar indlægget",
|
||||
"keyboard_shortcuts.requests": "Åbn liste over følgeanmodninger",
|
||||
"keyboard_shortcuts.search": "Fokusér søgebjælke",
|
||||
"keyboard_shortcuts.spoilers": "Vis/skjul emnefelt",
|
||||
"keyboard_shortcuts.spoilers": "Vis/skjul indholdsadvarsel-felt",
|
||||
"keyboard_shortcuts.start": "Åbn \"komme i gang\"-kolonne",
|
||||
"keyboard_shortcuts.toggle_hidden": "Vis/skjul tekst bag emnefelt",
|
||||
"keyboard_shortcuts.toggle_hidden": "Vis/skjul tekst bag indholdsadvarsel",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Vis/skjul medier",
|
||||
"keyboard_shortcuts.toot": "Påbegynd nyt indlæg",
|
||||
"keyboard_shortcuts.translate": "for at oversætte et indlæg",
|
||||
|
@ -542,10 +543,10 @@
|
|||
"mute_modal.hide_options": "Skjul valgmuligheder",
|
||||
"mute_modal.indefinite": "Indtil jeg vælger at se dem igen",
|
||||
"mute_modal.show_options": "Vis valgmuligheder",
|
||||
"mute_modal.they_can_mention_and_follow": "De kan omtale og følge dig, men du vil ikke se dem.",
|
||||
"mute_modal.they_can_mention_and_follow": "Vedkommende kan nævne og følge dig, men vil ikke blive vist.",
|
||||
"mute_modal.they_wont_know": "De vil ikke vide, at de er blevet skjult.",
|
||||
"mute_modal.title": "Skjul bruger?",
|
||||
"mute_modal.you_wont_see_mentions": "Du vil ikke se indlæg som omtaler dem.",
|
||||
"mute_modal.you_wont_see_mentions": "Indlæg, som nævner vedkommende, vises ikke.",
|
||||
"mute_modal.you_wont_see_posts": "De kan stadig se dine indlæg, men du vil ikke se deres.",
|
||||
"navigation_bar.about": "Om",
|
||||
"navigation_bar.account_settings": "Adgangskode og sikkerhed",
|
||||
|
@ -559,7 +560,7 @@
|
|||
"navigation_bar.favourites": "Favoritter",
|
||||
"navigation_bar.filters": "Skjulte ord",
|
||||
"navigation_bar.follow_requests": "Følgeanmodninger",
|
||||
"navigation_bar.followed_tags": "Hashtag, som følges",
|
||||
"navigation_bar.followed_tags": "Hashtags, som følges",
|
||||
"navigation_bar.follows_and_followers": "Følges og følgere",
|
||||
"navigation_bar.import_export": "Import og eksport",
|
||||
"navigation_bar.lists": "Lister",
|
||||
|
@ -571,14 +572,14 @@
|
|||
"navigation_bar.mutes": "Skjulte brugere",
|
||||
"navigation_bar.opened_in_classic_interface": "Indlæg, konti og visse andre sider åbnes som standard i den klassiske webgrænseflade.",
|
||||
"navigation_bar.preferences": "Præferencer",
|
||||
"navigation_bar.privacy_and_reach": "Fortrolighed og udbredelse",
|
||||
"navigation_bar.privacy_and_reach": "Fortrolighed og rækkevidde",
|
||||
"navigation_bar.search": "Søg",
|
||||
"navigation_bar.search_trends": "Søg/Populære",
|
||||
"navigation_bar.search_trends": "Søg/Trender",
|
||||
"navigation_panel.collapse_followed_tags": "Sammenfold menuen Fulgte hashtags",
|
||||
"navigation_panel.collapse_lists": "Luk listemenu",
|
||||
"navigation_panel.expand_followed_tags": "Udfold menuen Fulgte hashtags",
|
||||
"navigation_panel.expand_lists": "Udvid listemenu",
|
||||
"not_signed_in_indicator.not_signed_in": "Log ind for at tilgå denne ressource.",
|
||||
"not_signed_in_indicator.not_signed_in": "Du skal logge ind for at tilgå denne ressource.",
|
||||
"notification.admin.report": "{name} anmeldte {target}",
|
||||
"notification.admin.report_account": "{name} anmeldte {count, plural, one {et indlæg} other {# indlæg}} fra {target} angående {category}",
|
||||
"notification.admin.report_account_other": "{name} anmeldte {count, plural, one {et indlæg} other {# indlæg}} fra {target}",
|
||||
|
@ -625,10 +626,10 @@
|
|||
"notification_requests.accept": "Acceptér",
|
||||
"notification_requests.accept_multiple": "{count, plural, one {Acceptér # anmodning…} other {Acceptér # anmodninger…}}",
|
||||
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Acceptér anmodning} other {Acceptér anmodninger}}",
|
||||
"notification_requests.confirm_accept_multiple.message": "{count, plural, one {En notifikationsanmodning} other {# notifikationsanmodninger}} er ved at blive accepteret. Er du sikker på, at du vil fortsætte?",
|
||||
"notification_requests.confirm_accept_multiple.message": "Du er ved at acceptere {count, plural, one {en notifikationsanmodning} other {# notifikationsanmodninger}}. Er du sikker på, at du vil fortsætte?",
|
||||
"notification_requests.confirm_accept_multiple.title": "Acceptér notifikationsanmodninger?",
|
||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Afvis anmodning} other {Afvis anmodninger}}",
|
||||
"notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {En notifikationsanmodning} other {# notifikationsanmodninger}} er ved at blive afvist, hvorfor man ikke nemt vil kunne tilgå {count, plural, one {den} other {dem}} igen. Er du sikker på, at du vil fortsætte?",
|
||||
"notification_requests.confirm_dismiss_multiple.message": "Du er ved at afvise {count, plural, one {en notifikationsanmodning} other {# notifikationsanmodninger}}. Du vil derfor ikke nemt kunne tilgå {count, plural, one {den} other {dem}} igen. Er du sikker på, at du vil fortsætte?",
|
||||
"notification_requests.confirm_dismiss_multiple.title": "Afvis notifikationsanmodninger?",
|
||||
"notification_requests.dismiss": "Afvis",
|
||||
"notification_requests.dismiss_multiple": "{count, plural, one {Afvis # anmodning…} other {Afvis # anmodninger…}}",
|
||||
|
@ -685,18 +686,18 @@
|
|||
"notifications.policy.filter_limited_accounts_hint": "Begrænset af servermoderatorer",
|
||||
"notifications.policy.filter_limited_accounts_title": "Modererede konti",
|
||||
"notifications.policy.filter_new_accounts.hint": "Oprettet indenfor {days, plural, one {den seneste dag} other {de seneste # dage}}",
|
||||
"notifications.policy.filter_new_accounts_title": "Ny konti",
|
||||
"notifications.policy.filter_not_followers_hint": "Inklusiv personer, som har fulgt dig {days, plural, one {mindre end én dag} other {færre end # dage}}",
|
||||
"notifications.policy.filter_not_followers_title": "Folk, som ikke følger dig",
|
||||
"notifications.policy.filter_not_following_hint": "Indtil de manuelt godkendes",
|
||||
"notifications.policy.filter_not_following_title": "Folk, du ikke følger",
|
||||
"notifications.policy.filter_new_accounts_title": "Nye konti",
|
||||
"notifications.policy.filter_not_followers_hint": "Inklusiv personer, som har fulgt dig {days, plural, one {mindre end én dag} other {mindre end # dage}}",
|
||||
"notifications.policy.filter_not_followers_title": "Personer, som ikke følger dig",
|
||||
"notifications.policy.filter_not_following_hint": "Indtil du manuelt godkender dem",
|
||||
"notifications.policy.filter_not_following_title": "Personer, du ikke følger",
|
||||
"notifications.policy.filter_private_mentions_hint": "Filtreret, medmindre det er i svar på egen omtale, eller hvis afsenderen følges",
|
||||
"notifications.policy.filter_private_mentions_title": "Uopfordrede private omtaler",
|
||||
"notifications.policy.title": "Håndtér notifikationer fra…",
|
||||
"notifications_permission_banner.enable": "Aktivér computernotifikationer",
|
||||
"notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.",
|
||||
"notifications_permission_banner.title": "Gå aldrig glip af noget",
|
||||
"onboarding.follows.back": "Retur",
|
||||
"onboarding.follows.back": "Tilbage",
|
||||
"onboarding.follows.done": "Færdig",
|
||||
"onboarding.follows.empty": "Ingen resultater tilgængelige pt. Prøv at bruge søgning eller gennemse siden for at finde personer at følge, eller forsøg igen senere.",
|
||||
"onboarding.follows.search": "Søg",
|
||||
|
@ -731,7 +732,7 @@
|
|||
"privacy.private.short": "Følgere",
|
||||
"privacy.public.long": "Alle på og udenfor Mastodon",
|
||||
"privacy.public.short": "Offentlig",
|
||||
"privacy.unlisted.additional": "Dette er præcis som offentlig adfærd, dog vises indlægget ikke i live feeds/hashtags, udforsk eller Mastodon-søgning, selv hvis valget gælder hele kontoen.",
|
||||
"privacy.unlisted.additional": "Dette svarer til offentlig, bortset fra at indlægget ikke vises i live-feeds eller hashtags, udforsk eller Mastodon-søgning, selvom du har tilvalgt dette for kontoen.",
|
||||
"privacy.unlisted.long": "Færre algoritmiske fanfarer",
|
||||
"privacy.unlisted.short": "Offentlig (stille)",
|
||||
"privacy_policy.last_updated": "Senest opdateret {date}",
|
||||
|
@ -794,7 +795,7 @@
|
|||
"report.thanks.title_actionable": "Tak for anmeldelsen, der vil blive set nærmere på dette.",
|
||||
"report.unfollow": "Følg ikke længere @{name}",
|
||||
"report.unfollow_explanation": "Du følger denne konto. For ikke længere at se vedkommendes indlæg i din hjemmestrøm, kan du stoppe med at følge dem.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} poster}} vedhæftet",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} indlæg} other {{count} indlæg}} vedhæftet",
|
||||
"report_notification.categories.legal": "Juridisk",
|
||||
"report_notification.categories.legal_sentence": "ikke-tilladt indhold",
|
||||
"report_notification.categories.other": "Andre",
|
||||
|
@ -829,13 +830,13 @@
|
|||
"search_results.see_all": "Vis alle",
|
||||
"search_results.statuses": "Indlæg",
|
||||
"search_results.title": "Søg efter \"{q}\"",
|
||||
"server_banner.about_active_users": "Folk, som brugte denne server de seneste 30 dage (månedlige aktive brugere)",
|
||||
"server_banner.about_active_users": "Personer, som brugte denne server de seneste 30 dage (månedlige aktive brugere)",
|
||||
"server_banner.active_users": "aktive brugere",
|
||||
"server_banner.administered_by": "Håndteres af:",
|
||||
"server_banner.is_one_of_many": "{domain} er en af de mange uafhængige Mastodon-servere, man kan bruge for at deltage i fødiverset.",
|
||||
"server_banner.is_one_of_many": "{domain} er en af de mange uafhængige Mastodon-servere, du kan bruge for at deltage i fediverset.",
|
||||
"server_banner.server_stats": "Serverstatstik:",
|
||||
"sign_in_banner.create_account": "Opret konto",
|
||||
"sign_in_banner.follow_anyone": "Følg alle på tværs af fødiverset og se alt i kronologisk rækkefølge. Ingen algoritmer, annoncer eller clickbait i syne.",
|
||||
"sign_in_banner.follow_anyone": "Følg alle på tværs af fediverset og se alt i kronologisk rækkefølge. Ingen algoritmer, annoncer eller clickbait i syne.",
|
||||
"sign_in_banner.mastodon_is": "Mastodon er den bedste måde at holde sig ajour med, hvad der sker.",
|
||||
"sign_in_banner.sign_in": "Log ind",
|
||||
"sign_in_banner.sso_redirect": "Log ind eller Tilmeld",
|
||||
|
@ -884,10 +885,10 @@
|
|||
"status.reblogged_by": "{name} fremhævede",
|
||||
"status.reblogs": "{count, plural, one {# fremhævelse} other {# fremhævelser}}",
|
||||
"status.reblogs.empty": "Ingen har endnu fremhævet dette indlæg. Når nogen gør, vil det fremgå hér.",
|
||||
"status.redraft": "Slet og omformulér",
|
||||
"status.redraft": "Slet og omskriv",
|
||||
"status.remove_bookmark": "Fjern bogmærke",
|
||||
"status.remove_favourite": "Fjern fra favoritter",
|
||||
"status.replied_in_thread": "Svaret i tråd",
|
||||
"status.replied_in_thread": "Svarede i tråd",
|
||||
"status.replied_to": "Svarede {name}",
|
||||
"status.reply": "Besvar",
|
||||
"status.replyAll": "Svar alle",
|
||||
|
@ -901,9 +902,9 @@
|
|||
"status.translate": "Oversæt",
|
||||
"status.translated_from_with": "Oversat fra {lang} ved brug af {provider}",
|
||||
"status.uncached_media_warning": "Ingen forhåndsvisning",
|
||||
"status.unmute_conversation": "Genaktivér samtale",
|
||||
"status.unmute_conversation": "Vis samtale",
|
||||
"status.unpin": "Frigør fra profil",
|
||||
"subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på dine hjemme- og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.",
|
||||
"subscribed_languages.lead": "Efter ændringen vises kun indlæg på de valgte sprog på din hjem- og listetidslinje. Vælger du ingen, vil du modtage indlæg på alle sprog.",
|
||||
"subscribed_languages.save": "Gem ændringer",
|
||||
"subscribed_languages.target": "Skift abonnementssprog for {target}",
|
||||
"tabs_bar.home": "Hjem",
|
||||
|
@ -920,7 +921,7 @@
|
|||
"time_remaining.moments": "Få øjeblikke tilbage",
|
||||
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage",
|
||||
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} {days, plural, one {den seneste dag} other {de seneste {days} dage}}",
|
||||
"trends.trending_now": "Hot lige nu",
|
||||
"trends.trending_now": "Trender lige nu",
|
||||
"ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.",
|
||||
"units.short.billion": "{count} mia.",
|
||||
"units.short.million": "{count} mio.",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Löschen",
|
||||
"confirmations.delete_list.message": "Möchtest du diese Liste für immer löschen?",
|
||||
"confirmations.delete_list.title": "Liste löschen?",
|
||||
"confirmations.discard_draft.confirm": "Verwerfen und fortfahren",
|
||||
"confirmations.discard_draft.edit.cancel": "Bearbeitung fortsetzen",
|
||||
"confirmations.discard_draft.edit.message": "Beim Fortfahren werden alle am Beitrag vorgenommenen Änderungen verworfen.",
|
||||
"confirmations.discard_draft.edit.title": "Änderungen an diesem Beitrag verwerfen?",
|
||||
"confirmations.discard_draft.post.cancel": "Entwurf fortsetzen",
|
||||
"confirmations.discard_draft.post.message": "Beim Fortfahren wird der gerade verfasste Beitrag verworfen.",
|
||||
"confirmations.discard_draft.post.title": "Beitragsentwurf verwerfen?",
|
||||
"confirmations.discard_edit_media.confirm": "Verwerfen",
|
||||
"confirmations.discard_edit_media.message": "Du hast Änderungen an der Medienbeschreibung oder -vorschau vorgenommen, die noch nicht gespeichert sind. Trotzdem verwerfen?",
|
||||
"confirmations.edit.confirm": "Bearbeiten",
|
||||
"confirmations.edit.message": "Das Bearbeiten überschreibt die Nachricht, die du gerade verfasst. Möchtest du wirklich fortfahren?",
|
||||
"confirmations.edit.title": "Beitrag überschreiben?",
|
||||
"confirmations.follow_to_list.confirm": "Folgen und zur Liste hinzufügen",
|
||||
"confirmations.follow_to_list.message": "Du musst {name} folgen, um das Profil zu einer Liste hinzufügen zu können.",
|
||||
"confirmations.follow_to_list.title": "Profil folgen?",
|
||||
|
@ -237,13 +241,10 @@
|
|||
"confirmations.mute.confirm": "Stummschalten",
|
||||
"confirmations.redraft.confirm": "Löschen und neu erstellen",
|
||||
"confirmations.redraft.message": "Möchtest du diesen Beitrag wirklich löschen und neu verfassen? Alle Favoriten sowie die bisher geteilten Beiträge werden verloren gehen und Antworten auf den ursprünglichen Beitrag verlieren den Zusammenhang.",
|
||||
"confirmations.redraft.title": "Beitrag löschen und neu erstellen?",
|
||||
"confirmations.redraft.title": "Beitrag löschen und neu verfassen?",
|
||||
"confirmations.remove_from_followers.confirm": "Follower entfernen",
|
||||
"confirmations.remove_from_followers.message": "{name} wird dir nicht länger folgen. Bist du dir sicher?",
|
||||
"confirmations.remove_from_followers.title": "Follower entfernen?",
|
||||
"confirmations.reply.confirm": "Antworten",
|
||||
"confirmations.reply.message": "Wenn du jetzt darauf antwortest, wird der andere Beitrag, an dem du gerade geschrieben hast, verworfen. Möchtest du wirklich fortfahren?",
|
||||
"confirmations.reply.title": "Beitrag überschreiben?",
|
||||
"confirmations.unfollow.confirm": "Entfolgen",
|
||||
"confirmations.unfollow.message": "Möchtest du {name} wirklich entfolgen?",
|
||||
"confirmations.unfollow.title": "Profil entfolgen?",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"about.default_locale": "Προεπιλογή",
|
||||
"about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.",
|
||||
"about.domain_blocks.no_reason_available": "Αιτιολογία μη διαθέσιμη",
|
||||
"about.domain_blocks.preamble": "Σε γενικές γραμμές το Mastodon σού επιτρέπει να βλέπεις περιεχόμενο και να αλληλεπιδράς με χρήστες από οποιονδήποτε άλλο διακομιστή σε ένα διασυνδεδεμένο σύμπαν διακομιστών (fediverse). Ακολουθούν οι εξαιρέσεις που ισχύουν για τον συγκεκριμένο διακομιστή.",
|
||||
"about.domain_blocks.preamble": "Σε γενικές γραμμές το Mastodon σου επιτρέπει να βλέπεις περιεχόμενο και να αλληλεπιδράς με χρήστες από οποιονδήποτε άλλο διακομιστή σε ένα διασυνδεδεμένο σύμπαν διακομιστών (fediverse). Ακολουθούν οι εξαιρέσεις που ισχύουν για τον συγκεκριμένο διακομιστή.",
|
||||
"about.domain_blocks.silenced.explanation": "Συνήθως δε θα βλέπεις προφίλ και περιεχόμενο απ' αυτόν τον διακομιστή, εκτός αν κάνεις συγκεκριμένη αναζήτηση ή επιλέξεις να τον ακολουθήσεις.",
|
||||
"about.domain_blocks.silenced.title": "Περιορισμένος",
|
||||
"about.domain_blocks.suspended.explanation": "Τα δεδομένα αυτού του διακομιστή, δε θα επεξεργάζονται, δε θα αποθηκεύονται και δε θα ανταλλάσσονται, καθιστώντας οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες από αυτόν το διακομιστή αδύνατη.",
|
||||
|
@ -65,7 +65,7 @@
|
|||
"account.muting": "Σίγαση",
|
||||
"account.mutual": "Ακολουθείτε ο ένας τον άλλο",
|
||||
"account.no_bio": "Δεν υπάρχει περιγραφή.",
|
||||
"account.open_original_page": "Ανοικτό",
|
||||
"account.open_original_page": "Άνοιγμα αυθεντικής σελίδας",
|
||||
"account.posts": "Τουτ",
|
||||
"account.posts_with_replies": "Τουτ και απαντήσεις",
|
||||
"account.remove_from_followers": "Κατάργηση {name} από τους ακόλουθους",
|
||||
|
@ -194,7 +194,7 @@
|
|||
"compose.saved.body": "Η ανάρτηση αποθηκεύτηκε.",
|
||||
"compose_form.direct_message_warning_learn_more": "Μάθε περισσότερα",
|
||||
"compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μη μοιράζεσαι ευαίσθητες πληροφορίες μέσω του Mastodon.",
|
||||
"compose_form.hashtag_warning": "Αυτή η δημοσίευση δεν θα εμφανίζεται κάτω από οποιαδήποτε ετικέτα καθώς δεν είναι δημόσια. Μόνο οι δημόσιες δημοσιεύσεις μπορούν να αναζητηθούν με ετικέτα.",
|
||||
"compose_form.hashtag_warning": "Αυτή η ανάρτηση δεν θα εμφανίζεται κάτω από οποιαδήποτε ετικέτα καθώς δεν είναι δημόσια. Μόνο οι δημόσιες αναρτήσεις μπορούν να αναζητηθούν με ετικέτα.",
|
||||
"compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σου προς τους ακολούθους σου.",
|
||||
"compose_form.lock_disclaimer.lock": "κλειδωμένο",
|
||||
"compose_form.placeholder": "Τι σκέφτεσαι;",
|
||||
|
@ -214,16 +214,20 @@
|
|||
"confirmation_modal.cancel": "Άκυρο",
|
||||
"confirmations.block.confirm": "Αποκλεισμός",
|
||||
"confirmations.delete.confirm": "Διαγραφή",
|
||||
"confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή τη δημοσίευση;",
|
||||
"confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή την ανάρτηση;",
|
||||
"confirmations.delete.title": "Διαγραφή ανάρτησης;",
|
||||
"confirmations.delete_list.confirm": "Διαγραφή",
|
||||
"confirmations.delete_list.message": "Σίγουρα θες να διαγράψεις οριστικά αυτή τη λίστα;",
|
||||
"confirmations.delete_list.title": "Διαγραφή λίστας;",
|
||||
"confirmations.discard_draft.confirm": "Απόρριψη και συνέχεια",
|
||||
"confirmations.discard_draft.edit.cancel": "Συνέχιση επεξεργασίας",
|
||||
"confirmations.discard_draft.edit.message": "Συνεχίζοντας θα απορρίψει τυχόν αλλαγές που έχετε κάνει στην ανάρτηση που επεξεργάζεστε.",
|
||||
"confirmations.discard_draft.edit.title": "Απόρριψη αλλαγών στην ανάρτηση σας;",
|
||||
"confirmations.discard_draft.post.cancel": "Συνέχιση προχείρου",
|
||||
"confirmations.discard_draft.post.message": "Συνεχίζοντας θα απορρίψει την ανάρτηση που συνθέτετε.",
|
||||
"confirmations.discard_draft.post.title": "Απόρριψη της πρόχειρης ανάρτησης σας;",
|
||||
"confirmations.discard_edit_media.confirm": "Απόρριψη",
|
||||
"confirmations.discard_edit_media.message": "Έχεις μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απόρριψη ούτως ή άλλως;",
|
||||
"confirmations.edit.confirm": "Επεξεργασία",
|
||||
"confirmations.edit.message": "Αν το επεξεργαστείς τώρα θα αντικατασταθεί το μήνυμα που συνθέτεις. Είσαι σίγουρος ότι θέλεις να συνεχίσεις;",
|
||||
"confirmations.edit.title": "Αντικατάσταση ανάρτησης;",
|
||||
"confirmations.follow_to_list.confirm": "Ακολούθησε και πρόσθεσε στη λίστα",
|
||||
"confirmations.follow_to_list.message": "Πρέπει να ακολουθήσεις τον χρήστη {name} για να τον προσθέσεις σε μια λίστα.",
|
||||
"confirmations.follow_to_list.title": "Ακολούθηση χρήστη;",
|
||||
|
@ -233,7 +237,7 @@
|
|||
"confirmations.missing_alt_text.confirm": "Προσθήκη εναλ κειμένου",
|
||||
"confirmations.missing_alt_text.message": "Η ανάρτησή σου περιέχει πολυμέσα χωρίς εναλλακτικό κείμενο. Η προσθήκη περιγραφών βοηθά να γίνει το περιεχόμενό σου προσβάσιμο σε περισσότερους ανθρώπους.",
|
||||
"confirmations.missing_alt_text.secondary": "Δημοσίευση όπως και να ΄χει",
|
||||
"confirmations.missing_alt_text.title": "Προσθήκη alt κειμένου;",
|
||||
"confirmations.missing_alt_text.title": "Προσθήκη εναλλακτικού κειμένου;",
|
||||
"confirmations.mute.confirm": "Αποσιώπηση",
|
||||
"confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο",
|
||||
"confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την ανάρτηση και να την ξαναγράψεις; Οι προτιμήσεις και προωθήσεις θα χαθούν και οι απαντήσεις στην αρχική ανάρτηση θα μείνουν ορφανές.",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Αφαίρεση ακολούθου",
|
||||
"confirmations.remove_from_followers.message": "Ο χρήστης {name} θα σταματήσει να σε ακολουθεί. Σίγουρα θες να συνεχίσεις;",
|
||||
"confirmations.remove_from_followers.title": "Αφαίρεση ακολούθου;",
|
||||
"confirmations.reply.confirm": "Απάντησε",
|
||||
"confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;",
|
||||
"confirmations.reply.title": "Αντικατάσταση ανάρτησης;",
|
||||
"confirmations.unfollow.confirm": "Άρση ακολούθησης",
|
||||
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
|
||||
"confirmations.unfollow.title": "Άρση ακολούθησης;",
|
||||
|
@ -275,7 +276,7 @@
|
|||
"domain_block_modal.you_will_lose_num_followers": "Θα χάσετε {followersCount, plural, one {{followersCountDisplay} ακόλουθο} other {{followersCountDisplay} ακόλουθους}} και {followingCount, plural, one {{followingCountDisplay} άτομο που ακολουθείτε} other {{followingCountDisplay} άτομα που ακολουθείτε}}.",
|
||||
"domain_block_modal.you_will_lose_relationships": "Θα χάσετε όλους τους ακόλουθους και τα άτομα που ακολουθείτε από αυτόν τον διακομιστή.",
|
||||
"domain_block_modal.you_wont_see_posts": "Δεν θα βλέπεις αναρτήσεις ή ειδοποιήσεις από χρήστες σε αυτόν το διακομιστή.",
|
||||
"domain_pill.activitypub_lets_connect": "Σού επιτρέπει να συνδεθείς και να αλληλεπιδράσεις με τους ανθρώπους όχι μόνο στο Mastodon, αλλά και σε διαφορετικές κοινωνικές εφαρμογές.",
|
||||
"domain_pill.activitypub_lets_connect": "Σου επιτρέπει να συνδεθείς και να αλληλεπιδράσεις με τους ανθρώπους όχι μόνο στο Mastodon, αλλά και σε διαφορετικές κοινωνικές εφαρμογές.",
|
||||
"domain_pill.activitypub_like_language": "Το ActivityPub είναι σαν τη γλώσσα Mastodon μιλάει με άλλα κοινωνικά δίκτυα.",
|
||||
"domain_pill.server": "Διακομιστής",
|
||||
"domain_pill.their_handle": "Το πλήρες όνομα χρήστη:",
|
||||
|
@ -321,7 +322,7 @@
|
|||
"empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμα. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.",
|
||||
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
||||
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.",
|
||||
"empty_column.followed_tags": "Δεν έχετε παρακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.",
|
||||
"empty_column.followed_tags": "Δεν έχετε ακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.",
|
||||
"empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.",
|
||||
"empty_column.home": "Η τοπική σου ροή είναι κενή! Πήγαινε στο {public} ή κάνε αναζήτηση για να ξεκινήσεις και να γνωρίσεις άλλους χρήστες.",
|
||||
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.",
|
||||
|
@ -385,7 +386,7 @@
|
|||
"follow_suggestions.similar_to_recently_followed_longer": "Παρόμοια με προφίλ που ακολούθησες πρόσφατα",
|
||||
"follow_suggestions.view_all": "Εμφάνιση όλων",
|
||||
"follow_suggestions.who_to_follow": "Ποιον να ακολουθήσεις",
|
||||
"followed_tags": "Ετικέτες που ακολουθούνται",
|
||||
"followed_tags": "Ακολουθούμενες ετικέτες",
|
||||
"footer.about": "Σχετικά με",
|
||||
"footer.directory": "Κατάλογος προφίλ",
|
||||
"footer.get_app": "Αποκτήστε την εφαρμογή",
|
||||
|
@ -416,7 +417,7 @@
|
|||
"hashtag.mute": "Σίγαση #{hashtag}",
|
||||
"hashtag.unfeature": "Να μην αναδεικνύεται στο προφίλ",
|
||||
"hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας",
|
||||
"hashtags.and_other": "…και {count, plural, one {}other {# ακόμη}}",
|
||||
"hashtags.and_other": "…και {count, plural, other {# ακόμη}}",
|
||||
"hints.profiles.followers_may_be_missing": "Μπορεί να λείπουν ακόλουθοι για αυτό το προφίλ.",
|
||||
"hints.profiles.follows_may_be_missing": "Άτομα που ακολουθούνται μπορεί να λείπουν απ' αυτό το προφίλ.",
|
||||
"hints.profiles.posts_may_be_missing": "Κάποιες αναρτήσεις από αυτό το προφίλ μπορεί να λείπουν.",
|
||||
|
@ -424,7 +425,7 @@
|
|||
"hints.profiles.see_more_follows": "Δες περισσότερα άτομα που ακολουθούνται στο {domain}",
|
||||
"hints.profiles.see_more_posts": "Δες περισσότερες αναρτήσεις στο {domain}",
|
||||
"hints.threads.replies_may_be_missing": "Απαντήσεις από άλλους διακομιστές μπορεί να λείπουν.",
|
||||
"hints.threads.see_more": "Δες περισσότερες αναρτήσεις στο {domain}",
|
||||
"hints.threads.see_more": "Δες περισσότερες απαντήσεις στο {domain}",
|
||||
"home.column_settings.show_quotes": "Εμφάνιση παραθεμάτων",
|
||||
"home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
|
||||
"home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
|
||||
|
@ -455,7 +456,7 @@
|
|||
"interaction_modal.no_account_yet": "Δεν έχεις ακόμη λογαριασμό;",
|
||||
"interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή",
|
||||
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
|
||||
"interaction_modal.title.favourite": "Favorite {name}'s post\nΠροτίμησε την ανάρτηση της/του {name}",
|
||||
"interaction_modal.title.favourite": "Αγάπησε την ανάρτηση του χρήστη {name}",
|
||||
"interaction_modal.title.follow": "Ακολούθησε {name}",
|
||||
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
|
||||
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
|
||||
|
@ -467,13 +468,13 @@
|
|||
"keyboard_shortcuts.back": "Μετάβαση πίσω",
|
||||
"keyboard_shortcuts.blocked": "Άνοιγμα λίστας αποκλεισμένων χρηστών",
|
||||
"keyboard_shortcuts.boost": "Ενίσχυση ανάρτησης",
|
||||
"keyboard_shortcuts.column": "Στήλη εστίασης",
|
||||
"keyboard_shortcuts.compose": "Περιοχή συγγραφής κειμένου εστίασης",
|
||||
"keyboard_shortcuts.column": "Εστίαση στη στήλη",
|
||||
"keyboard_shortcuts.compose": "Εστίαση στην περιοχή συγγραφής κειμένου",
|
||||
"keyboard_shortcuts.description": "Περιγραφή",
|
||||
"keyboard_shortcuts.direct": "για το άνοιγμα της στήλης ιδιωτικών επισημάνσεων",
|
||||
"keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα",
|
||||
"keyboard_shortcuts.enter": "Εμφάνιση ανάρτησης",
|
||||
"keyboard_shortcuts.favourite": "Αγαπημένη δημοσίευση",
|
||||
"keyboard_shortcuts.down": "Μετακίνηση προς τα κάτω στη λίστα",
|
||||
"keyboard_shortcuts.enter": "Άνοιγμα ανάρτησης",
|
||||
"keyboard_shortcuts.favourite": "Αγάπησε την ανάρτηση",
|
||||
"keyboard_shortcuts.favourites": "Άνοιγμα λίστας αγαπημένων",
|
||||
"keyboard_shortcuts.federated": "Άνοιγμα ροής συναλλαγών",
|
||||
"keyboard_shortcuts.heading": "Συντομεύσεις πληκτρολογίου",
|
||||
|
@ -490,13 +491,13 @@
|
|||
"keyboard_shortcuts.profile": "Άνοιγμα προφίλ συγγραφέα",
|
||||
"keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση",
|
||||
"keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης",
|
||||
"keyboard_shortcuts.search": "Γραμμή αναζήτησης εστίασης",
|
||||
"keyboard_shortcuts.search": "Εστίαση στη γραμμή αναζήτησης",
|
||||
"keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου CW",
|
||||
"keyboard_shortcuts.start": "Άνοιγμα της στήλης \"Ας ξεκινήσουμε\"",
|
||||
"keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από το CW",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων",
|
||||
"keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης",
|
||||
"keyboard_shortcuts.translate": "να μεταφράσει μια δημοσίευση",
|
||||
"keyboard_shortcuts.translate": "για να μεταφραστεί μια ανάρτηση",
|
||||
"keyboard_shortcuts.unfocus": "Αποεστίαση του πεδίου σύνθεσης/αναζήτησης",
|
||||
"keyboard_shortcuts.up": "Μετακίνηση προς τα πάνω στη λίστα",
|
||||
"lightbox.close": "Κλείσιμο",
|
||||
|
@ -559,10 +560,12 @@
|
|||
"navigation_bar.favourites": "Αγαπημένα",
|
||||
"navigation_bar.filters": "Αποσιωπημένες λέξεις",
|
||||
"navigation_bar.follow_requests": "Αιτήματα ακολούθησης",
|
||||
"navigation_bar.followed_tags": "Ετικέτες που ακολουθούνται",
|
||||
"navigation_bar.followed_tags": "Ακολουθούμενες ετικέτες",
|
||||
"navigation_bar.follows_and_followers": "Ακολουθείς και σε ακολουθούν",
|
||||
"navigation_bar.import_export": "Εισαγωγή και εξαγωγή",
|
||||
"navigation_bar.lists": "Λίστες",
|
||||
"navigation_bar.live_feed_local": "Ζωντανή ροή (τοπική)",
|
||||
"navigation_bar.live_feed_public": "Ζωντανή ροή (δημόσια)",
|
||||
"navigation_bar.logout": "Αποσύνδεση",
|
||||
"navigation_bar.moderation": "Συντονισμός",
|
||||
"navigation_bar.more": "Περισσότερα",
|
||||
|
@ -572,9 +575,9 @@
|
|||
"navigation_bar.privacy_and_reach": "Ιδιωτικότητα και προσιτότητα",
|
||||
"navigation_bar.search": "Αναζήτηση",
|
||||
"navigation_bar.search_trends": "Αναζήτηση / Τάσεις",
|
||||
"navigation_panel.collapse_followed_tags": "Σύμπτυξη μενού ετικετών που ακολουθούνται",
|
||||
"navigation_panel.collapse_followed_tags": "Σύμπτυξη μενού ετικετών που ακολουθείτε",
|
||||
"navigation_panel.collapse_lists": "Σύμπτυξη μενού λίστας",
|
||||
"navigation_panel.expand_followed_tags": "Επέκταση μενού ετικετών που ακολουθούνται",
|
||||
"navigation_panel.expand_followed_tags": "Επέκταση μενού ετικετών που ακολουθείτε",
|
||||
"navigation_panel.expand_lists": "Επέκταση μενού λίστας",
|
||||
"not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.",
|
||||
"notification.admin.report": "Ο/Η {name} ανέφερε τον {target}",
|
||||
|
@ -586,11 +589,11 @@
|
|||
"notification.admin.sign_up.name_and_others": "{name} και {count, plural, one {# ακόμη} other {# ακόμη}} έχουν εγγραφεί",
|
||||
"notification.annual_report.message": "Το #Wrapstodon {year} σε περιμένει! Αποκάλυψε τα στιγμιότυπα της χρονιάς και αξέχαστες στιγμές σου στο Mastodon!",
|
||||
"notification.annual_report.view": "Προβολή #Wrapstodon",
|
||||
"notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου",
|
||||
"notification.favourite": "{name} αγάπησε την ανάρτηση σου",
|
||||
"notification.favourite.name_and_others_with_link": "{name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ανάρτησή σου",
|
||||
"notification.favourite_pm": "Ο χρήστης {name} αγάπησε την ιδιωτική σου επισήμανση",
|
||||
"notification.favourite_pm.name_and_others_with_link": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> αγάπησαν την ιδωτική σου επισήμανση",
|
||||
"notification.follow": "Ο/Η {name} σε ακολούθησε",
|
||||
"notification.follow": "Ο χρήστης {name} σε ακολούθησε",
|
||||
"notification.follow.name_and_others": "Ο χρήστης {name} και <a>{count, plural, one {# ακόμη} other {# ακόμη}}</a> σε ακολούθησαν",
|
||||
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
|
||||
"notification.follow_request.name_and_others": "{name} και {count, plural, one {# άλλος} other {# άλλοι}} ζήτησαν να σε ακολουθήσουν",
|
||||
|
@ -723,7 +726,7 @@
|
|||
"poll_button.add_poll": "Προσθήκη δημοσκόπησης",
|
||||
"poll_button.remove_poll": "Αφαίρεση δημοσκόπησης",
|
||||
"privacy.change": "Προσαρμογή ιδιωτικότητας ανάρτησης",
|
||||
"privacy.direct.long": "Όλοι όσοι αναφέρθηκαν στη δημοσίευση",
|
||||
"privacy.direct.long": "Όλοι όσοι αναφέρθηκαν στην ανάρτηση",
|
||||
"privacy.direct.short": "Ιδιωτική επισήμανση",
|
||||
"privacy.private.long": "Μόνο οι ακόλουθοί σας",
|
||||
"privacy.private.short": "Ακόλουθοι",
|
||||
|
@ -801,7 +804,8 @@
|
|||
"report_notification.categories.spam_sentence": "ανεπιθύμητα",
|
||||
"report_notification.categories.violation": "Παραβίαση κανόνα",
|
||||
"report_notification.categories.violation_sentence": "παραβίαση κανόνα",
|
||||
"report_notification.open": "Ανοιχτή αναφορά",
|
||||
"report_notification.open": "Άνοιγμα αναφοράς",
|
||||
"search.clear": "Εκκαθάριση αναζήτησης",
|
||||
"search.no_recent_searches": "Καμία πρόσφατη αναζήτηση",
|
||||
"search.placeholder": "Αναζήτηση",
|
||||
"search.quick_action.account_search": "Προφίλ που ταιριάζουν με {x}",
|
||||
|
@ -854,7 +858,7 @@
|
|||
"status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}",
|
||||
"status.embed": "Απόκτηση κώδικα ενσωμάτωσης",
|
||||
"status.favourite": "Αγαπημένα",
|
||||
"status.favourites": "{count, plural, one {# αγαπημένο} other {# αγαπημένα}}",
|
||||
"status.favourites": "{count, plural, one {αγαπημένο} other {αγαπημένα}}",
|
||||
"status.filter": "Φιλτράρισμα αυτής της ανάρτησης",
|
||||
"status.history.created": "{name} δημιούργησε στις {date}",
|
||||
"status.history.edited": "{name} επεξεργάστηκε στις {date}",
|
||||
|
@ -879,7 +883,7 @@
|
|||
"status.reblog": "Ενίσχυση",
|
||||
"status.reblog_private": "Ενίσχυση με αρχική ορατότητα",
|
||||
"status.reblogged_by": "{name} προώθησε",
|
||||
"status.reblogs": "{count, plural, one {# ενίσχυση} other {# ενισχύσεις}}",
|
||||
"status.reblogs": "{count, plural, one {ενίσχυση} other {ενισχύσεις}}",
|
||||
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
||||
"status.redraft": "Σβήσε & ξαναγράψε",
|
||||
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
|
||||
|
@ -891,8 +895,8 @@
|
|||
"status.report": "Αναφορά @{name}",
|
||||
"status.sensitive_warning": "Ευαίσθητο περιεχόμενο",
|
||||
"status.share": "Κοινοποίηση",
|
||||
"status.show_less_all": "Δείξε λιγότερα για όλα",
|
||||
"status.show_more_all": "Δείξε περισσότερα για όλα",
|
||||
"status.show_less_all": "Δείξε λιγότερο για όλες",
|
||||
"status.show_more_all": "Δείξε περισσότερο για όλες",
|
||||
"status.show_original": "Εμφάνιση αρχικού",
|
||||
"status.title.with_attachments": "{user} δημοσίευσε {attachmentCount, plural, one {ένα συνημμένο} other {{attachmentCount} συνημμένα}}",
|
||||
"status.translate": "Μετάφραση",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.delete_list.title": "Delete list?",
|
||||
"confirmations.discard_draft.confirm": "Discard and continue",
|
||||
"confirmations.discard_draft.edit.cancel": "Resume editing",
|
||||
"confirmations.discard_draft.edit.message": "Continuing will discard any changes you have made to the post you are currently editing.",
|
||||
"confirmations.discard_draft.edit.title": "Discard changes to your post?",
|
||||
"confirmations.discard_draft.post.cancel": "Resume draft",
|
||||
"confirmations.discard_draft.post.message": "Continuing will discard the post you are currently composing.",
|
||||
"confirmations.discard_draft.post.title": "Discard your draft post?",
|
||||
"confirmations.discard_edit_media.confirm": "Discard",
|
||||
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
|
||||
"confirmations.edit.confirm": "Edit",
|
||||
"confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.edit.title": "Overwrite post?",
|
||||
"confirmations.follow_to_list.confirm": "Follow and add to list",
|
||||
"confirmations.follow_to_list.message": "You need to be following {name} to add them to a list.",
|
||||
"confirmations.follow_to_list.title": "Follow user?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Remove follower",
|
||||
"confirmations.remove_from_followers.message": "{name} will stop following you. Are you sure you want to proceed?",
|
||||
"confirmations.remove_from_followers.title": "Remove follower?",
|
||||
"confirmations.reply.confirm": "Reply",
|
||||
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.reply.title": "Overwrite post?",
|
||||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"confirmations.unfollow.title": "Unfollow user?",
|
||||
|
@ -336,6 +337,7 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||
"errors.unexpected_crash.report_issue": "Report issue",
|
||||
"explore.suggested_follows": "People",
|
||||
"explore.title": "Trending",
|
||||
"explore.trending_links": "News",
|
||||
"explore.trending_statuses": "Posts",
|
||||
"explore.trending_tags": "Hashtags",
|
||||
|
@ -547,8 +549,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "You won't see posts that mention them.",
|
||||
"mute_modal.you_wont_see_posts": "They can still see your posts, but you won't see theirs.",
|
||||
"navigation_bar.about": "About",
|
||||
"navigation_bar.account_settings": "Password and security",
|
||||
"navigation_bar.administration": "Administration",
|
||||
"navigation_bar.advanced_interface": "Open in advanced web interface",
|
||||
"navigation_bar.automated_deletion": "Automated post deletion",
|
||||
"navigation_bar.blocks": "Blocked users",
|
||||
"navigation_bar.bookmarks": "Bookmarks",
|
||||
"navigation_bar.direct": "Private mentions",
|
||||
|
@ -558,13 +562,23 @@
|
|||
"navigation_bar.follow_requests": "Follow requests",
|
||||
"navigation_bar.followed_tags": "Followed hashtags",
|
||||
"navigation_bar.follows_and_followers": "Follows and followers",
|
||||
"navigation_bar.import_export": "Import and export",
|
||||
"navigation_bar.lists": "Lists",
|
||||
"navigation_bar.live_feed_local": "Live feed (local)",
|
||||
"navigation_bar.live_feed_public": "Live feed (public)",
|
||||
"navigation_bar.logout": "Logout",
|
||||
"navigation_bar.moderation": "Moderation",
|
||||
"navigation_bar.more": "More",
|
||||
"navigation_bar.mutes": "Muted users",
|
||||
"navigation_bar.opened_in_classic_interface": "Posts, accounts, and other specific pages are opened by default in the classic web interface.",
|
||||
"navigation_bar.preferences": "Preferences",
|
||||
"navigation_bar.privacy_and_reach": "Privacy and reach",
|
||||
"navigation_bar.search": "Search",
|
||||
"navigation_bar.search_trends": "Search / Trending",
|
||||
"navigation_panel.collapse_followed_tags": "Collapse followed hashtags menu",
|
||||
"navigation_panel.collapse_lists": "Collapse list menu",
|
||||
"navigation_panel.expand_followed_tags": "Expand followed hashtags menu",
|
||||
"navigation_panel.expand_lists": "Expand list menu",
|
||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||
"notification.admin.report": "{name} reported {target}",
|
||||
"notification.admin.report_account": "{name} reported {count, plural, one {one post} other {# posts}} from {target} for {category}",
|
||||
|
@ -791,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Rule violation",
|
||||
"report_notification.categories.violation_sentence": "rule violation",
|
||||
"report_notification.open": "Open report",
|
||||
"search.clear": "Clear search",
|
||||
"search.no_recent_searches": "No recent searches",
|
||||
"search.placeholder": "Search",
|
||||
"search.quick_action.account_search": "Profiles matching {x}",
|
||||
|
@ -893,7 +908,10 @@
|
|||
"subscribed_languages.save": "Save changes",
|
||||
"subscribed_languages.target": "Change subscribed languages for {target}",
|
||||
"tabs_bar.home": "Home",
|
||||
"tabs_bar.menu": "Menu",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.publish": "New Post",
|
||||
"tabs_bar.search": "Search",
|
||||
"terms_of_service.effective_as_of": "Effective as of {date}",
|
||||
"terms_of_service.title": "Terms of Service",
|
||||
"terms_of_service.upcoming_changes_on": "Upcoming changes on {date}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Delete",
|
||||
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
|
||||
"confirmations.delete_list.title": "Delete list?",
|
||||
"confirmations.discard_draft.confirm": "Discard and continue",
|
||||
"confirmations.discard_draft.edit.cancel": "Resume editing",
|
||||
"confirmations.discard_draft.edit.message": "Continuing will discard any changes you have made to the post you are currently editing.",
|
||||
"confirmations.discard_draft.edit.title": "Discard changes to your post?",
|
||||
"confirmations.discard_draft.post.cancel": "Resume draft",
|
||||
"confirmations.discard_draft.post.message": "Continuing will discard the post you are currently composing.",
|
||||
"confirmations.discard_draft.post.title": "Discard your draft post?",
|
||||
"confirmations.discard_edit_media.confirm": "Discard",
|
||||
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
|
||||
"confirmations.edit.confirm": "Edit",
|
||||
"confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.edit.title": "Overwrite post?",
|
||||
"confirmations.follow_to_list.confirm": "Follow and add to list",
|
||||
"confirmations.follow_to_list.message": "You need to be following {name} to add them to a list.",
|
||||
"confirmations.follow_to_list.title": "Follow user?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Remove follower",
|
||||
"confirmations.remove_from_followers.message": "{name} will stop following you. Are you sure you want to proceed?",
|
||||
"confirmations.remove_from_followers.title": "Remove follower?",
|
||||
"confirmations.reply.confirm": "Reply",
|
||||
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.reply.title": "Overwrite post?",
|
||||
"confirmations.unfollow.confirm": "Unfollow",
|
||||
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
|
||||
"confirmations.unfollow.title": "Unfollow user?",
|
||||
|
|
|
@ -217,9 +217,6 @@
|
|||
"confirmations.delete_list.title": "Ĉu forigi liston?",
|
||||
"confirmations.discard_edit_media.confirm": "Forĵeti",
|
||||
"confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ la antaŭvidigo de la vidaŭdaĵo, ĉu vi forĵetu ilin malgraŭe?",
|
||||
"confirmations.edit.confirm": "Redakti",
|
||||
"confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
|
||||
"confirmations.edit.title": "Ĉu superskribi afiŝon?",
|
||||
"confirmations.follow_to_list.confirm": "Sekvi kaj aldoni al listo",
|
||||
"confirmations.follow_to_list.message": "Vi devas sekvi {name} por aldoni ilin al listo.",
|
||||
"confirmations.follow_to_list.title": "Ĉu sekvi uzanton?",
|
||||
|
@ -237,9 +234,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Forigi sekvanton",
|
||||
"confirmations.remove_from_followers.message": "{name} ne plu sekvos vin. Ĉu vi certas ke vi volas daŭri?",
|
||||
"confirmations.remove_from_followers.title": "Forigi sekvanton?",
|
||||
"confirmations.reply.confirm": "Respondi",
|
||||
"confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
|
||||
"confirmations.reply.title": "Ĉu superskribi afiŝon?",
|
||||
"confirmations.unfollow.confirm": "Ne plu sekvi",
|
||||
"confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?",
|
||||
"confirmations.unfollow.title": "Ĉu ĉesi sekvi uzanton?",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Eliminar",
|
||||
"confirmations.delete_list.message": "¿Estás seguro que querés eliminar permanentemente esta lista?",
|
||||
"confirmations.delete_list.title": "¿Eliminar lista?",
|
||||
"confirmations.discard_draft.confirm": "Descartar y continuar",
|
||||
"confirmations.discard_draft.edit.cancel": "Reanudar edición",
|
||||
"confirmations.discard_draft.edit.message": "Al continuar, se descartará cualquier cambio que hayás hecho en el mensaje que estás editando actualmente.",
|
||||
"confirmations.discard_draft.edit.title": "¿Descartar cambios en tu mensaje?",
|
||||
"confirmations.discard_draft.post.cancel": "Reanudar borrador",
|
||||
"confirmations.discard_draft.post.message": "Al continuar, se descartará el mensaje que estás componiendo actualmente.",
|
||||
"confirmations.discard_draft.post.title": "¿Descartar tu borrador?",
|
||||
"confirmations.discard_edit_media.confirm": "Descartar",
|
||||
"confirmations.discard_edit_media.message": "Tenés cambios sin guardar en la descripción de medios o en la vista previa, ¿querés descartarlos de todos modos?",
|
||||
"confirmations.edit.confirm": "Editar",
|
||||
"confirmations.edit.message": "Editar ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?",
|
||||
"confirmations.edit.title": "¿Sobrescribir mensaje?",
|
||||
"confirmations.follow_to_list.confirm": "Seguir y agregar a la lista",
|
||||
"confirmations.follow_to_list.message": "Necesitás seguir a {name} para agregarle a una lista.",
|
||||
"confirmations.follow_to_list.title": "¿Querés seguirle?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Quitar seguidor",
|
||||
"confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que querés continuar?",
|
||||
"confirmations.remove_from_followers.title": "¿Quitar seguidor?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?",
|
||||
"confirmations.reply.title": "¿Sobrescribir mensaje?",
|
||||
"confirmations.unfollow.confirm": "Dejar de seguir",
|
||||
"confirmations.unfollow.message": "¿Estás seguro que querés dejar de seguir a {name}?",
|
||||
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
|
||||
|
@ -857,7 +858,7 @@
|
|||
"status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
|
||||
"status.embed": "Obtener código para insertar",
|
||||
"status.favourite": "Marcar como favorito",
|
||||
"status.favourites": "{count, plural, one {# vez marcado como favorito} other {# veces marcado como favorito}}",
|
||||
"status.favourites": "{count, plural, one {vez marcado como favorito} other {veces marcado como favorito}}",
|
||||
"status.filter": "Filtrar este mensaje",
|
||||
"status.history.created": "Creado por {name}, {date}",
|
||||
"status.history.edited": "Editado por {name}, {date}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Eliminar",
|
||||
"confirmations.delete_list.message": "¿Estás seguro de que quieres eliminar esta lista de forma permanente?",
|
||||
"confirmations.delete_list.title": "¿Deseas eliminar la lista?",
|
||||
"confirmations.discard_draft.confirm": "Descartar y continuar",
|
||||
"confirmations.discard_draft.edit.cancel": "Reanudar la edición",
|
||||
"confirmations.discard_draft.edit.message": "La continuación descartará cualquier cambio que hayas realizado en la publicación que estás editando en este momento.",
|
||||
"confirmations.discard_draft.edit.title": "¿Deseas descartar los cambios en tu publicación?",
|
||||
"confirmations.discard_draft.post.cancel": "Reanudar el borrador",
|
||||
"confirmations.discard_draft.post.message": "La continuación descartará la publicación que estás redactando en este momento.",
|
||||
"confirmations.discard_draft.post.title": "¿Deseas descartar tu borrador?",
|
||||
"confirmations.discard_edit_media.confirm": "Descartar",
|
||||
"confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo, ¿deseas descartarlos de cualquier manera?",
|
||||
"confirmations.edit.confirm": "Editar",
|
||||
"confirmations.edit.message": "Editar sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?",
|
||||
"confirmations.edit.title": "¿Sobreescribir publicación?",
|
||||
"confirmations.follow_to_list.confirm": "Seguir y agregar a la lista",
|
||||
"confirmations.follow_to_list.message": "Tienes que seguir a {name} para añadirlo a una lista.",
|
||||
"confirmations.follow_to_list.title": "¿Seguir a usuario?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Eliminar seguidor",
|
||||
"confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que quieres continuar?",
|
||||
"confirmations.remove_from_followers.title": "¿Eliminar seguidor?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?",
|
||||
"confirmations.reply.title": "¿Deseas sobreescribir la publicación?",
|
||||
"confirmations.unfollow.confirm": "Dejar de seguir",
|
||||
"confirmations.unfollow.message": "¿Estás seguro de que quieres dejar de seguir a {name}?",
|
||||
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Eliminar",
|
||||
"confirmations.delete_list.message": "¿Seguro que quieres borrar esta lista permanentemente?",
|
||||
"confirmations.delete_list.title": "¿Eliminar lista?",
|
||||
"confirmations.discard_draft.confirm": "Descartar y continuar",
|
||||
"confirmations.discard_draft.edit.cancel": "Continuar edición",
|
||||
"confirmations.discard_draft.edit.message": "Continuar descartará cualquier cambio que hayas realizado en la publicación que estás editando actualmente.",
|
||||
"confirmations.discard_draft.edit.title": "¿Descartar cambios en tu publicación?",
|
||||
"confirmations.discard_draft.post.cancel": "Retomar el borrador",
|
||||
"confirmations.discard_draft.post.message": "Continuar descartará el mensaje que estás escribiendo actualmente.",
|
||||
"confirmations.discard_draft.post.title": "¿Descartar tu borrador?",
|
||||
"confirmations.discard_edit_media.confirm": "Descartar",
|
||||
"confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo audiovisual, ¿descartarlos de todos modos?",
|
||||
"confirmations.edit.confirm": "Editar",
|
||||
"confirmations.edit.message": "Editar ahora reemplazará el mensaje que estás escribiendo. ¿Seguro que quieres proceder?",
|
||||
"confirmations.edit.title": "¿Sobrescribir publicación?",
|
||||
"confirmations.follow_to_list.confirm": "Seguir y añadir a la lista",
|
||||
"confirmations.follow_to_list.message": "Necesitas seguir a {name} para agregarlo a una lista.",
|
||||
"confirmations.follow_to_list.title": "¿Seguir usuario?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Eliminar seguidor",
|
||||
"confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que quieres continuar?",
|
||||
"confirmations.remove_from_followers.title": "¿Eliminar seguidor?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Seguro que deseas continuar?",
|
||||
"confirmations.reply.title": "¿Sobrescribir publicación?",
|
||||
"confirmations.unfollow.confirm": "Dejar de seguir",
|
||||
"confirmations.unfollow.message": "¿Seguro que quieres dejar de seguir a {name}?",
|
||||
"confirmations.unfollow.title": "¿Dejar de seguir al usuario?",
|
||||
|
@ -794,7 +795,7 @@
|
|||
"report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.",
|
||||
"report.unfollow": "Dejar de seguir a @{name}",
|
||||
"report.unfollow_explanation": "Estás siguiendo esta cuenta. Para dejar de ver sus publicaciones en tu página de inicio, deja de seguirla.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} publicación adjunta} other {{count} publicaciones adjuntas}}",
|
||||
"report_notification.categories.legal": "Legal",
|
||||
"report_notification.categories.legal_sentence": "contenido ilegal",
|
||||
"report_notification.categories.other": "Otros",
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
"column.domain_blocks": "Peidetud domeenid",
|
||||
"column.edit_list": "Muuda loendit",
|
||||
"column.favourites": "Lemmikud",
|
||||
"column.firehose": "Laiv lõimed",
|
||||
"column.firehose": "Postitused reaalajas",
|
||||
"column.follow_requests": "Jälgimistaotlused",
|
||||
"column.home": "Kodu",
|
||||
"column.list_members": "Halda loendi liikmeid",
|
||||
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Kustuta",
|
||||
"confirmations.delete_list.message": "Oled kindel, et soovid selle loetelu pöördumatult kustutada?",
|
||||
"confirmations.delete_list.title": "Kustutada loetelu?",
|
||||
"confirmations.discard_draft.confirm": "Loobu ja jätka",
|
||||
"confirmations.discard_draft.edit.cancel": "Jätka muutmist",
|
||||
"confirmations.discard_draft.edit.message": "Jätkates loobud kõikidest sellese postitusse tehtud muudatustest.",
|
||||
"confirmations.discard_draft.edit.title": "Kas loobud oma postituse muudatustest?",
|
||||
"confirmations.discard_draft.post.cancel": "Jätka kavandi koostamist",
|
||||
"confirmations.discard_draft.post.message": "Jätkates loobud hetkel koostamisel postituse kõikidest muudatustest.",
|
||||
"confirmations.discard_draft.post.title": "Kas loobud postituse kavandist?",
|
||||
"confirmations.discard_edit_media.confirm": "Hülga",
|
||||
"confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
|
||||
"confirmations.edit.confirm": "Muuda",
|
||||
"confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
|
||||
"confirmations.edit.title": "Kirjutada postitus üle?",
|
||||
"confirmations.follow_to_list.confirm": "Jälgi ja lisa loetellu",
|
||||
"confirmations.follow_to_list.message": "Pead jälgima kasutajat {name}, et lisada teda loetellu.",
|
||||
"confirmations.follow_to_list.title": "Jälgida kasutajat?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Eemalda jälgija",
|
||||
"confirmations.remove_from_followers.message": "{name} lõpetab sellega sinu jälgimise. Kas oled kindel, et soovid jätkata?",
|
||||
"confirmations.remove_from_followers.title": "Kas eemaldame jälgija?",
|
||||
"confirmations.reply.confirm": "Vasta",
|
||||
"confirmations.reply.message": "Praegu vastamine kirjutab hetkel koostatava sõnumi üle. Oled kindel, et soovid jätkata?",
|
||||
"confirmations.reply.title": "Kirjutada postitus üle?",
|
||||
"confirmations.unfollow.confirm": "Ära jälgi",
|
||||
"confirmations.unfollow.message": "Oled kindel, et ei soovi rohkem jälgida kasutajat {name}?",
|
||||
"confirmations.unfollow.title": "Ei jälgi enam kasutajat?",
|
||||
|
@ -336,7 +337,7 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale",
|
||||
"errors.unexpected_crash.report_issue": "Teavita veast",
|
||||
"explore.suggested_follows": "Inimesed",
|
||||
"explore.title": "Populaarsust kohuv",
|
||||
"explore.title": "Populaarsust koguv",
|
||||
"explore.trending_links": "Uudised",
|
||||
"explore.trending_statuses": "Postitused",
|
||||
"explore.trending_tags": "Sildid",
|
||||
|
@ -388,7 +389,7 @@
|
|||
"followed_tags": "Jälgitavad märksõnad",
|
||||
"footer.about": "Teave",
|
||||
"footer.directory": "Profiilikataloog",
|
||||
"footer.get_app": "Tõmba äpp",
|
||||
"footer.get_app": "Laadi rakendus",
|
||||
"footer.keyboard_shortcuts": "Kiirklahvid",
|
||||
"footer.privacy_policy": "Isikuandmete kaitse",
|
||||
"footer.source_code": "Lähtekood",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad",
|
||||
"navigation_bar.import_export": "Import ja eksport",
|
||||
"navigation_bar.lists": "Loetelud",
|
||||
"navigation_bar.live_feed_local": "Ajajoon reaalajas (sinu server)",
|
||||
"navigation_bar.live_feed_public": "Ajajoon reaalajas (Födiversum)",
|
||||
"navigation_bar.logout": "Logi välja",
|
||||
"navigation_bar.moderation": "Modereerimine",
|
||||
"navigation_bar.more": "Lisavalikud",
|
||||
|
@ -571,7 +574,10 @@
|
|||
"navigation_bar.preferences": "Eelistused",
|
||||
"navigation_bar.privacy_and_reach": "Privaatsus ja ulatus",
|
||||
"navigation_bar.search": "Otsing",
|
||||
"navigation_bar.search_trends": "Otsi / Populaarsust koguv",
|
||||
"navigation_panel.collapse_followed_tags": "Ahenda jälgitavate teemaviidete menüü",
|
||||
"navigation_panel.collapse_lists": "Ahenda loendimenüü",
|
||||
"navigation_panel.expand_followed_tags": "Ava jälgitavate teemaviidete menüü",
|
||||
"navigation_panel.expand_lists": "Laienda loendimenüüd",
|
||||
"not_signed_in_indicator.not_signed_in": "Pead sisse logima, et saada ligipääsu sellele ressursile.",
|
||||
"notification.admin.report": "{name} saatis teavituse {target} kohta",
|
||||
|
@ -799,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Reeglite rikkumine",
|
||||
"report_notification.categories.violation_sentence": "reeglite rikkumine",
|
||||
"report_notification.open": "Ava teavitus",
|
||||
"search.clear": "Tühjenda otsing",
|
||||
"search.no_recent_searches": "Pole viimatisi otsinguid",
|
||||
"search.placeholder": "Otsi",
|
||||
"search.quick_action.account_search": "Sobivaid profiile {x}",
|
||||
|
@ -824,7 +831,7 @@
|
|||
"search_results.statuses": "Postitused",
|
||||
"search_results.title": "Otsi märksõna: {q}",
|
||||
"server_banner.about_active_users": "Inimesed, kes kasutavad seda serverit viimase 30 päeva jooksul (kuu aktiivsed kasutajad)",
|
||||
"server_banner.active_users": "aktiivsed kasutajad",
|
||||
"server_banner.active_users": "aktiivset kasutajaid",
|
||||
"server_banner.administered_by": "Administraator:",
|
||||
"server_banner.is_one_of_many": "{domain} on üks paljudest sõltumatutest Mastodoni serveritest, mida saab fediversumis osalemiseks kasutada.",
|
||||
"server_banner.server_stats": "Serveri statistika:",
|
||||
|
@ -851,7 +858,7 @@
|
|||
"status.edited_x_times": "Muudetud {count, plural, one{{count} kord} other {{count} korda}}",
|
||||
"status.embed": "Hangi manustamiskood",
|
||||
"status.favourite": "Lemmik",
|
||||
"status.favourites": "{count, plural, one {lemmik} other {lemmikud}}",
|
||||
"status.favourites": "{count, plural, one {lemmik} other {lemmikut}}",
|
||||
"status.filter": "Filtreeri seda postitust",
|
||||
"status.history.created": "{name} lõi {date}",
|
||||
"status.history.edited": "{name} muutis {date}",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"about.blocks": "Moderatutako zerbitzariak",
|
||||
"about.contact": "Kontaktua:",
|
||||
"about.default_locale": "Lehenetsia",
|
||||
"about.disclaimer": "Mastodon software libre eta kode irekikoa da, eta Mastodon gGmbH-ren marka erregistratua.",
|
||||
"about.domain_blocks.no_reason_available": "Arrazoia ez dago eskuragarri",
|
||||
"about.domain_blocks.preamble": "Mastodonek orokorrean aukera ematen dizu fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikusi eta haiekin komunikatzeko. Zerbitzari zehatz honi ezarritako salbuespenak hauek dira.",
|
||||
|
@ -8,6 +9,7 @@
|
|||
"about.domain_blocks.silenced.title": "Mugatua",
|
||||
"about.domain_blocks.suspended.explanation": "Ez da zerbitzari honetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari honetako erabiltzaileekin komunikatzea ezinezkoa eginez.",
|
||||
"about.domain_blocks.suspended.title": "Kanporatua",
|
||||
"about.language_label": "Hizkuntza",
|
||||
"about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.",
|
||||
"about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua",
|
||||
"about.rules": "Zerbitzariaren arauak",
|
||||
|
@ -19,13 +21,20 @@
|
|||
"account.block_domain": "Blokeatu {domain} domeinua",
|
||||
"account.block_short": "Blokeatu",
|
||||
"account.blocked": "Blokeatuta",
|
||||
"account.blocking": "Eragotzitakoak",
|
||||
"account.cancel_follow_request": "Baztertu jarraitzeko eskaera",
|
||||
"account.copy": "Kopiatu profilerako esteka",
|
||||
"account.direct": "Aipatu pribatuki @{name}",
|
||||
"account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzaileak argitaratzean",
|
||||
"account.domain_blocking": "Eragotzitako domeinua",
|
||||
"account.edit_profile": "Editatu profila",
|
||||
"account.enable_notifications": "Jakinarazi @{name} erabiltzaileak argitaratzean",
|
||||
"account.endorse": "Nabarmendu profilean",
|
||||
"account.familiar_followers_one": "{name1}-k jarraitzen du",
|
||||
"account.familiar_followers_two": "{name1}-k eta {name2}-k jarraitzen dute",
|
||||
"account.featured": "Gailenak",
|
||||
"account.featured.accounts": "Profilak",
|
||||
"account.featured.hashtags": "Traolak",
|
||||
"account.featured_tags.last_status_at": "Azken bidalketa {date} datan",
|
||||
"account.featured_tags.last_status_never": "Bidalketarik ez",
|
||||
"account.follow": "Jarraitu",
|
||||
|
@ -33,9 +42,11 @@
|
|||
"account.followers": "Jarraitzaileak",
|
||||
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} jarraitzaile} other {{counter} jarraitzaile}}",
|
||||
"account.followers_you_know_counter": "{counter} ezagutzen dituzu",
|
||||
"account.following": "Jarraitzen",
|
||||
"account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}",
|
||||
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
|
||||
"account.follows_you": "Jarraitzen zaitu",
|
||||
"account.go_to_profile": "Joan profilera",
|
||||
"account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak",
|
||||
"account.in_memoriam": "Oroimenezkoa.",
|
||||
|
@ -50,18 +61,23 @@
|
|||
"account.mute_notifications_short": "Mututu jakinarazpenak",
|
||||
"account.mute_short": "Mututu",
|
||||
"account.muted": "Mutututa",
|
||||
"account.muting": "Isilarazitakoak",
|
||||
"account.mutual": "Elkar jarraitzen duzue",
|
||||
"account.no_bio": "Ez da deskribapenik eman.",
|
||||
"account.open_original_page": "Ireki jatorrizko orria",
|
||||
"account.posts": "Bidalketa",
|
||||
"account.posts_with_replies": "Bidalketak eta erantzunak",
|
||||
"account.remove_from_followers": "Kendu {name} zure jarraitzaileengandik",
|
||||
"account.report": "Salatu @{name}",
|
||||
"account.requested": "Onarpenaren zain. Egin klik jarraipen-eskaera ezeztatzeko",
|
||||
"account.requested_follow": "{name}-(e)k zu jarraitzeko eskaera egin du",
|
||||
"account.requests_to_follow_you": "Zu jarraitzeko eskaera egin du",
|
||||
"account.share": "Partekatu @{name} erabiltzailearen profila",
|
||||
"account.show_reblogs": "Erakutsi @{name} erabiltzailearen bultzadak",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}",
|
||||
"account.unblock": "Desblokeatu @{name}",
|
||||
"account.unblock_domain": "Berriz erakutsi {domain}",
|
||||
"account.unblock_domain_short": "Desblokeatu",
|
||||
"account.unblock_short": "Desblokeatu",
|
||||
"account.unendorse": "Ez nabarmendu profilean",
|
||||
"account.unfollow": "Utzi jarraitzeari",
|
||||
|
@ -87,10 +103,13 @@
|
|||
"alt_text_modal.add_text_from_image": "Gehitu testua iruditik",
|
||||
"alt_text_modal.cancel": "Utzi",
|
||||
"alt_text_modal.change_thumbnail": "Aldatu koadro txikia",
|
||||
"alt_text_modal.describe_for_people_with_hearing_impairments": "Deskribatu hau entzumen arazoak dituzten pertsonentzat…",
|
||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Deskribatu hau ikusmen arazoak dituzten pertsonentzat…",
|
||||
"alt_text_modal.done": "Egina",
|
||||
"announcement.announcement": "Iragarpena",
|
||||
"annual_report.summary.followers.followers": "jarraitzaileak",
|
||||
"annual_report.summary.followers.total": "{count} guztira",
|
||||
"annual_report.summary.here_it_is": "Hona hemen zure {year}. urtearen bilduma:",
|
||||
"annual_report.summary.highlighted_post.by_favourites": "egindako bidalketa gogokoena",
|
||||
"annual_report.summary.highlighted_post.by_reblogs": "egindako bidalketa zabalduena",
|
||||
"annual_report.summary.highlighted_post.by_replies": "erantzun gehien izan dituen bidalketa",
|
||||
|
@ -192,11 +211,14 @@
|
|||
"confirmations.delete_list.confirm": "Ezabatu",
|
||||
"confirmations.delete_list.message": "Ziur behin betiko ezabatu nahi duzula zerrenda hau?",
|
||||
"confirmations.delete_list.title": "Ezabatu zerrenda?",
|
||||
"confirmations.discard_draft.confirm": "Baztertu eta jarraitu",
|
||||
"confirmations.discard_draft.edit.cancel": "Berrekin edizioari",
|
||||
"confirmations.discard_draft.edit.message": "Jarraitzeak editatzen ari zaren mezuan egindako aldaketak baztertuko ditu.",
|
||||
"confirmations.discard_draft.edit.title": "Baztertu zure argitalpenari egindako aldaketak?",
|
||||
"confirmations.discard_draft.post.cancel": "Zirriborroa berrekin",
|
||||
"confirmations.discard_draft.post.title": "Zure argitalpenaren zirriborroa baztertu nahi duzu?",
|
||||
"confirmations.discard_edit_media.confirm": "Baztertu",
|
||||
"confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?",
|
||||
"confirmations.edit.confirm": "Editatu",
|
||||
"confirmations.edit.message": "Orain editatzen baduzu, une honetan idazten ari zaren mezua gainidatziko da. Ziur jarraitu nahi duzula?",
|
||||
"confirmations.edit.title": "Gainidatzi bidalketa?",
|
||||
"confirmations.follow_to_list.confirm": "Jarraitu eta zerrendan sartu",
|
||||
"confirmations.follow_to_list.message": "{name} jarraitu behar duzu zerrenda batean sartzeko.",
|
||||
"confirmations.follow_to_list.title": "Erabiltzailea jarraitu?",
|
||||
|
@ -204,15 +226,16 @@
|
|||
"confirmations.logout.message": "Ziur saioa amaitu nahi duzula?",
|
||||
"confirmations.logout.title": "Itxi saioa?",
|
||||
"confirmations.missing_alt_text.confirm": "Gehitu testu alternatiboa",
|
||||
"confirmations.missing_alt_text.message": "Zure argitalpenak \"alt text\"-urik gabeko multimedia edukia dauka. Deskribapenak gehitzeak zure edukia jende gehiagorentzat eskuragarri jartzen laguntzen du.",
|
||||
"confirmations.missing_alt_text.secondary": "Bidali edonola ere",
|
||||
"confirmations.missing_alt_text.title": "Testu alternatiboa gehitu?",
|
||||
"confirmations.mute.confirm": "Mututu",
|
||||
"confirmations.redraft.confirm": "Ezabatu eta berridatzi",
|
||||
"confirmations.redraft.message": "Ziur argitalpen hau ezabatu eta zirriborroa berriro egitea nahi duzula? Gogokoak eta bultzadak galduko dira, eta jatorrizko argitalpenaren erantzunak zurtz geratuko dira.",
|
||||
"confirmations.redraft.title": "Ezabatu eta berridatzi bidalketa?",
|
||||
"confirmations.reply.confirm": "Erantzun",
|
||||
"confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?",
|
||||
"confirmations.reply.title": "Gainidatzi bidalketa?",
|
||||
"confirmations.remove_from_followers.confirm": "Jarraitzailea Kendu",
|
||||
"confirmations.remove_from_followers.message": "{name}-k zu jarraitzeari utziko dio. Seguru zaude jarraitu nahi duzula?",
|
||||
"confirmations.remove_from_followers.title": "Jarraitzailea kendu nahi duzu?",
|
||||
"confirmations.unfollow.confirm": "Utzi jarraitzeari",
|
||||
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
|
||||
"confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?",
|
||||
|
@ -234,12 +257,14 @@
|
|||
"disabled_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan.",
|
||||
"dismissable_banner.community_timeline": "Hauek dira {domain} zerbitzarian ostatatutako kontuen bidalketa publiko berrienak.",
|
||||
"dismissable_banner.dismiss": "Baztertu",
|
||||
"dismissable_banner.public_timeline": "Hauek dira {domain}-eko jendeak jarraitzen dituen fedibertsoko erabiltzaileen azken mezu publikoak.",
|
||||
"domain_block_modal.block": "Blokeatu zerbitzaria",
|
||||
"domain_block_modal.block_account_instead": "Blokeatu @{name} bestela",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Zerbitzari honetako jendea zure argitalpen zaharrekin elkarreragin dezake.",
|
||||
"domain_block_modal.they_cant_follow": "Zerbitzari honetako inork ezin zaitu jarraitu.",
|
||||
"domain_block_modal.they_wont_know": "Ez dute jakingo blokeatuak izan direnik.",
|
||||
"domain_block_modal.title": "Domeinua blokeatu nahi duzu?",
|
||||
"domain_block_modal.you_will_lose_relationships": "Instantzia honetatik jarraitzen dituzun jarraitzaile eta pertsona guztiak galduko dituzu.",
|
||||
"domain_block_modal.you_wont_see_posts": "Ez dituzu zerbitzari honetako erabiltzaileen argitalpenik edota jakinarazpenik ikusiko.",
|
||||
"domain_pill.activitypub_lets_connect": "Mastodon-en ez ezik, beste sare sozialen aplikazioetako jendearekin konektatzea eta harremanetan jartzea uzten dizu.",
|
||||
"domain_pill.activitypub_like_language": "ActivityPub, Mastodon-ek beste sare sozialekin hitz egiteko erabiltzen duen hizkuntza bezalakoxea da.",
|
||||
|
@ -271,6 +296,9 @@
|
|||
"emoji_button.search_results": "Bilaketaren emaitzak",
|
||||
"emoji_button.symbols": "Sinboloak",
|
||||
"emoji_button.travel": "Bidaiak eta tokiak",
|
||||
"empty_column.account_featured.me": "Oraindik ez duzu ezer nabarmendu. Ba al zenekien gehien erabiltzen dituzun traolak eta baita zure lagunen kontuak ere zure profilean nabarmendu ditzakezula?",
|
||||
"empty_column.account_featured.other": "{acct}-ek ez du ezer nabarmendu oraindik. Ba al zenekien gehien erabiltzen dituzun traolak eta baita zure lagunen kontuak ere zure profilean nabarmendu ditzakezula?",
|
||||
"empty_column.account_featured_other.unknown": "Kontu honek ez du ezer nabarmendu oraindik.",
|
||||
"empty_column.account_hides_collections": "Erabiltzaile honek informazio hau erabilgarri ez egotea aukeratu du.",
|
||||
"empty_column.account_suspended": "Kanporatutako kontua",
|
||||
"empty_column.account_timeline": "Ez dago bidalketarik hemen!",
|
||||
|
@ -299,9 +327,14 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
|
||||
"errors.unexpected_crash.report_issue": "Eman arazoaren berri",
|
||||
"explore.suggested_follows": "Jendea",
|
||||
"explore.title": "Joerak",
|
||||
"explore.trending_links": "Berriak",
|
||||
"explore.trending_statuses": "Tutak",
|
||||
"explore.trending_tags": "Traolak",
|
||||
"featured_carousel.next": "Hurrengoa",
|
||||
"featured_carousel.post": "Argitaratu",
|
||||
"featured_carousel.previous": "Aurrekoa",
|
||||
"featured_carousel.slide": "{total}-tik {index}",
|
||||
"filter_modal.added.context_mismatch_explanation": "Iragazki-kategoria hau ez zaio aplikatzen bidalketa honetara sartzeko erabili duzun testuinguruari. Bidalketa testuinguru horretan ere iragaztea nahi baduzu, iragazkia editatu beharko duzu.",
|
||||
"filter_modal.added.context_mismatch_title": "Testuingurua ez dator bat!",
|
||||
"filter_modal.added.expired_explanation": "Iragazki kategoria hau iraungi da, eragina izan dezan bere iraungitze-data aldatu beharko duzu.",
|
||||
|
@ -354,6 +387,8 @@
|
|||
"generic.saved": "Gordea",
|
||||
"getting_started.heading": "Menua",
|
||||
"hashtag.admin_moderation": "#{name}-(r)en moderazio-interfazea ireki",
|
||||
"hashtag.browse": "Arakatu bidalketak #{hashtag}(e)n",
|
||||
"hashtag.browse_from_account": "Arakatu @{name}(r)en bidalketak #{hashtag}(e)n",
|
||||
"hashtag.column_header.tag_mode.all": "eta {osagarria}",
|
||||
"hashtag.column_header.tag_mode.any": "edo {osagarria}",
|
||||
"hashtag.column_header.tag_mode.none": "gabe {osagarria}",
|
||||
|
@ -366,7 +401,10 @@
|
|||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} parte-hartzaile} other {{counter} parte-hartzaile}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} argitalpen} other {{counter} argitalpen}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} argitalpen} other {{counter} argitalpen}} gaur",
|
||||
"hashtag.feature": "Nabarmendu profilean",
|
||||
"hashtag.follow": "Jarraitu traolari",
|
||||
"hashtag.mute": "Mututu #{hashtag}",
|
||||
"hashtag.unfeature": "Ez nabarmendu profilean",
|
||||
"hashtag.unfollow": "Utzi traola jarraitzeari",
|
||||
"hashtags.and_other": "…eta {count, plural, one {}other {# gehiago}}",
|
||||
"hints.profiles.followers_may_be_missing": "Baliteke profil honen jarraitzaile guztiak ez agertzea.",
|
||||
|
@ -377,6 +415,7 @@
|
|||
"hints.profiles.see_more_posts": "Ikusi bidalketa gehiago {domain}-(e)n",
|
||||
"hints.threads.replies_may_be_missing": "Baliteke beste zerbitzari batzuen erantzun batzuk ez erakustea.",
|
||||
"hints.threads.see_more": "Ikusi erantzun gehiago {domain}-(e)n",
|
||||
"home.column_settings.show_quotes": "Erakutsi aipamenak",
|
||||
"home.column_settings.show_reblogs": "Erakutsi bultzadak",
|
||||
"home.column_settings.show_replies": "Erakutsi erantzunak",
|
||||
"home.hide_announcements": "Ezkutatu iragarpenak",
|
||||
|
@ -395,6 +434,11 @@
|
|||
"ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?",
|
||||
"ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?",
|
||||
"ignore_notifications_modal.private_mentions_title": "Eskatu gabeko aipamen pribatuen jakinarazpenei ez ikusiarena egin?",
|
||||
"info_button.label": "Laguntza",
|
||||
"interaction_modal.action.favourite": "Jarraitzeko, zure kontutik atsegindu behar duzu.",
|
||||
"interaction_modal.action.follow": "Jarraitzeko zure kontutik jarraitu behar duzu.",
|
||||
"interaction_modal.action.reply": "Jarraitzeko zure kontutik erantzun behar duzu.",
|
||||
"interaction_modal.action.vote": "Jarraitzeko, zure kontutik bozkatu behar duzu.",
|
||||
"interaction_modal.go": "Joan",
|
||||
"interaction_modal.no_account_yet": "Ez al duzu konturik oraindik?",
|
||||
"interaction_modal.on_another_server": "Beste zerbitzari batean",
|
||||
|
@ -439,11 +483,14 @@
|
|||
"keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "multimedia erakutsi/ezkutatzeko",
|
||||
"keyboard_shortcuts.toot": "Hasi bidalketa berri bat",
|
||||
"keyboard_shortcuts.translate": "bidalketa itzultzeko",
|
||||
"keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
|
||||
"keyboard_shortcuts.up": "zerrendan gora mugitzea",
|
||||
"lightbox.close": "Itxi",
|
||||
"lightbox.next": "Hurrengoa",
|
||||
"lightbox.previous": "Aurrekoa",
|
||||
"lightbox.zoom_in": "Zooma egungo tamainara",
|
||||
"lightbox.zoom_out": "Zooma egokitzeko",
|
||||
"limited_account_hint.action": "Erakutsi profila hala ere",
|
||||
"limited_account_hint.title": "Profil hau ezkutatu egin dute {domain} zerbitzariko moderatzaileek.",
|
||||
"link_preview.author": "Egilea: {name}",
|
||||
|
@ -453,13 +500,24 @@
|
|||
"lists.add_to_list": "Gehitu zerrendara",
|
||||
"lists.add_to_lists": "Gehitu {name} zerrendetara",
|
||||
"lists.create": "Sortu",
|
||||
"lists.create_a_list_to_organize": "Sortu zerrenda berria zure Hasierako jarioa antolatzeko",
|
||||
"lists.create_list": "Sortu zerrenda",
|
||||
"lists.delete": "Ezabatu zerrenda",
|
||||
"lists.done": "Egina",
|
||||
"lists.edit": "Editatu zerrenda",
|
||||
"lists.exclusive": "Ezkutatu kideak Hasieran",
|
||||
"lists.exclusive_hint": "Norbait zerrenda honetan badago, ezkutatu zure Hasierako jariotik mezuak bi aldiz ez ikusteko.",
|
||||
"lists.find_users_to_add": "Bilatu erabiltzaileak gehitzeko",
|
||||
"lists.list_name": "Zerrenda izena",
|
||||
"lists.new_list_name": "Zerrenda izen berria",
|
||||
"lists.no_lists_yet": "Ez duzu zerrendarik oraindik.",
|
||||
"lists.no_members_yet": "Ez duzu kiderik oraindik.",
|
||||
"lists.no_results_found": "Ez da emaitzarik aurkitu.",
|
||||
"lists.remove_member": "Ezabatu",
|
||||
"lists.replies_policy.followed": "Jarraitutako edozein erabiltzaile",
|
||||
"lists.replies_policy.list": "Zerrendako kideak",
|
||||
"lists.replies_policy.none": "Bat ere ez",
|
||||
"lists.save": "Gorde",
|
||||
"lists.search": "Bilatu",
|
||||
"load_pending": "{count, plural, one {elementu berri #} other {# elementu berri}}",
|
||||
"loading_indicator.label": "Kargatzen…",
|
||||
|
@ -475,8 +533,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "Ez duzu ikusiko bera aipatzen duen argitalpenik.",
|
||||
"mute_modal.you_wont_see_posts": "Zure argitalpenak ikus ditzake, baina ez dituzu bereak ikusiko.",
|
||||
"navigation_bar.about": "Honi buruz",
|
||||
"navigation_bar.account_settings": "Pasahitza eta segurtasuna",
|
||||
"navigation_bar.administration": "Administrazioa",
|
||||
"navigation_bar.advanced_interface": "Ireki web interfaze aurreratuan",
|
||||
"navigation_bar.automated_deletion": "Bidalketa automatikoaren ezabaketa",
|
||||
"navigation_bar.blocks": "Blokeatutako erabiltzaileak",
|
||||
"navigation_bar.bookmarks": "Laster-markak",
|
||||
"navigation_bar.direct": "Aipamen pribatuak",
|
||||
|
@ -486,13 +546,19 @@
|
|||
"navigation_bar.follow_requests": "Jarraitzeko eskaerak",
|
||||
"navigation_bar.followed_tags": "Jarraitutako traolak",
|
||||
"navigation_bar.follows_and_followers": "Jarraitutakoak eta jarraitzaileak",
|
||||
"navigation_bar.import_export": "Inportazioa eta esportazioa",
|
||||
"navigation_bar.lists": "Zerrendak",
|
||||
"navigation_bar.live_feed_local": "Zuzeneko jarioa (lokala)",
|
||||
"navigation_bar.live_feed_public": "Zuzeneko jarioa (publikoa)",
|
||||
"navigation_bar.logout": "Amaitu saioa",
|
||||
"navigation_bar.moderation": "Moderazioa",
|
||||
"navigation_bar.more": "Gehiago",
|
||||
"navigation_bar.mutes": "Mutututako erabiltzaileak",
|
||||
"navigation_bar.opened_in_classic_interface": "Argitalpenak, kontuak eta beste orri jakin batzuk lehenespenez irekitzen dira web-interfaze klasikoan.",
|
||||
"navigation_bar.preferences": "Hobespenak",
|
||||
"navigation_bar.privacy_and_reach": "Pribatutasuna eta irismena",
|
||||
"navigation_bar.search": "Bilatu",
|
||||
"navigation_bar.search_trends": "Bilatu / Joera",
|
||||
"not_signed_in_indicator.not_signed_in": "Baliabide honetara sarbidea izateko saioa hasi behar duzu.",
|
||||
"notification.admin.report": "{name} erabiltzaileak {target} salatu du",
|
||||
"notification.admin.report_account": "{name}-(e)k {target}-ren {count, plural, one {bidalketa bat} other {# bidalketa}} salatu zituen {category} delakoagatik",
|
||||
|
@ -503,6 +569,7 @@
|
|||
"notification.admin.sign_up.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiago} other {# erabiltzaile gehiago}} erregistratu dira",
|
||||
"notification.favourite": "{name}(e)k zure bidalketa gogoko du",
|
||||
"notification.favourite.name_and_others_with_link": "{name} eta <a>{count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}}</a> zure bidalketa gogoko dute",
|
||||
"notification.favourite_pm": "{name}-ek zure aipamen pribatua gogokoetan jarri du",
|
||||
"notification.follow": "{name}(e)k jarraitzen dizu",
|
||||
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
|
||||
"notification.follow_request.name_and_others": "{name} eta {count, plural, one {erabiltzaile # gehiagok} other {# erabiltzaile gehiagok}} zu jarraitzeko eskaera egin dute",
|
||||
|
@ -511,6 +578,7 @@
|
|||
"notification.label.private_reply": "Erantzun pribatua",
|
||||
"notification.label.reply": "Erantzuna",
|
||||
"notification.mention": "Aipamena",
|
||||
"notification.mentioned_you": "{name}(e)k aipatu zaitu",
|
||||
"notification.moderation-warning.learn_more": "Informazio gehiago",
|
||||
"notification.moderation_warning": "Moderazio-abisu bat jaso duzu",
|
||||
"notification.moderation_warning.action_delete_statuses": "Argitalpen batzuk kendu dira.",
|
||||
|
@ -557,6 +625,7 @@
|
|||
"notifications.column_settings.filter_bar.category": "Iragazki-barra bizkorra",
|
||||
"notifications.column_settings.follow": "Jarraitzaile berriak:",
|
||||
"notifications.column_settings.follow_request": "Jarraitzeko eskaera berriak:",
|
||||
"notifications.column_settings.group": "Taldea",
|
||||
"notifications.column_settings.mention": "Aipamenak:",
|
||||
"notifications.column_settings.poll": "Inkestaren emaitzak:",
|
||||
"notifications.column_settings.push": "Push jakinarazpenak",
|
||||
|
@ -707,6 +776,7 @@
|
|||
"report_notification.categories.violation": "Arau haustea",
|
||||
"report_notification.categories.violation_sentence": "arau haustea",
|
||||
"report_notification.open": "Ireki salaketa",
|
||||
"search.clear": "Garbitu bilaketa",
|
||||
"search.no_recent_searches": "Duela gutxiko bilaketarik ez",
|
||||
"search.placeholder": "Bilatu",
|
||||
"search.quick_action.account_search": "{x}-(r)ekin bat datozen profilak",
|
||||
|
@ -771,6 +841,8 @@
|
|||
"status.mute_conversation": "Mututu elkarrizketa",
|
||||
"status.open": "Hedatu bidalketa hau",
|
||||
"status.pin": "Finkatu profilean",
|
||||
"status.quote_error.not_found": "Bidalketa hau ezin da erakutsi.",
|
||||
"status.quote_error.pending_approval": "Bidalketa hau egile originalak onartzeko zain dago.",
|
||||
"status.read_more": "Irakurri gehiago",
|
||||
"status.reblog": "Bultzada",
|
||||
"status.reblog_private": "Bultzada jatorrizko hartzaileei",
|
||||
|
@ -799,7 +871,11 @@
|
|||
"subscribed_languages.save": "Gorde aldaketak",
|
||||
"subscribed_languages.target": "Aldatu {target}(e)n harpidetutako hizkuntzak",
|
||||
"tabs_bar.home": "Hasiera",
|
||||
"tabs_bar.menu": "Menua",
|
||||
"tabs_bar.notifications": "Jakinarazpenak",
|
||||
"tabs_bar.publish": "Bidalketa berria",
|
||||
"tabs_bar.search": "Bilatu",
|
||||
"terms_of_service.title": "Zerbitzuaren baldintzak",
|
||||
"time_remaining.days": "{number, plural, one {egun #} other {# egun}} amaitzeko",
|
||||
"time_remaining.hours": "{number, plural, one {ordu #} other {# ordu}} amaitzeko",
|
||||
"time_remaining.minutes": "{number, plural, one {minutu #} other {# minutu}} amaitzeko",
|
||||
|
@ -826,5 +902,8 @@
|
|||
"video.fullscreen": "Pantaila osoa",
|
||||
"video.hide": "Ezkutatu bideoa",
|
||||
"video.pause": "Pausatu",
|
||||
"video.play": "Jo"
|
||||
"video.play": "Jo",
|
||||
"video.unmute": "Soinua ezarri",
|
||||
"video.volume_down": "Bolumena jaitsi",
|
||||
"video.volume_up": "Bolumena Igo"
|
||||
}
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "حذف",
|
||||
"confirmations.delete_list.message": "مطمئنید میخواهید این سیاهه را برای همیشه حذف کنید؟",
|
||||
"confirmations.delete_list.title": "حذف سیاهه؟",
|
||||
"confirmations.discard_draft.confirm": "دور انداختن و ادامه",
|
||||
"confirmations.discard_draft.edit.cancel": "ادامهٔ ویرایش",
|
||||
"confirmations.discard_draft.edit.message": "ادامه دادن هر تغییری که روی فرستهٔ در حال ویرایش دادهاید را دور خواهد ریخت.",
|
||||
"confirmations.discard_draft.edit.title": "دور ریختن تغییرات فرستهتان؟",
|
||||
"confirmations.discard_draft.post.cancel": "از سر گیری پیشنویس",
|
||||
"confirmations.discard_draft.post.message": "ادامه دادن باعث دور ریخته شدن تغییرات روی فرستهای که دارید مینویسید خواهد شد.",
|
||||
"confirmations.discard_draft.post.title": "دور ریختن فرستهٔ پیشنویستان؟",
|
||||
"confirmations.discard_edit_media.confirm": "دور انداختن",
|
||||
"confirmations.discard_edit_media.message": "تغییرات ذخیره نشدهای در توضیحات یا پیشنمایش رسانه دارید. همگی نادیده گرفته شوند؟",
|
||||
"confirmations.edit.confirm": "ویرایش",
|
||||
"confirmations.edit.message": "در صورت ویرایش، پیامی که در حال نوشتنش بودید از بین خواهد رفت. میخواهید ادامه دهید؟",
|
||||
"confirmations.edit.title": "رونویسی فرسته؟",
|
||||
"confirmations.follow_to_list.confirm": "پیگیری و افزودن به سیاهه",
|
||||
"confirmations.follow_to_list.message": "برای افزودن {name} به سیاهه باید پیش گرفته باشید.",
|
||||
"confirmations.follow_to_list.title": "پیگیری کاربر؟",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "برداشتن پیگیرنده",
|
||||
"confirmations.remove_from_followers.message": "دیگر {name} پیتان نخواهد گرفت. مطمئنید که میخواهید ادامه دهید؟",
|
||||
"confirmations.remove_from_followers.title": "برداشتن پیگیرنده؟",
|
||||
"confirmations.reply.confirm": "پاسخ",
|
||||
"confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. میخواهید ادامه دهید؟",
|
||||
"confirmations.reply.title": "رونویسی فرسته؟",
|
||||
"confirmations.unfollow.confirm": "پینگرفتن",
|
||||
"confirmations.unfollow.message": "مطمئنید که میخواهید به پیگیری از {name} پایان دهید؟",
|
||||
"confirmations.unfollow.title": "ناپیگیری کاربر؟",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "پیگرفتگان و پیگیرندگان",
|
||||
"navigation_bar.import_export": "درونریزی و برونبری",
|
||||
"navigation_bar.lists": "سیاههها",
|
||||
"navigation_bar.live_feed_local": "خوراک زنده (محلی)",
|
||||
"navigation_bar.live_feed_public": "خوراک زنده (عمومی)",
|
||||
"navigation_bar.logout": "خروج",
|
||||
"navigation_bar.moderation": "نظارت",
|
||||
"navigation_bar.more": "بیشتر",
|
||||
|
@ -572,6 +575,10 @@
|
|||
"navigation_bar.privacy_and_reach": "محرمانگی و دسترسی",
|
||||
"navigation_bar.search": "جستوجو",
|
||||
"navigation_bar.search_trends": "جستجو \\ پرطرفدار",
|
||||
"navigation_panel.collapse_followed_tags": "جمع کردن فهرست برچسبهای پیگرفته",
|
||||
"navigation_panel.collapse_lists": "جمع کردن فهرست سیاهه",
|
||||
"navigation_panel.expand_followed_tags": "گسترش فهرست برچسبهای پیگرفته",
|
||||
"navigation_panel.expand_lists": "گسترش فهرست سیاهه",
|
||||
"not_signed_in_indicator.not_signed_in": "برای دسترسی به این منبع باید وارد شوید.",
|
||||
"notification.admin.report": "{name}، {target} را گزارش داد",
|
||||
"notification.admin.report_account": "{name} {count, plural, one {یک پست} other {پست}} از {target} برای {category} را گزارش داد",
|
||||
|
@ -798,6 +805,7 @@
|
|||
"report_notification.categories.violation": "تخطّی از قانون",
|
||||
"report_notification.categories.violation_sentence": "تخطّی از قانون",
|
||||
"report_notification.open": "گشودن گزارش",
|
||||
"search.clear": "پاکسازی جستوجو",
|
||||
"search.no_recent_searches": "جستوجوی اخیری نیست",
|
||||
"search.placeholder": "جستوجو",
|
||||
"search.quick_action.account_search": "نمایههای جور با {x}",
|
||||
|
@ -864,6 +872,12 @@
|
|||
"status.mute_conversation": "خموشاندن گفتوگو",
|
||||
"status.open": "گسترش این فرسته",
|
||||
"status.pin": "سنجاق به نمایه",
|
||||
"status.quote_error.filtered": "نهفته بنا بر یکی از پالایههایتان",
|
||||
"status.quote_error.not_found": "این فرسته قابل نمایش نیست.",
|
||||
"status.quote_error.pending_approval": "این فرسته منظر تأیید نگارندهٔ اصلی است.",
|
||||
"status.quote_error.rejected": "از آنجا که نگارندهٔ اصلی فرسته اجازهٔ نقل قولش را نمیدهد این فرسته قابل نمایش نیست.",
|
||||
"status.quote_error.removed": "این فرسته به دست نگارندهاش برداشته شده.",
|
||||
"status.quote_error.unauthorized": "از آنجا که اجازهٔ دیدن این فرسته را ندارید قابل نمایش نیست.",
|
||||
"status.quote_post_author": "فرسته توسط {name}",
|
||||
"status.read_more": "بیشتر بخوانید",
|
||||
"status.reblog": "تقویت",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Poista",
|
||||
"confirmations.delete_list.message": "Haluatko varmasti poistaa tämän listan pysyvästi?",
|
||||
"confirmations.delete_list.title": "Poistetaanko lista?",
|
||||
"confirmations.discard_draft.confirm": "Hylkää ja jatka",
|
||||
"confirmations.discard_draft.edit.cancel": "Palaa muokkaamaan",
|
||||
"confirmations.discard_draft.edit.message": "Jatkaminen tuhoaa kaikki muutokset, joita olet tehnyt julkaisuun, jota olet parhaillaan muokkaamassa.",
|
||||
"confirmations.discard_draft.edit.title": "Hylätäänkö luonnosjulkaisusi muutokset?",
|
||||
"confirmations.discard_draft.post.cancel": "Palaa lunnokseen",
|
||||
"confirmations.discard_draft.post.message": "Jatkaminen tuhoaa julkaisun, jota olet parhaillaan laatimassa.",
|
||||
"confirmations.discard_draft.post.title": "Hylätäänkö luonnosjulkaisusi?",
|
||||
"confirmations.discard_edit_media.confirm": "Hylkää",
|
||||
"confirmations.discard_edit_media.message": "Sinulla on tallentamattomia muutoksia median kuvaukseen tai esikatseluun. Hylätäänkö ne silti?",
|
||||
"confirmations.edit.confirm": "Muokkaa",
|
||||
"confirmations.edit.message": "Jos muokkaat viestiä nyt, se korvaa parhaillaan työstämäsi viestin. Haluatko varmasti jatkaa?",
|
||||
"confirmations.edit.title": "Korvataanko julkaisu?",
|
||||
"confirmations.follow_to_list.confirm": "Seuraa ja lisää listaan",
|
||||
"confirmations.follow_to_list.message": "Sinun on seurattava käyttäjää {name}, jotta voit lisätä hänet listaan.",
|
||||
"confirmations.follow_to_list.title": "Seurataanko käyttäjää?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Poista seuraaja",
|
||||
"confirmations.remove_from_followers.message": "{name} lakkaa seuraamasta sinua. Haluatko varmasti jatkaa?",
|
||||
"confirmations.remove_from_followers.title": "Poistetaanko seuraaja?",
|
||||
"confirmations.reply.confirm": "Vastaa",
|
||||
"confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa parhaillaan työstämäsi viestin. Haluatko varmasti jatkaa?",
|
||||
"confirmations.reply.title": "Korvataanko julkaisu?",
|
||||
"confirmations.unfollow.confirm": "Lopeta seuraaminen",
|
||||
"confirmations.unfollow.message": "Haluatko varmasti lopettaa profiilin {name} seuraamisen?",
|
||||
"confirmations.unfollow.title": "Lopetetaanko käyttäjän seuraaminen?",
|
||||
|
|
|
@ -133,8 +133,6 @@
|
|||
"confirmations.delete_list.confirm": "Tanggalin",
|
||||
"confirmations.delete_list.message": "Sigurado ka bang gusto mong burahin ang listahang ito?",
|
||||
"confirmations.discard_edit_media.confirm": "Ipagpaliban",
|
||||
"confirmations.edit.confirm": "Baguhin",
|
||||
"confirmations.reply.confirm": "Tumugon",
|
||||
"content_warning.show_more": "Magpakita ng higit pa",
|
||||
"conversation.mark_as_read": "Markahan bilang nabasa na",
|
||||
"conversation.open": "Tingnan ang pag-uusap",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Strika",
|
||||
"confirmations.delete_list.message": "Ert tú vís/ur í, at tú vilt strika hetta uppslagið?",
|
||||
"confirmations.delete_list.title": "Strika lista?",
|
||||
"confirmations.discard_draft.confirm": "Vraka og halt fram",
|
||||
"confirmations.discard_draft.edit.cancel": "Tak uppaftur rætting",
|
||||
"confirmations.discard_draft.edit.message": "Heldur tú fram, vrakast broytingar, sum tú hevur gjørt í postinum, ið tú er í ferð við at rætta.",
|
||||
"confirmations.discard_draft.edit.title": "Vraka broytingar í postinum hjá tær?",
|
||||
"confirmations.discard_draft.post.cancel": "Halt fram við kladduni",
|
||||
"confirmations.discard_draft.post.message": "Heldur tú fram, vrakast posturin, sum tú er í ferð við at stovna.",
|
||||
"confirmations.discard_draft.post.title": "Vraka kladdupostin?",
|
||||
"confirmations.discard_edit_media.confirm": "Vraka",
|
||||
"confirmations.discard_edit_media.message": "Tú hevur broytingar í miðlalýsingini ella undansýningini, sum ikki eru goymdar. Vilt tú kortini vraka?",
|
||||
"confirmations.edit.confirm": "Rætta",
|
||||
"confirmations.edit.message": "Rættingar, sum verða gjørdar nú, skriva yvir boðini, sum tú ert í holt við. Ert tú vís/ur í, at tú vilt halda fram?",
|
||||
"confirmations.edit.title": "Skriva omaná post?",
|
||||
"confirmations.follow_to_list.confirm": "Fylg og legg afturat lista",
|
||||
"confirmations.follow_to_list.message": "Tú mást fylgja {name} fyri at leggja tey afturat einum lista.",
|
||||
"confirmations.follow_to_list.title": "Fylg brúkara?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Strika fylgjara",
|
||||
"confirmations.remove_from_followers.message": "{name} fer ikki longur at fylgja tær. Er tú vís/ur í at tú vilt halda fram?",
|
||||
"confirmations.remove_from_followers.title": "Strika fylgjara?",
|
||||
"confirmations.reply.confirm": "Svara",
|
||||
"confirmations.reply.message": "Svarar tú nú, verða boðini, sum tú ert í holt við at skriva yvirskrivað. Ert tú vís/ur í, at tú vilt halda fram?",
|
||||
"confirmations.reply.title": "Skriva omaná post?",
|
||||
"confirmations.unfollow.confirm": "Fylg ikki",
|
||||
"confirmations.unfollow.message": "Ert tú vís/ur í, at tú vil steðga við at fylgja {name}?",
|
||||
"confirmations.unfollow.title": "Gevst at fylgja brúkara?",
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
"about.domain_blocks.silenced.title": "Limité",
|
||||
"about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, stockée ou échangée, rendant toute interaction ou communication avec des utilisateurs de ce serveur impossible.",
|
||||
"about.domain_blocks.suspended.title": "Suspendu",
|
||||
"about.language_label": "Langue",
|
||||
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
|
||||
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
|
||||
"about.rules": "Règles du serveur",
|
||||
|
@ -20,14 +21,20 @@
|
|||
"account.block_domain": "Bloquer le domaine {domain}",
|
||||
"account.block_short": "Bloquer",
|
||||
"account.blocked": "Bloqué·e",
|
||||
"account.blocking": "Bloquer",
|
||||
"account.cancel_follow_request": "Retirer cette demande d'abonnement",
|
||||
"account.copy": "Copier le lien vers le profil",
|
||||
"account.direct": "Mention privée @{name}",
|
||||
"account.disable_notifications": "Ne plus me notifier quand @{name} publie",
|
||||
"account.domain_blocking": "Bloquer domaine",
|
||||
"account.edit_profile": "Modifier le profil",
|
||||
"account.enable_notifications": "Me notifier quand @{name} publie",
|
||||
"account.endorse": "Inclure sur profil",
|
||||
"account.familiar_followers_many": "Suivi par {name1},{name2}, et {othersCount, plural,one {une personne connue} other {# autres personnel connues}}",
|
||||
"account.familiar_followers_one": "Suivi par {name1}",
|
||||
"account.familiar_followers_two": "Suivi par {name1} et {name2}",
|
||||
"account.featured": "En vedette",
|
||||
"account.featured.accounts": "Profiles",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Dernière publication {date}",
|
||||
"account.featured_tags.last_status_never": "Aucune publication",
|
||||
|
@ -36,9 +43,11 @@
|
|||
"account.followers": "abonné·e·s",
|
||||
"account.followers.empty": "Personne ne suit ce compte pour l'instant.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} abonné·e} other {{counter} abonné·e·s}}",
|
||||
"account.followers_you_know_counter": "Vous connaissez {counter}",
|
||||
"account.following": "Abonné·e",
|
||||
"account.following_counter": "{count, plural, one {{counter} abonnement} other {{counter} abonnements}}",
|
||||
"account.follows.empty": "Ce compte ne suit personne présentement.",
|
||||
"account.follows_you": "Vous suit",
|
||||
"account.go_to_profile": "Voir ce profil",
|
||||
"account.hide_reblogs": "Masquer les boosts de @{name}",
|
||||
"account.in_memoriam": "En souvenir de",
|
||||
|
@ -53,13 +62,17 @@
|
|||
"account.mute_notifications_short": "Rendre les notifications muettes",
|
||||
"account.mute_short": "Rendre muet",
|
||||
"account.muted": "Masqué·e",
|
||||
"account.muting": "Sourdine",
|
||||
"account.mutual": "Vous vous suivez mutuellement",
|
||||
"account.no_bio": "Description manquante.",
|
||||
"account.open_original_page": "Ouvrir la page d'origine",
|
||||
"account.posts": "Publications",
|
||||
"account.posts_with_replies": "Publications et réponses",
|
||||
"account.remove_from_followers": "Retirer {name} des suiveurs",
|
||||
"account.report": "Signaler @{name}",
|
||||
"account.requested": "En attente d’approbation. Cliquez pour annuler la demande",
|
||||
"account.requested_follow": "{name} a demandé à vous suivre",
|
||||
"account.requests_to_follow_you": "Demande a vous suivre",
|
||||
"account.share": "Partager le profil de @{name}",
|
||||
"account.show_reblogs": "Afficher les boosts de @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||
|
@ -111,7 +124,7 @@
|
|||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
||||
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><pourcentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
||||
"attachments_list.unprocessed": "(non traité)",
|
||||
|
@ -206,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Supprimer",
|
||||
"confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste?",
|
||||
"confirmations.delete_list.title": "Supprimer la liste ?",
|
||||
"confirmations.discard_draft.confirm": "Effacer et continuer",
|
||||
"confirmations.discard_draft.edit.cancel": "Retour vers l'éditeur",
|
||||
"confirmations.discard_draft.edit.message": "Continued va perdre les changements que vous avez faits dans le message courant.",
|
||||
"confirmations.discard_draft.edit.title": "Jeter les changements faits au message?",
|
||||
"confirmations.discard_draft.post.cancel": "Retour au brouillon",
|
||||
"confirmations.discard_draft.post.message": "En continuant, vous perdez le message que vous êtes en train d'écrire.",
|
||||
"confirmations.discard_draft.post.title": "Jeter le brouillon de message?",
|
||||
"confirmations.discard_edit_media.confirm": "Rejeter",
|
||||
"confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, voulez-vous quand même les supprimer?",
|
||||
"confirmations.edit.confirm": "Éditer",
|
||||
"confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?",
|
||||
"confirmations.edit.title": "Remplacer le message ?",
|
||||
"confirmations.follow_to_list.confirm": "Suivre et ajouter à la liste",
|
||||
"confirmations.follow_to_list.message": "Vous devez suivre {name} pour l'ajouter à une liste.",
|
||||
"confirmations.follow_to_list.title": "Suivre l'utilisateur ?",
|
||||
|
@ -225,9 +242,9 @@
|
|||
"confirmations.redraft.confirm": "Supprimer et réécrire",
|
||||
"confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer cette publication pour la réécrire? Ses ses mises en favori et boosts seront perdus et ses réponses seront orphelines.",
|
||||
"confirmations.redraft.title": "Supprimer et réécrire le message ?",
|
||||
"confirmations.reply.confirm": "Répondre",
|
||||
"confirmations.reply.message": "Répondre maintenant écrasera le message que vous rédigez présentement. Voulez-vous vraiment continuer?",
|
||||
"confirmations.reply.title": "Remplacer le message ?",
|
||||
"confirmations.remove_from_followers.confirm": "Supprimer l'abonné·e",
|
||||
"confirmations.remove_from_followers.message": "{name} cessera de vous suivre. Êtes-vous sûr de vouloir continuer ?",
|
||||
"confirmations.remove_from_followers.title": "Supprimer l'abonné·e ?",
|
||||
"confirmations.unfollow.confirm": "Ne plus suivre",
|
||||
"confirmations.unfollow.message": "Voulez-vous vraiment arrêter de suivre {name}?",
|
||||
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
||||
|
@ -289,6 +306,9 @@
|
|||
"emoji_button.search_results": "Résultats",
|
||||
"emoji_button.symbols": "Symboles",
|
||||
"emoji_button.travel": "Voyage et lieux",
|
||||
"empty_column.account_featured.me": "Vous n'avez pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured.other": "{acct} n'a pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured_other.unknown": "Ce compte n'a mis aucun contenu en avant pour l'instant.",
|
||||
"empty_column.account_hides_collections": "Cet utilisateur·ice préfère ne pas rendre publiques ces informations",
|
||||
"empty_column.account_suspended": "Compte suspendu",
|
||||
"empty_column.account_timeline": "Aucune publication ici!",
|
||||
|
@ -317,9 +337,14 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
||||
"errors.unexpected_crash.report_issue": "Signaler un problème",
|
||||
"explore.suggested_follows": "Personnes",
|
||||
"explore.title": "Tendances",
|
||||
"explore.trending_links": "Nouvelles",
|
||||
"explore.trending_statuses": "Messages",
|
||||
"explore.trending_tags": "Hashtags",
|
||||
"featured_carousel.next": "Suivant",
|
||||
"featured_carousel.post": "Poste",
|
||||
"featured_carousel.previous": "Précédent",
|
||||
"featured_carousel.slide": "{index} de {total}",
|
||||
"filter_modal.added.context_mismatch_explanation": "Cette catégorie de filtre ne s'applique pas au contexte dans lequel vous avez accédé à cette publication. Si vous voulez que la publication soit filtrée dans ce contexte également, vous devrez modifier le filtre.",
|
||||
"filter_modal.added.context_mismatch_title": "Incompatibilité du contexte!",
|
||||
"filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.",
|
||||
|
@ -372,6 +397,8 @@
|
|||
"generic.saved": "Sauvegardé",
|
||||
"getting_started.heading": "Pour commencer",
|
||||
"hashtag.admin_moderation": "Ouvrir l'interface de modération pour #{name}",
|
||||
"hashtag.browse": "Parcourir les posts dans #{hashtag}",
|
||||
"hashtag.browse_from_account": "Parcourir les posts de @{name} dans #{hashtag}",
|
||||
"hashtag.column_header.tag_mode.all": "et {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "ou {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "sans {additional}",
|
||||
|
@ -384,7 +411,10 @@
|
|||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participant} other {{counter} participants}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} message} other {{counter} messages}} aujourd’hui",
|
||||
"hashtag.feature": "Mettre en avant sur votre profil",
|
||||
"hashtag.follow": "Suivre ce hashtag",
|
||||
"hashtag.mute": "Mettre #{hashtag} en sourdine",
|
||||
"hashtag.unfeature": "Ne plus mettre en avant sur votre profil",
|
||||
"hashtag.unfollow": "Ne plus suivre ce hashtag",
|
||||
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
||||
"hints.profiles.followers_may_be_missing": "Les abonné·e·s à ce profil peuvent être manquant·e·s.",
|
||||
|
@ -395,6 +425,7 @@
|
|||
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
||||
"hints.threads.replies_may_be_missing": "Les réponses provenant des autres serveurs pourraient être manquantes.",
|
||||
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
||||
"home.column_settings.show_quotes": "Afficher les citations",
|
||||
"home.column_settings.show_reblogs": "Afficher boosts",
|
||||
"home.column_settings.show_replies": "Afficher réponses",
|
||||
"home.hide_announcements": "Masquer les annonces",
|
||||
|
@ -517,8 +548,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
||||
"mute_modal.you_wont_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.",
|
||||
"navigation_bar.about": "À propos",
|
||||
"navigation_bar.account_settings": "Mot de passe et sécurité",
|
||||
"navigation_bar.administration": "Administration",
|
||||
"navigation_bar.advanced_interface": "Ouvrir dans l’interface avancée",
|
||||
"navigation_bar.automated_deletion": "Suppression automatique du message",
|
||||
"navigation_bar.blocks": "Comptes bloqués",
|
||||
"navigation_bar.bookmarks": "Signets",
|
||||
"navigation_bar.direct": "Mention privée",
|
||||
|
@ -528,13 +561,19 @@
|
|||
"navigation_bar.follow_requests": "Demandes d'abonnements",
|
||||
"navigation_bar.followed_tags": "Hashtags suivis",
|
||||
"navigation_bar.follows_and_followers": "Abonnements et abonnés",
|
||||
"navigation_bar.import_export": "Import et export",
|
||||
"navigation_bar.lists": "Listes",
|
||||
"navigation_bar.live_feed_local": "Flux en direct (local)",
|
||||
"navigation_bar.live_feed_public": "Flux en direct (public)",
|
||||
"navigation_bar.logout": "Se déconnecter",
|
||||
"navigation_bar.moderation": "Modération",
|
||||
"navigation_bar.more": "Plus",
|
||||
"navigation_bar.mutes": "Utilisateurs masqués",
|
||||
"navigation_bar.opened_in_classic_interface": "Les messages, les comptes et les pages spécifiques sont ouvertes dans l’interface classique.",
|
||||
"navigation_bar.preferences": "Préférences",
|
||||
"navigation_bar.privacy_and_reach": "Vie privée et visibilité",
|
||||
"navigation_bar.search": "Rechercher",
|
||||
"navigation_bar.search_trends": "Recherche / Tendance",
|
||||
"not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.",
|
||||
"notification.admin.report": "{name} a signalé {target}",
|
||||
"notification.admin.report_account": "{name} a signalé {count, plural, one {un message} other {# messages}} de {target} pour {category}",
|
||||
|
@ -827,6 +866,9 @@
|
|||
"status.mute_conversation": "Masquer la conversation",
|
||||
"status.open": "Afficher la publication entière",
|
||||
"status.pin": "Épingler sur profil",
|
||||
"status.quote_error.removed": "Ce message a été retiré par son auteur·ice.",
|
||||
"status.quote_error.unauthorized": "Ce message ne peut pas être affiché car vous n'êtes pas autorisé·e à le voir.",
|
||||
"status.quote_post_author": "Message par {name}",
|
||||
"status.read_more": "En savoir plus",
|
||||
"status.reblog": "Booster",
|
||||
"status.reblog_private": "Booster avec visibilité originale",
|
||||
|
@ -856,7 +898,10 @@
|
|||
"subscribed_languages.save": "Enregistrer les modifications",
|
||||
"subscribed_languages.target": "Changer les langues abonnées pour {target}",
|
||||
"tabs_bar.home": "Accueil",
|
||||
"tabs_bar.menu": "Menu",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.publish": "Nouveau message",
|
||||
"tabs_bar.search": "Chercher",
|
||||
"terms_of_service.effective_as_of": "En vigueur à compter du {date}",
|
||||
"terms_of_service.title": "Conditions d'utilisation",
|
||||
"terms_of_service.upcoming_changes_on": "Modifications à venir le {date}",
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
"about.domain_blocks.silenced.title": "Limité",
|
||||
"about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les comptes de ce serveur.",
|
||||
"about.domain_blocks.suspended.title": "Suspendu",
|
||||
"about.language_label": "Langue",
|
||||
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
|
||||
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
|
||||
"about.rules": "Règles du serveur",
|
||||
|
@ -20,14 +21,20 @@
|
|||
"account.block_domain": "Bloquer le domaine {domain}",
|
||||
"account.block_short": "Bloquer",
|
||||
"account.blocked": "Bloqué·e",
|
||||
"account.blocking": "Bloquer",
|
||||
"account.cancel_follow_request": "Annuler l'abonnement",
|
||||
"account.copy": "Copier le lien vers le profil",
|
||||
"account.direct": "Mention privée @{name}",
|
||||
"account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose",
|
||||
"account.domain_blocking": "Bloquer domaine",
|
||||
"account.edit_profile": "Modifier le profil",
|
||||
"account.enable_notifications": "Me notifier quand @{name} publie quelque chose",
|
||||
"account.endorse": "Recommander sur votre profil",
|
||||
"account.familiar_followers_many": "Suivi par {name1},{name2}, et {othersCount, plural,one {une personne connue} other {# autres personnel connues}}",
|
||||
"account.familiar_followers_one": "Suivi par {name1}",
|
||||
"account.familiar_followers_two": "Suivi par {name1} et {name2}",
|
||||
"account.featured": "En vedette",
|
||||
"account.featured.accounts": "Profiles",
|
||||
"account.featured.hashtags": "Hashtags",
|
||||
"account.featured_tags.last_status_at": "Dernier message le {date}",
|
||||
"account.featured_tags.last_status_never": "Aucun message",
|
||||
|
@ -36,9 +43,11 @@
|
|||
"account.followers": "Abonné·e·s",
|
||||
"account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} abonné·e} other {{counter} abonné·e·s}}",
|
||||
"account.followers_you_know_counter": "Vous connaissez {counter}",
|
||||
"account.following": "Abonnements",
|
||||
"account.following_counter": "{count, plural, one {{counter} abonnement} other {{counter} abonnements}}",
|
||||
"account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.",
|
||||
"account.follows_you": "Vous suit",
|
||||
"account.go_to_profile": "Voir le profil",
|
||||
"account.hide_reblogs": "Masquer les partages de @{name}",
|
||||
"account.in_memoriam": "En mémoire de.",
|
||||
|
@ -53,13 +62,17 @@
|
|||
"account.mute_notifications_short": "Désactiver les notifications",
|
||||
"account.mute_short": "Mettre en sourdine",
|
||||
"account.muted": "Masqué·e",
|
||||
"account.muting": "Sourdine",
|
||||
"account.mutual": "Vous vous suivez mutuellement",
|
||||
"account.no_bio": "Aucune description fournie.",
|
||||
"account.open_original_page": "Ouvrir la page d'origine",
|
||||
"account.posts": "Messages",
|
||||
"account.posts_with_replies": "Messages et réponses",
|
||||
"account.remove_from_followers": "Retirer {name} des suiveurs",
|
||||
"account.report": "Signaler @{name}",
|
||||
"account.requested": "En attente d’approbation. Cliquez pour annuler la demande",
|
||||
"account.requested_follow": "{name} a demandé à vous suivre",
|
||||
"account.requests_to_follow_you": "Demande a vous suivre",
|
||||
"account.share": "Partager le profil de @{name}",
|
||||
"account.show_reblogs": "Afficher les partages de @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||
|
@ -111,7 +124,7 @@
|
|||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
||||
"annual_report.summary.new_posts.new_posts": "nouveaux messages",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><pourcentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de {domain}.</bottomLabel>",
|
||||
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
||||
"attachments_list.unprocessed": "(non traité)",
|
||||
|
@ -175,7 +188,7 @@
|
|||
"community.column_settings.media_only": "Média uniquement",
|
||||
"community.column_settings.remote_only": "Distant seulement",
|
||||
"compose.language.change": "Changer de langue",
|
||||
"compose.language.search": "Rechercher des langues …",
|
||||
"compose.language.search": "Rechercher des langues...",
|
||||
"compose.published.body": "Message Publié.",
|
||||
"compose.published.open": "Ouvrir",
|
||||
"compose.saved.body": "Message enregistré.",
|
||||
|
@ -206,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Supprimer",
|
||||
"confirmations.delete_list.message": "Voulez-vous vraiment supprimer définitivement cette liste ?",
|
||||
"confirmations.delete_list.title": "Supprimer la liste ?",
|
||||
"confirmations.discard_draft.confirm": "Effacer et continuer",
|
||||
"confirmations.discard_draft.edit.cancel": "Retour vers l'éditeur",
|
||||
"confirmations.discard_draft.edit.message": "Continued va perdre les changements que vous avez faits dans le message courant.",
|
||||
"confirmations.discard_draft.edit.title": "Jeter les changements faits au message?",
|
||||
"confirmations.discard_draft.post.cancel": "Retour au brouillon",
|
||||
"confirmations.discard_draft.post.message": "En continuant, vous perdez le message que vous êtes en train d'écrire.",
|
||||
"confirmations.discard_draft.post.title": "Jeter le brouillon de message?",
|
||||
"confirmations.discard_edit_media.confirm": "Rejeter",
|
||||
"confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, les supprimer quand même ?",
|
||||
"confirmations.edit.confirm": "Modifier",
|
||||
"confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?",
|
||||
"confirmations.edit.title": "Remplacer le message ?",
|
||||
"confirmations.follow_to_list.confirm": "Suivre et ajouter à la liste",
|
||||
"confirmations.follow_to_list.message": "Vous devez suivre {name} pour l'ajouter à une liste.",
|
||||
"confirmations.follow_to_list.title": "Suivre l'utilisateur ?",
|
||||
|
@ -225,9 +242,9 @@
|
|||
"confirmations.redraft.confirm": "Supprimer et ré-écrire",
|
||||
"confirmations.redraft.message": "Voulez-vous vraiment supprimer le message pour le réécrire ? Ses partages ainsi que ses mises en favori seront perdues, et ses réponses seront orphelines.",
|
||||
"confirmations.redraft.title": "Supprimer et réécrire le message ?",
|
||||
"confirmations.reply.confirm": "Répondre",
|
||||
"confirmations.reply.message": "Répondre maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?",
|
||||
"confirmations.reply.title": "Remplacer le message ?",
|
||||
"confirmations.remove_from_followers.confirm": "Supprimer l'abonné·e",
|
||||
"confirmations.remove_from_followers.message": "{name} cessera de vous suivre. Êtes-vous sûr de vouloir continuer ?",
|
||||
"confirmations.remove_from_followers.title": "Supprimer l'abonné·e ?",
|
||||
"confirmations.unfollow.confirm": "Ne plus suivre",
|
||||
"confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name} ?",
|
||||
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
||||
|
@ -289,6 +306,9 @@
|
|||
"emoji_button.search_results": "Résultats de la recherche",
|
||||
"emoji_button.symbols": "Symboles",
|
||||
"emoji_button.travel": "Voyage et lieux",
|
||||
"empty_column.account_featured.me": "Vous n'avez pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured.other": "{acct} n'a pas encore mis de contenu en avant. Saviez-vous que vous pouviez mettre en avant les hashtags que vous utilisez le plus, et même les comptes de vos amis sur votre profil ?",
|
||||
"empty_column.account_featured_other.unknown": "Ce compte n'a mis aucun contenu en avant pour l'instant.",
|
||||
"empty_column.account_hides_collections": "Cet utilisateur·ice préfère ne pas rendre publiques ces informations",
|
||||
"empty_column.account_suspended": "Compte suspendu",
|
||||
"empty_column.account_timeline": "Aucun message ici !",
|
||||
|
@ -317,9 +337,14 @@
|
|||
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
||||
"errors.unexpected_crash.report_issue": "Signaler le problème",
|
||||
"explore.suggested_follows": "Personnes",
|
||||
"explore.title": "Tendances",
|
||||
"explore.trending_links": "Nouvelles",
|
||||
"explore.trending_statuses": "Messages",
|
||||
"explore.trending_tags": "Hashtags",
|
||||
"featured_carousel.next": "Suivant",
|
||||
"featured_carousel.post": "Poste",
|
||||
"featured_carousel.previous": "Précédent",
|
||||
"featured_carousel.slide": "{index} de {total}",
|
||||
"filter_modal.added.context_mismatch_explanation": "Cette catégorie de filtre ne s'applique pas au contexte dans lequel vous avez accédé à ce message. Si vous voulez que le message soit filtré dans ce contexte également, vous devrez modifier le filtre.",
|
||||
"filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !",
|
||||
"filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.",
|
||||
|
@ -372,6 +397,8 @@
|
|||
"generic.saved": "Sauvegardé",
|
||||
"getting_started.heading": "Pour commencer",
|
||||
"hashtag.admin_moderation": "Ouvrir l'interface de modération pour #{name}",
|
||||
"hashtag.browse": "Parcourir les posts dans #{hashtag}",
|
||||
"hashtag.browse_from_account": "Parcourir les posts de @{name} dans #{hashtag}",
|
||||
"hashtag.column_header.tag_mode.all": "et {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "ou {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "sans {additional}",
|
||||
|
@ -384,7 +411,10 @@
|
|||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} participant} other {{counter} participants}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} message} other {{counter} messages}} aujourd’hui",
|
||||
"hashtag.feature": "Mettre en avant sur votre profil",
|
||||
"hashtag.follow": "Suivre le hashtag",
|
||||
"hashtag.mute": "Mettre #{hashtag} en sourdine",
|
||||
"hashtag.unfeature": "Ne plus mettre en avant sur votre profil",
|
||||
"hashtag.unfollow": "Ne plus suivre le hashtag",
|
||||
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
||||
"hints.profiles.followers_may_be_missing": "Les abonné·e·s à ce profil peuvent être manquant·e·s.",
|
||||
|
@ -395,6 +425,7 @@
|
|||
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
||||
"hints.threads.replies_may_be_missing": "Les réponses provenant des autres serveurs pourraient être manquantes.",
|
||||
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
||||
"home.column_settings.show_quotes": "Afficher les citations",
|
||||
"home.column_settings.show_reblogs": "Afficher les partages",
|
||||
"home.column_settings.show_replies": "Afficher les réponses",
|
||||
"home.hide_announcements": "Masquer les annonces",
|
||||
|
@ -517,8 +548,10 @@
|
|||
"mute_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
||||
"mute_modal.you_wont_see_posts": "Il peut toujours voir vos publications, mais vous ne verrez pas les siennes.",
|
||||
"navigation_bar.about": "À propos",
|
||||
"navigation_bar.account_settings": "Mot de passe et sécurité",
|
||||
"navigation_bar.administration": "Administration",
|
||||
"navigation_bar.advanced_interface": "Ouvrir dans l’interface avancée",
|
||||
"navigation_bar.automated_deletion": "Suppression automatique du message",
|
||||
"navigation_bar.blocks": "Comptes bloqués",
|
||||
"navigation_bar.bookmarks": "Marque-pages",
|
||||
"navigation_bar.direct": "Mention privée",
|
||||
|
@ -528,13 +561,19 @@
|
|||
"navigation_bar.follow_requests": "Demandes d’abonnement",
|
||||
"navigation_bar.followed_tags": "Hashtags suivis",
|
||||
"navigation_bar.follows_and_followers": "Abonnements et abonnés",
|
||||
"navigation_bar.import_export": "Import et export",
|
||||
"navigation_bar.lists": "Listes",
|
||||
"navigation_bar.live_feed_local": "Flux en direct (local)",
|
||||
"navigation_bar.live_feed_public": "Flux en direct (public)",
|
||||
"navigation_bar.logout": "Déconnexion",
|
||||
"navigation_bar.moderation": "Modération",
|
||||
"navigation_bar.more": "Plus",
|
||||
"navigation_bar.mutes": "Comptes masqués",
|
||||
"navigation_bar.opened_in_classic_interface": "Les messages, les comptes et les pages spécifiques sont ouvertes dans l’interface classique.",
|
||||
"navigation_bar.preferences": "Préférences",
|
||||
"navigation_bar.privacy_and_reach": "Vie privée et visibilité",
|
||||
"navigation_bar.search": "Rechercher",
|
||||
"navigation_bar.search_trends": "Recherche / Tendance",
|
||||
"not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.",
|
||||
"notification.admin.report": "{name} a signalé {target}",
|
||||
"notification.admin.report_account": "{name} a signalé {count, plural, one {un message} other {# messages}} de {target} pour {category}",
|
||||
|
@ -827,6 +866,9 @@
|
|||
"status.mute_conversation": "Masquer la conversation",
|
||||
"status.open": "Afficher le message entier",
|
||||
"status.pin": "Épingler sur le profil",
|
||||
"status.quote_error.removed": "Ce message a été retiré par son auteur·ice.",
|
||||
"status.quote_error.unauthorized": "Ce message ne peut pas être affiché car vous n'êtes pas autorisé·e à le voir.",
|
||||
"status.quote_post_author": "Message par {name}",
|
||||
"status.read_more": "En savoir plus",
|
||||
"status.reblog": "Partager",
|
||||
"status.reblog_private": "Partager à l’audience originale",
|
||||
|
@ -856,7 +898,10 @@
|
|||
"subscribed_languages.save": "Enregistrer les modifications",
|
||||
"subscribed_languages.target": "Changer les langues abonnées pour {target}",
|
||||
"tabs_bar.home": "Accueil",
|
||||
"tabs_bar.menu": "Menu",
|
||||
"tabs_bar.notifications": "Notifications",
|
||||
"tabs_bar.publish": "Nouveau message",
|
||||
"tabs_bar.search": "Chercher",
|
||||
"terms_of_service.effective_as_of": "En vigueur à compter du {date}",
|
||||
"terms_of_service.title": "Conditions d'utilisation",
|
||||
"terms_of_service.upcoming_changes_on": "Modifications à venir le {date}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Fuortsmite",
|
||||
"confirmations.delete_list.message": "Binne jo wis dat jo dizze list foar permanint fuortsmite wolle?",
|
||||
"confirmations.delete_list.title": "List fuortsmite?",
|
||||
"confirmations.discard_draft.confirm": "Negearje en trochgean",
|
||||
"confirmations.discard_draft.edit.cancel": "Bewurkjen trochsette",
|
||||
"confirmations.discard_draft.edit.message": "Trochsette sil wizigingen dy’t jo oan it aktuele berjocht makke hawwe negearje.",
|
||||
"confirmations.discard_draft.edit.title": "Wizigingen oan jo berjocht negearje?",
|
||||
"confirmations.discard_draft.post.cancel": "Konsept trochsette",
|
||||
"confirmations.discard_draft.post.message": "Trochsette sil it aktuele berjocht negearje.",
|
||||
"confirmations.discard_draft.post.title": "Jo konseptberjocht negearje?",
|
||||
"confirmations.discard_edit_media.confirm": "Fuortsmite",
|
||||
"confirmations.discard_edit_media.message": "Jo hawwe net-bewarre wizigingen yn de mediabeskriuwing of foarfertoaning, wolle jo dizze dochs fuortsmite?",
|
||||
"confirmations.edit.confirm": "Bewurkje",
|
||||
"confirmations.edit.message": "Troch no te bewurkjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
||||
"confirmations.edit.title": "Berjocht oerskriuwe?",
|
||||
"confirmations.follow_to_list.confirm": "Folgje en tafoegje oan de list",
|
||||
"confirmations.follow_to_list.message": "Jo moatte {name} folgje om se ta te foegjen oan in list.",
|
||||
"confirmations.follow_to_list.title": "Brûker folgje?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Folger fuortsmite",
|
||||
"confirmations.remove_from_followers.message": "{name} sil jo net mear folgje. Binne jo wis dat jo trochgean wolle?",
|
||||
"confirmations.remove_from_followers.title": "Folger fuortsmite?",
|
||||
"confirmations.reply.confirm": "Reagearje",
|
||||
"confirmations.reply.message": "Troch no te reagearjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
||||
"confirmations.reply.title": "Berjocht oerskriuwe?",
|
||||
"confirmations.unfollow.confirm": "Net mear folgje",
|
||||
"confirmations.unfollow.message": "Binne jo wis dat jo {name} net mear folgje wolle?",
|
||||
"confirmations.unfollow.title": "Brûker net mear folgje?",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Folgers en folgjenden",
|
||||
"navigation_bar.import_export": "Ymportearje en eksportearje",
|
||||
"navigation_bar.lists": "Listen",
|
||||
"navigation_bar.live_feed_local": "Livefeed (lokaal)",
|
||||
"navigation_bar.live_feed_public": "Livefeed (iepenbier)",
|
||||
"navigation_bar.logout": "Ofmelde",
|
||||
"navigation_bar.moderation": "Moderaasje",
|
||||
"navigation_bar.more": "Mear",
|
||||
|
@ -802,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Skeinde regels",
|
||||
"report_notification.categories.violation_sentence": "skeinde regels",
|
||||
"report_notification.open": "Rapport iepenje",
|
||||
"search.clear": "Sykopdracht wiskje",
|
||||
"search.no_recent_searches": "Gjin resinte sykopdrachten",
|
||||
"search.placeholder": "Sykje",
|
||||
"search.quick_action.account_search": "Accounts dy’t oerienkomme mei {x}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Scrios",
|
||||
"confirmations.delete_list.message": "An bhfuil tú cinnte gur mhaith leat an liosta seo a scriosadh go buan?",
|
||||
"confirmations.delete_list.title": "Scrios liosta?",
|
||||
"confirmations.discard_draft.confirm": "Scrios agus lean ar aghaidh",
|
||||
"confirmations.discard_draft.edit.cancel": "Lean an eagarthóireacht",
|
||||
"confirmations.discard_draft.edit.message": "Má leanann tú ar aghaidh, cuirfear deireadh le haon athruithe atá déanta agat ar an bpost atá á chur in eagar agat faoi láthair.",
|
||||
"confirmations.discard_draft.edit.title": "An bhfuil tú ag iarraidh athruithe ar do phost a chaitheamh amach?",
|
||||
"confirmations.discard_draft.post.cancel": "Dréacht atosú",
|
||||
"confirmations.discard_draft.post.message": "Má leanann tú ar aghaidh, scriosfar an post atá á scríobh agat faoi láthair.",
|
||||
"confirmations.discard_draft.post.title": "An bhfuil tú ag iarraidh do dhréachtphost a chaitheamh amach?",
|
||||
"confirmations.discard_edit_media.confirm": "Faigh réidh de",
|
||||
"confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?",
|
||||
"confirmations.edit.confirm": "Eagar",
|
||||
"confirmations.edit.message": "Má dhéanann tú eagarthóireacht anois, déanfar an teachtaireacht atá á cumadh agat faoi láthair a fhorscríobh. An bhfuil tú cinnte gur mhaith leat leanúint ar aghaidh?",
|
||||
"confirmations.edit.title": "Forscríobh postáil?",
|
||||
"confirmations.follow_to_list.confirm": "Lean agus cuir leis an liosta",
|
||||
"confirmations.follow_to_list.message": "Ní mór duit {name} a leanúint chun iad a chur le liosta.",
|
||||
"confirmations.follow_to_list.title": "Lean an t-úsáideoir?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Bain leantóir",
|
||||
"confirmations.remove_from_followers.message": "Scoirfidh {name} de bheith ag leanúint leat. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?",
|
||||
"confirmations.remove_from_followers.title": "Bain an leantóir?",
|
||||
"confirmations.reply.confirm": "Freagair",
|
||||
"confirmations.reply.message": "Scriosfaidh freagra láithreach an teachtaireacht atá a chumadh anois agat. An bhfuil tú cinnte gur mhaith leat leanúint leat?",
|
||||
"confirmations.reply.title": "Forscríobh postáil?",
|
||||
"confirmations.unfollow.confirm": "Ná lean",
|
||||
"confirmations.unfollow.message": "An bhfuil tú cinnte gur mhaith leat {name} a dhíleanúint?",
|
||||
"confirmations.unfollow.title": "Dílean an t-úsáideoir?",
|
||||
|
|
|
@ -167,7 +167,7 @@
|
|||
"column.domain_blocks": "Àrainnean bacte",
|
||||
"column.edit_list": "Deasaich an liosta",
|
||||
"column.favourites": "Annsachdan",
|
||||
"column.firehose": "An saoghal poblach",
|
||||
"column.firehose": "An saoghal beò",
|
||||
"column.follow_requests": "Iarrtasan leantainn",
|
||||
"column.home": "Dachaigh",
|
||||
"column.list_members": "Stiùir buill na liosta",
|
||||
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Sguab às",
|
||||
"confirmations.delete_list.message": "A bheil thu cinnteach gu bheil thu airson an liosta seo a sguabadh às gu buan?",
|
||||
"confirmations.delete_list.title": "A bheil thu airson an liosta a sguabadh às?",
|
||||
"confirmations.discard_draft.confirm": "Tilg air falbh ’s lean air adhart",
|
||||
"confirmations.discard_draft.edit.cancel": "Lean air an deasachadh",
|
||||
"confirmations.discard_draft.edit.message": "Ma leanas tu air adhart, thèid atharraichean sam bith a rinn thu air a’ phost a tha thu a’ deasachadh a thilgeil air falbh.",
|
||||
"confirmations.discard_draft.edit.title": "A bheil thu airson na h-atharraichean air a’ phost agad a thilgeil air falbh?",
|
||||
"confirmations.discard_draft.post.cancel": "Lean air an dreachd",
|
||||
"confirmations.discard_draft.post.message": "Ma leanas tu air adhart, thèid am post a tha thu a’ sgrìobhadh a thilgeil air falbh.",
|
||||
"confirmations.discard_draft.post.title": "A bheil thu airson dreachd a’ phuist agad a thilgeil air falbh?",
|
||||
"confirmations.discard_edit_media.confirm": "Tilg air falbh",
|
||||
"confirmations.discard_edit_media.message": "Tha atharraichean gun sàbhaladh agad ann an tuairisgeul no ro-shealladh a’ mheadhain, a bheil thu airson an tilgeil air falbh co-dhiù?",
|
||||
"confirmations.edit.confirm": "Deasaich",
|
||||
"confirmations.edit.message": "Ma nì thu deasachadh an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a’ sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
|
||||
"confirmations.edit.title": "A bheil thu airson sgrìobhadh thairis air a’ phost?",
|
||||
"confirmations.follow_to_list.confirm": "Lean ’s cuir ris an liosta",
|
||||
"confirmations.follow_to_list.message": "Feumaidh tu {name} a leantainn ron chur ri liosta.",
|
||||
"confirmations.follow_to_list.title": "A bheil thu airson an cleachdaiche a leantainn?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Thoir an neach-leantainn air falbh",
|
||||
"confirmations.remove_from_followers.message": "Cha lean {name} thu tuilleadh. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
|
||||
"confirmations.remove_from_followers.title": "A bheil thu airson an neach-leantainn a thoirt air falbh?",
|
||||
"confirmations.reply.confirm": "Freagair",
|
||||
"confirmations.reply.message": "Ma bheir thu freagairt an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a’ sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
|
||||
"confirmations.reply.title": "A bheil thu airson sgrìobhadh thairis air a’ phost?",
|
||||
"confirmations.unfollow.confirm": "Na lean tuilleadh",
|
||||
"confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson {name} a leantainn tuilleadh?",
|
||||
"confirmations.unfollow.title": "A bheil thu airson sgur de leantainn a chleachdaiche?",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Dàimhean leantainn",
|
||||
"navigation_bar.import_export": "Ion-phortadh ⁊ às-phortadh",
|
||||
"navigation_bar.lists": "Liostaichean",
|
||||
"navigation_bar.live_feed_local": "An saoghal beò (ionadail)",
|
||||
"navigation_bar.live_feed_public": "An saoghal beò (poblach)",
|
||||
"navigation_bar.logout": "Clàraich a-mach",
|
||||
"navigation_bar.moderation": "Maorsainneachd",
|
||||
"navigation_bar.more": "Barrachd",
|
||||
|
@ -571,7 +574,10 @@
|
|||
"navigation_bar.preferences": "Roghainnean",
|
||||
"navigation_bar.privacy_and_reach": "Prìobhaideachd ’s ruigse",
|
||||
"navigation_bar.search": "Lorg",
|
||||
"navigation_bar.search_trends": "Lorg / A’ treandadh",
|
||||
"navigation_panel.collapse_followed_tags": "Co-theannaich clàr-taice nan tagaichean hais ’gan leantainn",
|
||||
"navigation_panel.collapse_lists": "Co-theannaich clàr-taice na liosta",
|
||||
"navigation_panel.expand_followed_tags": "Leudaich clàr-taice nan tagaichean hais ’gan leantainn",
|
||||
"navigation_panel.expand_lists": "Leudaich clàr-taice na liosta",
|
||||
"not_signed_in_indicator.not_signed_in": "Feumaidh tu clàradh a-steach mus fhaigh thu cothrom air a’ ghoireas seo.",
|
||||
"notification.admin.report": "Rinn {name} gearan mu {target}",
|
||||
|
@ -691,6 +697,7 @@
|
|||
"notifications_permission_banner.enable": "Cuir brathan deasga an comas",
|
||||
"notifications_permission_banner.how_to_control": "Airson brathan fhaighinn nuair nach eil Mastodon fosgailte, cuir na brathan deasga an comas. Tha an smachd agad fhèin air dè na seòrsaichean de chonaltradh a ghineas brathan deasga leis a’ phutan {icon} gu h-àrd nuair a bhios iad air an cur an comas.",
|
||||
"notifications_permission_banner.title": "Na caill dad gu bràth tuilleadh",
|
||||
"onboarding.follows.back": "Air ais",
|
||||
"onboarding.follows.done": "Deiseil",
|
||||
"onboarding.follows.empty": "Gu mì-fhortanach, chan urrainn dhuinn toradh a shealltainn an-dràsta. Feuch gleus an luirg no duilleag an rùrachaidh airson daoine ri leantainn a lorg no feuch ris a-rithist an ceann tamaill.",
|
||||
"onboarding.follows.search": "Lorg",
|
||||
|
@ -798,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Briseadh riaghailte",
|
||||
"report_notification.categories.violation_sentence": "briseadh riaghailte",
|
||||
"report_notification.open": "Fosgail an gearan",
|
||||
"search.clear": "Falamhaich an lorg",
|
||||
"search.no_recent_searches": "Cha do rinn thu lorg o chionn goirid",
|
||||
"search.placeholder": "Lorg",
|
||||
"search.quick_action.account_search": "Pròifilean a fhreagras ri {x}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Eliminar",
|
||||
"confirmations.delete_list.message": "Tes a certeza de querer eliminar de xeito permanente esta listaxe?",
|
||||
"confirmations.delete_list.title": "Eliminar a lista?",
|
||||
"confirmations.discard_draft.confirm": "Desbotar e continuar",
|
||||
"confirmations.discard_draft.edit.cancel": "Seguir editando",
|
||||
"confirmations.discard_draft.edit.message": "Se continúas desbotarás os cambios realizados na publicación que estás a editar.",
|
||||
"confirmations.discard_draft.edit.title": "Desbotar os cambios na publicación?",
|
||||
"confirmations.discard_draft.post.cancel": "Retomar o borrador",
|
||||
"confirmations.discard_draft.post.message": "Se continúas desbotarás a publicación que estás a escribir.",
|
||||
"confirmations.discard_draft.post.title": "Desbotar o borrador?",
|
||||
"confirmations.discard_edit_media.confirm": "Descartar",
|
||||
"confirmations.discard_edit_media.message": "Tes cambios sen gardar para a vista previa ou descrición do multimedia, descartamos os cambios?",
|
||||
"confirmations.edit.confirm": "Editar",
|
||||
"confirmations.edit.message": "Ao editar sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?",
|
||||
"confirmations.edit.title": "Editar a publicación?",
|
||||
"confirmations.follow_to_list.confirm": "Seguir e engadir á lista",
|
||||
"confirmations.follow_to_list.message": "Tes que seguir a {name} para poder engadila a unha lista.",
|
||||
"confirmations.follow_to_list.title": "Seguir á usuaria?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Quitar seguidora",
|
||||
"confirmations.remove_from_followers.message": "{name} vai deixar de seguirte. É isto o que queres?",
|
||||
"confirmations.remove_from_followers.title": "Quitar seguidora?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?",
|
||||
"confirmations.reply.title": "Editar a publicación?",
|
||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||
"confirmations.unfollow.message": "Tes certeza de querer deixar de seguir a {name}?",
|
||||
"confirmations.unfollow.title": "Deixar de seguir á usuaria?",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "למחוק",
|
||||
"confirmations.delete_list.message": "האם אתם בטוחים שאתם רוצים למחוק את הרשימה לצמיתות?",
|
||||
"confirmations.delete_list.title": "למחוק רשימה?",
|
||||
"confirmations.discard_draft.confirm": "לאפס ולהמשיך",
|
||||
"confirmations.discard_draft.edit.cancel": "חזרה לעריכה",
|
||||
"confirmations.discard_draft.edit.message": "מעבר הלאה יאפס את כל השינויים שביצעת להודעה שכרגע ערכת.",
|
||||
"confirmations.discard_draft.edit.title": "לאפס את השינויים להודעתך?",
|
||||
"confirmations.discard_draft.post.cancel": "חזרה לעריכת טיוטא",
|
||||
"confirmations.discard_draft.post.message": "מעבר הלאה ימחק את ההודעה שכרגע חיברת.",
|
||||
"confirmations.discard_draft.post.title": "לוותר על הטיוטא?",
|
||||
"confirmations.discard_edit_media.confirm": "השלך",
|
||||
"confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?",
|
||||
"confirmations.edit.confirm": "עריכה",
|
||||
"confirmations.edit.message": "עריכה תדרוס את ההודעה שכבר התחלת לכתוב. האם להמשיך?",
|
||||
"confirmations.edit.title": "לבצע החלפת תוכן?",
|
||||
"confirmations.follow_to_list.confirm": "עקיבה והוספה לרשימה",
|
||||
"confirmations.follow_to_list.message": "כדי להכניס את {name} לרשימה, ראשית יש לעקוב אחריהם.",
|
||||
"confirmations.follow_to_list.title": "לעקוב אחר המשתמש.ת?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "הסרת עוקב",
|
||||
"confirmations.remove_from_followers.message": "{name} יוסר/תוסר ממעקב אחריך. האם להמשיך?",
|
||||
"confirmations.remove_from_followers.title": "להסיר עוקב/עוקבת?",
|
||||
"confirmations.reply.confirm": "תגובה",
|
||||
"confirmations.reply.message": "תגובה עכשיו תמחק את ההודעה שכבר התחלת לכתוב. להמשיך?",
|
||||
"confirmations.reply.title": "לבצע החלפת תוכן?",
|
||||
"confirmations.unfollow.confirm": "הפסקת מעקב",
|
||||
"confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
|
||||
"confirmations.unfollow.title": "לבטל מעקב אחר המשתמש.ת?",
|
||||
|
|
|
@ -163,15 +163,11 @@
|
|||
"confirmations.delete_list.message": "क्या आप वाकई इस लिस्ट को हमेशा के लिये मिटाना चाहते हैं?",
|
||||
"confirmations.discard_edit_media.confirm": "डिस्कार्ड",
|
||||
"confirmations.discard_edit_media.message": "लिस्ट में जोड़ें",
|
||||
"confirmations.edit.confirm": "संशोधित करें",
|
||||
"confirmations.edit.message": "अभी संपादन किया तो वो संदेश मिट जायेगा जिसे आप लिख रहे थे। क्या आप जारी रखना चाहते हैं?",
|
||||
"confirmations.logout.confirm": "लॉग आउट करें",
|
||||
"confirmations.logout.message": "आप सुनिश्चित हैं कि लॉगआउट करना चाहते हैं?",
|
||||
"confirmations.mute.confirm": "शांत",
|
||||
"confirmations.redraft.confirm": "मिटायें और पुनःप्रारूपण करें",
|
||||
"confirmations.redraft.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं और इसे फिर से ड्राफ्ट करना चाहते हैं? पसंदीदा और बूस्ट खो जाएंगे, और मूल पोस्ट के उत्तर अनाथ हो जाएंगे।",
|
||||
"confirmations.reply.confirm": "उत्तर दें",
|
||||
"confirmations.reply.message": "अब उत्तर देना उस संदेश को अधिलेखित कर देगा जो आप वर्तमान में बना रहे हैं। क्या आप सुनिश्चित रूप से आगे बढ़ना चाहते हैं?",
|
||||
"confirmations.unfollow.confirm": "अनफॉलो करें",
|
||||
"confirmations.unfollow.message": "क्या आप वाकई {name} को अनफॉलो करना चाहते हैं?",
|
||||
"conversation.delete": "वार्तालाप हटाएँ",
|
||||
|
|
|
@ -142,13 +142,10 @@
|
|||
"confirmations.delete_list.message": "Jeste li sigurni da želite trajno obrisati ovu listu?",
|
||||
"confirmations.discard_edit_media.confirm": "Odbaciti",
|
||||
"confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
|
||||
"confirmations.edit.confirm": "Uredi",
|
||||
"confirmations.logout.confirm": "Odjavi se",
|
||||
"confirmations.logout.message": "Jeste li sigurni da se želite odjaviti?",
|
||||
"confirmations.mute.confirm": "Utišaj",
|
||||
"confirmations.redraft.confirm": "Izbriši i ponovno uredi",
|
||||
"confirmations.reply.confirm": "Odgovori",
|
||||
"confirmations.reply.message": "Odgovaranje sada će prepisati poruku koju upravo pišete. Jeste li sigurni da želite nastaviti?",
|
||||
"confirmations.unfollow.confirm": "Prestani pratiti",
|
||||
"confirmations.unfollow.message": "Jeste li sigurni da želite prestati pratiti {name}?",
|
||||
"conversation.delete": "Izbriši razgovor",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Törlés",
|
||||
"confirmations.delete_list.message": "Biztos, hogy véglegesen törölni szeretnéd ezt a listát?",
|
||||
"confirmations.delete_list.title": "Törlöd a listát?",
|
||||
"confirmations.discard_draft.confirm": "Elvetés és folytatás",
|
||||
"confirmations.discard_draft.edit.cancel": "Szerkesztés folytatása",
|
||||
"confirmations.discard_draft.edit.message": "A folytatással elveted a jelenleg szerkesztett bejegyzés esetleges változtatásait.",
|
||||
"confirmations.discard_draft.edit.title": "Elveted a bejegyzés változtatásait?",
|
||||
"confirmations.discard_draft.post.cancel": "Piszkozat folytatása",
|
||||
"confirmations.discard_draft.post.message": "A folytatással elveted a jelenleg írt bejegyzést.",
|
||||
"confirmations.discard_draft.post.title": "Elveted a piszkozatot?",
|
||||
"confirmations.discard_edit_media.confirm": "Elvetés",
|
||||
"confirmations.discard_edit_media.message": "Mentetlen változtatásaid vannak a média leírásában vagy előnézetében, mindenképp elveted?",
|
||||
"confirmations.edit.confirm": "Szerkesztés",
|
||||
"confirmations.edit.message": "Ha most szerkeszted, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?",
|
||||
"confirmations.edit.title": "Felülírod a bejegyzést?",
|
||||
"confirmations.follow_to_list.confirm": "Követés, és hozzáadás a listához",
|
||||
"confirmations.follow_to_list.message": "Követned kell {name} felhasználót, hogy hozzáadhasd a listához.",
|
||||
"confirmations.follow_to_list.title": "Felhasználó követése?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Követő eltávolítása",
|
||||
"confirmations.remove_from_followers.message": "{name} követ téged. Biztos, hogy folytatod?",
|
||||
"confirmations.remove_from_followers.title": "Követő eltávolítása?",
|
||||
"confirmations.reply.confirm": "Válasz",
|
||||
"confirmations.reply.message": "Ha most válaszolsz, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?",
|
||||
"confirmations.reply.title": "Felülírod a bejegyzést?",
|
||||
"confirmations.unfollow.confirm": "Követés visszavonása",
|
||||
"confirmations.unfollow.message": "Biztos, hogy vissza szeretnéd vonni {name} követését?",
|
||||
"confirmations.unfollow.title": "Megszünteted a felhasználó követését?",
|
||||
|
|
|
@ -120,13 +120,10 @@
|
|||
"confirmations.delete_list.confirm": "Ջնջել",
|
||||
"confirmations.delete_list.message": "Վստա՞հ ես, որ ուզում ես մշտապէս ջնջել այս ցանկը։",
|
||||
"confirmations.discard_edit_media.confirm": "Չեղարկել",
|
||||
"confirmations.edit.confirm": "Խմբագրել",
|
||||
"confirmations.logout.confirm": "Ելք",
|
||||
"confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ",
|
||||
"confirmations.mute.confirm": "Լռեցնել",
|
||||
"confirmations.redraft.confirm": "Ջնջել եւ խմբագրել նորից",
|
||||
"confirmations.reply.confirm": "Պատասխանել",
|
||||
"confirmations.reply.message": "Այս պահին պատասխանելը կը չեղարկի ձեր՝ այս պահին անաւարտ հաղորդագրութիւնը։ Համոզուա՞ծ էք։",
|
||||
"confirmations.unfollow.confirm": "Ապահետեւել",
|
||||
"confirmations.unfollow.message": "Վստա՞հ ես, որ ուզում ես այլեւս չհետեւել {name}֊ին։",
|
||||
"conversation.delete": "Ջնջել խօսակցութիւնը",
|
||||
|
|
|
@ -218,9 +218,6 @@
|
|||
"confirmations.delete_list.title": "Deler lista?",
|
||||
"confirmations.discard_edit_media.confirm": "Abandonar",
|
||||
"confirmations.discard_edit_media.message": "Tu ha cambiamentos non salvate in le description o previsualisation del objecto multimedial. Abandonar los?",
|
||||
"confirmations.edit.confirm": "Modificar",
|
||||
"confirmations.edit.message": "Si tu modifica isto ora, le message in curso de composition essera perdite. Es tu secur de voler continuar?",
|
||||
"confirmations.edit.title": "Superscriber le message?",
|
||||
"confirmations.follow_to_list.confirm": "Sequer e adder al lista",
|
||||
"confirmations.follow_to_list.message": "Tu debe sequer {name} pro poter adder le/la a un lista.",
|
||||
"confirmations.follow_to_list.title": "Sequer le usator?",
|
||||
|
@ -238,9 +235,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Remover sequitor",
|
||||
"confirmations.remove_from_followers.message": "{name} non plus te sequera. Es tu secur de voler continuar?",
|
||||
"confirmations.remove_from_followers.title": "Remover sequitor?",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Si tu responde ora, le message in curso de composition essera perdite. Es tu secur de voler continuar?",
|
||||
"confirmations.reply.title": "Superscriber le message?",
|
||||
"confirmations.unfollow.confirm": "Non plus sequer",
|
||||
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
|
||||
"confirmations.unfollow.title": "Cessar de sequer le usator?",
|
||||
|
|
|
@ -176,9 +176,6 @@
|
|||
"confirmations.delete_list.title": "Delete list?",
|
||||
"confirmations.discard_edit_media.confirm": "Buang",
|
||||
"confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?",
|
||||
"confirmations.edit.confirm": "Ubah",
|
||||
"confirmations.edit.message": "Mengubah akan menimpa pesan yang sedang anda tulis. Apakah anda yakin ingin melanjutkan?",
|
||||
"confirmations.edit.title": "Overwrite post?",
|
||||
"confirmations.logout.confirm": "Keluar",
|
||||
"confirmations.logout.message": "Apakah Anda yakin ingin keluar?",
|
||||
"confirmations.logout.title": "Log out?",
|
||||
|
@ -186,9 +183,6 @@
|
|||
"confirmations.redraft.confirm": "Hapus dan susun ulang",
|
||||
"confirmations.redraft.message": "Apakah anda yakin ingin menghapus postingan ini dan menyusun ulang postingan ini? Favorit dan peningkatan akan hilang, dan balasan ke postingan asli tidak akan terhubung ke postingan manapun.",
|
||||
"confirmations.redraft.title": "Delete & redraft post?",
|
||||
"confirmations.reply.confirm": "Balas",
|
||||
"confirmations.reply.message": "Membalas sekarang akan menimpa pesan yang sedang Anda buat. Anda yakin ingin melanjutkan?",
|
||||
"confirmations.reply.title": "Delete & redraft post?",
|
||||
"confirmations.unfollow.confirm": "Berhenti mengikuti",
|
||||
"confirmations.unfollow.message": "Apakah Anda ingin berhenti mengikuti {name}?",
|
||||
"confirmations.unfollow.title": "Unfollow user?",
|
||||
|
|
|
@ -163,15 +163,11 @@
|
|||
"confirmations.delete_list.message": "Esque tu vermen vole permanentmen deleter ti-ci liste?",
|
||||
"confirmations.discard_edit_media.confirm": "Forjettar",
|
||||
"confirmations.discard_edit_media.message": "Tu have ínconservat changes al descrition de medie o al previse, forjettar les sin egarda?",
|
||||
"confirmations.edit.confirm": "Redacter",
|
||||
"confirmations.edit.message": "Redacter nu va remplazzar li missage quel tu actualmen composi. Esque tu vermen vole proceder?",
|
||||
"confirmations.logout.confirm": "Exear",
|
||||
"confirmations.logout.message": "Esque tu vermen vole exear?",
|
||||
"confirmations.mute.confirm": "Silentiar",
|
||||
"confirmations.redraft.confirm": "Deleter & redacter",
|
||||
"confirmations.redraft.message": "Esque tu vermen vole deleter ti-ci posta e redacter it? Favorites e boosts va esser perdit, e responses al posta original va esser orfanat.",
|
||||
"confirmations.reply.confirm": "Responder",
|
||||
"confirmations.reply.message": "Responder nu va remplazzar li missage quel tu actualmen composi. Esque tu vermen vole proceder?",
|
||||
"confirmations.unfollow.confirm": "Dessequer",
|
||||
"confirmations.unfollow.message": "Esque tu vermen vole dessequer {name}?",
|
||||
"conversation.delete": "Deleter conversation",
|
||||
|
|
|
@ -43,9 +43,7 @@
|
|||
"confirmations.delete.confirm": "Hichapụ",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Hichapụ",
|
||||
"confirmations.edit.confirm": "Dezie",
|
||||
"confirmations.mute.confirm": "Mee ogbi",
|
||||
"confirmations.reply.confirm": "Zaa",
|
||||
"confirmations.unfollow.confirm": "Kwụsị iso",
|
||||
"conversation.delete": "Hichapụ nkata",
|
||||
"conversation.open": "Lelee nkata",
|
||||
|
|
|
@ -204,9 +204,6 @@
|
|||
"confirmations.delete_list.title": "Ka efacar listo?",
|
||||
"confirmations.discard_edit_media.confirm": "Forigar",
|
||||
"confirmations.discard_edit_media.message": "Vu havas nekonservita chanji di audvidajpriskribo o prevido, ka forigas ili irgakaze?",
|
||||
"confirmations.edit.confirm": "Modifikez",
|
||||
"confirmations.edit.message": "Modifikar nun remplasos la mesajo quon vu nune skribas. Ka vu certe volas procedar?",
|
||||
"confirmations.edit.title": "Ka remplasar posto?",
|
||||
"confirmations.follow_to_list.confirm": "Sequar e adjuntar ad listo",
|
||||
"confirmations.follow_to_list.message": "Vu bezonas sequar {name} por adjuntar lu ad listo.",
|
||||
"confirmations.follow_to_list.title": "Ka sequar uzanto?",
|
||||
|
@ -221,9 +218,6 @@
|
|||
"confirmations.redraft.confirm": "Efacez e riskisez",
|
||||
"confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e repeti esos perdita, e respondi al posto originala esos orfanigita.",
|
||||
"confirmations.redraft.title": "Ka efacar & riskisar posto?",
|
||||
"confirmations.reply.confirm": "Respondez",
|
||||
"confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?",
|
||||
"confirmations.reply.title": "Ka remplasar posto?",
|
||||
"confirmations.unfollow.confirm": "Desequez",
|
||||
"confirmations.unfollow.message": "Ka vu certe volas desequar {name}?",
|
||||
"confirmations.unfollow.title": "Ka dessequar uzanto?",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Eyða",
|
||||
"confirmations.delete_list.message": "Ertu viss um að þú viljir eyða þessum lista endanlega?",
|
||||
"confirmations.delete_list.title": "Eyða lista?",
|
||||
"confirmations.discard_draft.confirm": "Henda og halda áfram",
|
||||
"confirmations.discard_draft.edit.cancel": "Halda áfram að breyta",
|
||||
"confirmations.discard_draft.edit.message": "Ef þú heldur áfram verður öllum breytingum sem þú hefur gert á færslunni verða hent.",
|
||||
"confirmations.discard_draft.edit.title": "Henda breytingum á færslunni þinni?",
|
||||
"confirmations.discard_draft.post.cancel": "Halda áfram með drög",
|
||||
"confirmations.discard_draft.post.message": "Ef þú heldur áfram verður færslunni sem þú ert að skrifA hent.",
|
||||
"confirmations.discard_draft.post.title": "Henda drögum að færslunni þinni?",
|
||||
"confirmations.discard_edit_media.confirm": "Henda",
|
||||
"confirmations.discard_edit_media.message": "Þú ert með óvistaðar breytingar á lýsingu myndefnis eða forskoðunar, henda þeim samt?",
|
||||
"confirmations.edit.confirm": "Breyta",
|
||||
"confirmations.edit.message": "Ef þú breytir núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?",
|
||||
"confirmations.edit.title": "Skrifa yfir færslu?",
|
||||
"confirmations.follow_to_list.confirm": "Fylgjast með og bæta á lista",
|
||||
"confirmations.follow_to_list.message": "Þú þarft að fylgjast með {name} til að bæta viðkomandi á lista.",
|
||||
"confirmations.follow_to_list.title": "Fylgjast með notanda?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Fjarlægja fylgjanda",
|
||||
"confirmations.remove_from_followers.message": "{name} mun hætta að fylgjast með þér. Ertu viss um að þú viljir halda áfram?",
|
||||
"confirmations.remove_from_followers.title": "Fjarlægja fylgjanda?",
|
||||
"confirmations.reply.confirm": "Svara",
|
||||
"confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?",
|
||||
"confirmations.reply.title": "Skrifa yfir færslu?",
|
||||
"confirmations.unfollow.confirm": "Hætta að fylgja",
|
||||
"confirmations.unfollow.message": "Ertu viss um að þú viljir hætta að fylgjast með {name}?",
|
||||
"confirmations.unfollow.title": "Hætta að fylgjast með viðkomandi?",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Fylgist með og fylgjendur",
|
||||
"navigation_bar.import_export": "Inn- og útflutningur",
|
||||
"navigation_bar.lists": "Listar",
|
||||
"navigation_bar.live_feed_local": "Bein streymi (á netþjóni)",
|
||||
"navigation_bar.live_feed_public": "Bein streymi (opinber)",
|
||||
"navigation_bar.logout": "Útskráning",
|
||||
"navigation_bar.moderation": "Umsjón",
|
||||
"navigation_bar.more": "Meira",
|
||||
|
@ -802,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Brot á reglum",
|
||||
"report_notification.categories.violation_sentence": "brot á reglum",
|
||||
"report_notification.open": "Opin kæra",
|
||||
"search.clear": "Hreinsa leit",
|
||||
"search.no_recent_searches": "Engar nýlegar leitir",
|
||||
"search.placeholder": "Leita",
|
||||
"search.quick_action.account_search": "Notandasnið sem samsvara {x}",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "Elimina",
|
||||
"confirmations.delete_list.message": "Sei sicuro/a di voler eliminare permanentemente questo elenco?",
|
||||
"confirmations.delete_list.title": "Eliminare la lista?",
|
||||
"confirmations.discard_draft.confirm": "Scarta e continua",
|
||||
"confirmations.discard_draft.edit.cancel": "Continua modifica",
|
||||
"confirmations.discard_draft.edit.message": "Continuare scarterà ogni modifica che hai fatto al post che stai attualmente modificando.",
|
||||
"confirmations.discard_draft.edit.title": "Scartare le modifiche al tuo post?",
|
||||
"confirmations.discard_draft.post.cancel": "Continua bozza",
|
||||
"confirmations.discard_draft.post.message": "Continuare scarterà il post che stai attualmente creando.",
|
||||
"confirmations.discard_draft.post.title": "Scartare la tua bozza del post?",
|
||||
"confirmations.discard_edit_media.confirm": "Scarta",
|
||||
"confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?",
|
||||
"confirmations.edit.confirm": "Modifica",
|
||||
"confirmations.edit.message": "Modificare ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?",
|
||||
"confirmations.edit.title": "Sovrascrivere il post?",
|
||||
"confirmations.follow_to_list.confirm": "Segui e aggiungi alla lista",
|
||||
"confirmations.follow_to_list.message": "Devi seguire {name} per aggiungerli a una lista.",
|
||||
"confirmations.follow_to_list.title": "Seguire l'utente?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "Rimuovi il seguace",
|
||||
"confirmations.remove_from_followers.message": "{name} smetterà di seguirti. Si è sicuri di voler procedere?",
|
||||
"confirmations.remove_from_followers.title": "Rimuovi il seguace?",
|
||||
"confirmations.reply.confirm": "Rispondi",
|
||||
"confirmations.reply.message": "Rispondere ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?",
|
||||
"confirmations.reply.title": "Sovrascrivere il post?",
|
||||
"confirmations.unfollow.confirm": "Smetti di seguire",
|
||||
"confirmations.unfollow.message": "Sei sicuro di voler smettere di seguire {name}?",
|
||||
"confirmations.unfollow.title": "Smettere di seguire l'utente?",
|
||||
|
@ -563,6 +564,8 @@
|
|||
"navigation_bar.follows_and_followers": "Seguiti e seguaci",
|
||||
"navigation_bar.import_export": "Importa ed esporta",
|
||||
"navigation_bar.lists": "Liste",
|
||||
"navigation_bar.live_feed_local": "Feed live (locale)",
|
||||
"navigation_bar.live_feed_public": "Feed live (pubblico)",
|
||||
"navigation_bar.logout": "Disconnettiti",
|
||||
"navigation_bar.moderation": "Moderazione",
|
||||
"navigation_bar.more": "Altro",
|
||||
|
@ -571,7 +574,10 @@
|
|||
"navigation_bar.preferences": "Preferenze",
|
||||
"navigation_bar.privacy_and_reach": "Privacy e copertura",
|
||||
"navigation_bar.search": "Cerca",
|
||||
"navigation_bar.search_trends": "Cerca / In tendenza",
|
||||
"navigation_panel.collapse_followed_tags": "Comprimi il menù degli hashtag seguiti",
|
||||
"navigation_panel.collapse_lists": "Chiudi il menu elenco",
|
||||
"navigation_panel.expand_followed_tags": "Espandi il menù degli hashtag seguiti",
|
||||
"navigation_panel.expand_lists": "Espandi il menu elenco",
|
||||
"not_signed_in_indicator.not_signed_in": "Devi accedere per consultare questa risorsa.",
|
||||
"notification.admin.report": "{name} ha segnalato {target}",
|
||||
|
@ -799,6 +805,7 @@
|
|||
"report_notification.categories.violation": "Violazione delle regole",
|
||||
"report_notification.categories.violation_sentence": "violazione delle regole",
|
||||
"report_notification.open": "Apri segnalazione",
|
||||
"search.clear": "Cancella ricerca",
|
||||
"search.no_recent_searches": "Nessuna ricerca recente",
|
||||
"search.placeholder": "Cerca",
|
||||
"search.quick_action.account_search": "Profili corrispondenti a {x}",
|
||||
|
|
|
@ -221,9 +221,6 @@
|
|||
"confirmations.delete_list.title": "リストを削除しようとしています",
|
||||
"confirmations.discard_edit_media.confirm": "破棄",
|
||||
"confirmations.discard_edit_media.message": "メディアの説明またはプレビューに保存されていない変更があります。それでも破棄しますか?",
|
||||
"confirmations.edit.confirm": "編集",
|
||||
"confirmations.edit.message": "今編集すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
|
||||
"confirmations.edit.title": "作成中の内容を上書きしようとしています",
|
||||
"confirmations.follow_to_list.confirm": "フォローしてリストに追加",
|
||||
"confirmations.follow_to_list.message": "リストに追加するには{name}さんをフォローしている必要があります。",
|
||||
"confirmations.follow_to_list.title": "ユーザーをフォローしますか?",
|
||||
|
@ -241,9 +238,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "フォロワーを削除",
|
||||
"confirmations.remove_from_followers.message": "{name}さんはあなたをフォローしなくなります。本当によろしいですか?",
|
||||
"confirmations.remove_from_followers.title": "フォロワーを削除しますか?",
|
||||
"confirmations.reply.confirm": "返信",
|
||||
"confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
|
||||
"confirmations.reply.title": "作成中の内容を上書きしようとしています",
|
||||
"confirmations.unfollow.confirm": "フォロー解除",
|
||||
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
||||
"confirmations.unfollow.title": "フォローを解除しようとしています",
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
"about.domain_blocks.preamble": "Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi.",
|
||||
"about.domain_blocks.silenced.title": "Ɣur-s talast",
|
||||
"about.domain_blocks.suspended.title": "Yettwaḥbes",
|
||||
"about.language_label": "Tutlayt",
|
||||
"about.not_available": "Talɣut-a ur tettwabder ara deg uqeddac-a.",
|
||||
"about.powered_by": "Azeṭṭa inmetti yettwasɣelsen sɣur {mastodon}",
|
||||
"about.rules": "Ilugan n uqeddac",
|
||||
|
@ -163,8 +164,6 @@
|
|||
"confirmations.delete_list.message": "Tebɣiḍ s tidet ad tekkseḍ umuɣ-agi i lebda?",
|
||||
"confirmations.delete_list.title": "Tukksa n tebdart?",
|
||||
"confirmations.discard_edit_media.confirm": "Sefsex",
|
||||
"confirmations.edit.confirm": "Ẓreg",
|
||||
"confirmations.edit.message": "Abeddel tura ad d-yaru izen-nni i d-tegreḍ akka tura. Tetḥeqqeḍ tebɣiḍ ad tkemmleḍ?",
|
||||
"confirmations.follow_to_list.confirm": "Ḍfeṛ-it sakin rnu-t ɣer tebdart",
|
||||
"confirmations.logout.confirm": "Ffeɣ",
|
||||
"confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
|
||||
|
@ -174,8 +173,6 @@
|
|||
"confirmations.missing_alt_text.title": "Rnu aḍris amlellay?",
|
||||
"confirmations.mute.confirm": "Sgugem",
|
||||
"confirmations.redraft.confirm": "Kkes sakin ɛiwed tira",
|
||||
"confirmations.reply.confirm": "Err",
|
||||
"confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
|
||||
"confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
|
||||
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
|
||||
"content_warning.hide": "Ffer tasuffeɣt",
|
||||
|
@ -241,6 +238,10 @@
|
|||
"explore.trending_links": "Isallen",
|
||||
"explore.trending_statuses": "Tisuffaɣ",
|
||||
"explore.trending_tags": "Ihacṭagen",
|
||||
"featured_carousel.next": "Uḍfiṛ",
|
||||
"featured_carousel.post": "Tasuffeɣt",
|
||||
"featured_carousel.previous": "Uzwir",
|
||||
"featured_carousel.slide": "{index} ɣef {total}",
|
||||
"filter_modal.added.review_and_configure_title": "Iɣewwaṛen n imzizdig",
|
||||
"filter_modal.added.settings_link": "asebter n yiɣewwaṛen",
|
||||
"filter_modal.added.short_explanation": "Tasuffeɣt-a tettwarna ɣer taggayt-a n yimsizdegen: {title}.",
|
||||
|
@ -361,6 +362,7 @@
|
|||
"lists.add_to_list": "Rnu ɣer tebdart",
|
||||
"lists.add_to_lists": "Rnu {name} ɣer tebdarin",
|
||||
"lists.create": "Snulfu-d",
|
||||
"lists.create_list": "Snulfu-d tabdart",
|
||||
"lists.delete": "Kkes tabdart",
|
||||
"lists.done": "Immed",
|
||||
"lists.edit": "Ẓreg tabdart",
|
||||
|
@ -401,6 +403,7 @@
|
|||
"navigation_bar.lists": "Tibdarin",
|
||||
"navigation_bar.logout": "Ffeɣ",
|
||||
"navigation_bar.moderation": "Aseɣyed",
|
||||
"navigation_bar.more": "Ugar",
|
||||
"navigation_bar.mutes": "Iseqdacen yettwasusmen",
|
||||
"navigation_bar.opened_in_classic_interface": "Tisuffaɣ, imiḍanen akked isebtar-nniḍen igejdanen ldin-d s wudem amezwer deg ugrudem web aklasiki.",
|
||||
"navigation_bar.preferences": "Imenyafen",
|
||||
|
@ -614,6 +617,7 @@
|
|||
"status.mute_conversation": "Sgugem adiwenni",
|
||||
"status.open": "Semɣeṛ tasuffeɣt-ayi",
|
||||
"status.pin": "Senteḍ-itt deg umaɣnu",
|
||||
"status.quote_post_author": "Izen sɣur {name}",
|
||||
"status.read_more": "Issin ugar",
|
||||
"status.reblog": "Bḍu",
|
||||
"status.reblogged_by": "Yebḍa-tt {name}",
|
||||
|
@ -639,7 +643,10 @@
|
|||
"status.unpin": "Kkes asenteḍ seg umaɣnu",
|
||||
"subscribed_languages.save": "Sekles ibeddilen",
|
||||
"tabs_bar.home": "Agejdan",
|
||||
"tabs_bar.menu": "Umuɣ",
|
||||
"tabs_bar.notifications": "Ilɣa",
|
||||
"tabs_bar.publish": "Tasuffeɣt tamaynut",
|
||||
"tabs_bar.search": "Nadi",
|
||||
"terms_of_service.title": "Tiwtilin n useqdec",
|
||||
"time_remaining.days": "Mazal {number, plural, one {# wass} other {# wussan}}",
|
||||
"time_remaining.hours": "Mazal {number, plural, one {# usarag} other {# yisragen}}",
|
||||
|
|
|
@ -139,8 +139,6 @@
|
|||
"confirmations.logout.message": "Шығатыныңызға сенімдісіз бе?",
|
||||
"confirmations.mute.confirm": "Үнсіз қылу",
|
||||
"confirmations.redraft.confirm": "Өшіруді құптау",
|
||||
"confirmations.reply.confirm": "Жауап",
|
||||
"confirmations.reply.message": "Жауабыңыз жазып жатқан жазбаңыздың үстіне кетеді. Жалғастырамыз ба?",
|
||||
"confirmations.unfollow.confirm": "Оқымау",
|
||||
"confirmations.unfollow.message": "\"{name} атты қолданушыға енді жазылғыңыз келмей ме?",
|
||||
"conversation.delete": "Пікірталасты өшіру",
|
||||
|
|
|
@ -219,11 +219,15 @@
|
|||
"confirmations.delete_list.confirm": "삭제",
|
||||
"confirmations.delete_list.message": "정말로 이 리스트를 영구적으로 삭제하시겠습니까?",
|
||||
"confirmations.delete_list.title": "리스트를 삭제할까요?",
|
||||
"confirmations.discard_draft.confirm": "삭제 및 계속",
|
||||
"confirmations.discard_draft.edit.cancel": "계속 편집",
|
||||
"confirmations.discard_draft.edit.message": "편집중인 게시물 변경사항을 모두 잃게 됩니다.",
|
||||
"confirmations.discard_draft.edit.title": "게시물 변경사항을 삭제할까요?",
|
||||
"confirmations.discard_draft.post.cancel": "초안으로 돌아가기",
|
||||
"confirmations.discard_draft.post.message": "작성하고 있던 변경사항을 잃게 됩니다.",
|
||||
"confirmations.discard_draft.post.title": "게시물 초안을 삭제할까요?",
|
||||
"confirmations.discard_edit_media.confirm": "저장 안함",
|
||||
"confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?",
|
||||
"confirmations.edit.confirm": "수정",
|
||||
"confirmations.edit.message": "지금 편집하면 작성 중인 메시지를 덮어씁니다. 진행이 확실한가요?",
|
||||
"confirmations.edit.title": "게시물을 덮어쓸까요?",
|
||||
"confirmations.follow_to_list.confirm": "팔로우하고 리스트에 추가",
|
||||
"confirmations.follow_to_list.message": "리스트에 추가하려면 {name} 님을 팔로우해야 합니다.",
|
||||
"confirmations.follow_to_list.title": "팔로우할까요?",
|
||||
|
@ -241,9 +245,6 @@
|
|||
"confirmations.remove_from_followers.confirm": "팔로워 제거",
|
||||
"confirmations.remove_from_followers.message": "{name} 님이 나를 팔로우하지 않게 됩니다. 계속할까요?",
|
||||
"confirmations.remove_from_followers.title": "팔로워를 제거할까요?",
|
||||
"confirmations.reply.confirm": "답글",
|
||||
"confirmations.reply.message": "지금 답장하면 작성 중인 메시지를 덮어쓰게 됩니다. 정말 진행합니까?",
|
||||
"confirmations.reply.title": "게시물을 덮어쓸까요?",
|
||||
"confirmations.unfollow.confirm": "팔로우 해제",
|
||||
"confirmations.unfollow.message": "정말로 {name} 님을 팔로우 해제하시겠습니까?",
|
||||
"confirmations.unfollow.title": "사용자를 언팔로우 할까요?",
|
||||
|
|
|
@ -164,14 +164,11 @@
|
|||
"confirmations.delete_list.message": "Tu ji dil dixwazî vê lîsteyê bi awayekî mayînde jê bibî?",
|
||||
"confirmations.discard_edit_media.confirm": "Biavêje",
|
||||
"confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?",
|
||||
"confirmations.edit.confirm": "Serrast bike",
|
||||
"confirmations.logout.confirm": "Derkeve",
|
||||
"confirmations.logout.message": "Ma tu dixwazî ku derkevî?",
|
||||
"confirmations.mute.confirm": "Bêdeng bike",
|
||||
"confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike",
|
||||
"confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û ji nû ve reşnivîsek çê bikî? Bijarte û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.",
|
||||
"confirmations.reply.confirm": "Bersivê bide",
|
||||
"confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?",
|
||||
"confirmations.unfollow.confirm": "Neşopîne",
|
||||
"confirmations.unfollow.message": "Ma tu dixwazî ku dev ji şopa {name} berdî?",
|
||||
"content_warning.show_more": "Bêtir nîşan bide",
|
||||
|
|
|
@ -86,8 +86,6 @@
|
|||
"confirmations.logout.message": "Owgh hwi sur a vynnes digelmi?",
|
||||
"confirmations.mute.confirm": "Tawhe",
|
||||
"confirmations.redraft.confirm": "Dilea & daskynskrifa",
|
||||
"confirmations.reply.confirm": "Gorthebi",
|
||||
"confirmations.reply.message": "Gorthebi lemmyn a wra ughskrifa'n messach esowgh hwi orth y skrifa lemmyn. Owgh hwi sur a vynnes pesya?",
|
||||
"confirmations.unfollow.confirm": "Anholya",
|
||||
"confirmations.unfollow.message": "Owgh hwi sur a vynnes anholya {name}?",
|
||||
"conversation.delete": "Dilea kesklapp",
|
||||
|
|
|
@ -81,7 +81,6 @@
|
|||
"confirmations.delete_list.confirm": "Oblitterare",
|
||||
"confirmations.discard_edit_media.message": "Habēs mutationēs in descriptionem vel prōspectum medii quae nōn sunt servātae; eas dēmittam?",
|
||||
"confirmations.mute.confirm": "Confutare",
|
||||
"confirmations.reply.confirm": "Respondere",
|
||||
"disabled_account_banner.account_settings": "Praeferentiae ratiōnis",
|
||||
"disabled_account_banner.text": "Ratio tua {disabledAccount} debilitata est.",
|
||||
"domain_block_modal.you_wont_see_posts": "Nuntios aut notificātiōnēs ab usoribus in hōc servō nōn vidēbis.",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user