Merge branch 'main' into glitch-soc/merge-upstream

Conflicts:
- `README.md`:
  Minor upstream change, our README is completely different.
  Kept ours.
- `lib/tasks/assets.rake`:
  glitch-soc has extra code to deal with its theming system,
  upstream changed a line that exists in glitch-soc.
  Applied upstream changes.
main
Claire 4 months ago
commit 85558a5e18

@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.15.0', require: false
gem 'bootsnap', '~> 1.16.0', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.2'

@ -122,7 +122,7 @@ GEM
debug_inspector (>= 0.0.1)
blurhash (0.1.6)
ffi (~> 1.14)
bootsnap (1.15.0)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (5.4.0)
browser (4.2.0)
@ -207,7 +207,7 @@ GEM
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.6.3)
doorkeeper (5.6.4)
railties (>= 5)
dotenv (2.8.1)
dotenv-rails (2.8.1)
@ -229,7 +229,7 @@ GEM
tzinfo
excon (0.95.0)
fabrication (2.30.0)
faker (3.1.0)
faker (3.1.1)
i18n (>= 1.8.11, < 2)
faraday (1.9.3)
faraday-em_http (~> 1.0)
@ -511,7 +511,7 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-proxy (0.7.0)
rack-proxy (0.7.6)
rack
rack-test (2.0.2)
rack (>= 1.3)
@ -611,7 +611,7 @@ GEM
parser (>= 3.1.1.0)
rubocop-capybara (2.17.0)
rubocop (~> 1.41)
rubocop-performance (1.15.2)
rubocop-performance (1.16.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.17.4)
@ -744,7 +744,7 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webpacker (5.4.3)
webpacker (5.4.4)
activesupport (>= 5.2)
rack-proxy (>= 0.6.1)
railties (>= 5.2)
@ -770,7 +770,7 @@ DEPENDENCIES
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
bootsnap (~> 1.15.0)
bootsnap (~> 1.16.0)
brakeman (~> 5.4)
browser
bullet (~> 7.0)

@ -2,10 +2,10 @@
class Api::V1::StreamingController < Api::BaseController
def index
if Rails.configuration.x.streaming_api_base_url != request.host
redirect_to streaming_api_url, status: 301
else
if Rails.configuration.x.streaming_api_base_url == request.host
not_found
else
redirect_to streaming_api_url, status: 301
end
end

@ -227,7 +227,7 @@ module SignatureVerification
end
def to_header_name(name)
name.split(/-/).map(&:capitalize).join('-')
name.split('-').map(&:capitalize).join('-')
end
def missing_required_signature_parameters?

@ -11,7 +11,7 @@ class TagsController < ApplicationController
before_action :authenticate_user!, if: :whitelist_mode?
before_action :set_local
before_action :set_tag
before_action :set_statuses
before_action :set_statuses, if: -> { request.format == :rss }
before_action :set_instance_presenter
skip_before_action :require_functional!, unless: :whitelist_mode?
@ -44,12 +44,7 @@ class TagsController < ApplicationController
end
def set_statuses
case request.format&.to_sym
when :json
@statuses = cache_collection(TagFeed.new(@tag, current_account, local: @local).get(PAGE_SIZE, params[:max_id], params[:since_id], params[:min_id]), Status)
when :rss
@statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
end
@statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
end
def set_instance_presenter
@ -64,8 +59,6 @@ class TagsController < ApplicationController
ActivityPub::CollectionPresenter.new(
id: tag_url(@tag),
type: :ordered,
size: @tag.statuses.count,
items: @statuses.map { |status| ActivityPub::TagManager.instance.uri_for(status) }
)
end
end

@ -67,7 +67,7 @@ module ApplicationHelper
def link_to_login(name = nil, html_options = nil, &block)
target = new_user_session_path
html_options = name if block_given?
html_options = name if block
if omniauth_only? && Devise.mappings[:user].omniauthable? && User.omniauth_providers.size == 1
target = omniauth_authorize_path(:user, User.omniauth_providers[0])
@ -75,7 +75,7 @@ module ApplicationHelper
html_options[:method] = :post
end
if block_given?
if block
link_to(target, html_options, &block)
else
link_to(name, target, html_options)

@ -7,7 +7,7 @@ module EmailHelper
def email_to_canonical_email(str)
username, domain = str.downcase.split('@', 2)
username, = username.gsub('.', '').split('+', 2)
username, = username.delete('.').split('+', 2)
"#{username}@#{domain}"
end

@ -213,7 +213,7 @@ module JsonLdHelper
end
end
def load_jsonld_context(url, _options = {}, &_block)
def load_jsonld_context(url, _options = {}, &block)
json = Rails.cache.fetch("jsonld:context:#{url}", expires_in: 30.days, raw: true) do
request = Request.new(:get, url)
request.add_headers('Accept' => 'application/ld+json')
@ -226,6 +226,6 @@ module JsonLdHelper
doc = JSON::LD::API::RemoteDocument.new(json, documentUrl: url)
block_given? ? yield(doc) : doc
block ? yield(doc) : doc
end
end

@ -51,6 +51,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
searchTokens: PropTypes.arrayOf(PropTypes.string),
maxLength: PropTypes.number,
lang: PropTypes.string,
spellCheck: PropTypes.string,
};
static defaultProps = {
@ -186,7 +187,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
};
render () {
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, lang } = this.props;
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, lang, spellCheck } = this.props;
const { suggestionsHidden } = this.state;
return (
@ -212,6 +213,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
className={className}
maxLength={maxLength}
lang={lang}
spellCheck={spellCheck}
/>
</label>

@ -243,6 +243,7 @@ class ComposeForm extends ImmutablePureComponent {
id='cw-spoiler-input'
className='spoiler-input__input'
lang={this.props.lang}
spellCheck
/>
</div>

@ -93,6 +93,7 @@ class Option extends React.PureComponent {
maxLength={100}
value={title}
lang={lang}
spellCheck
onChange={this.handleOptionTitleChange}
suggestions={this.props.suggestions}
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}

@ -5,7 +5,6 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { debounce } from 'lodash';
import LoadingIndicator from '../../components/loading_indicator';
import Column from '../ui/components/column';
import ColumnBackButtonSlim from '../../components/column_back_button_slim';
import AccountAuthorizeContainer from './containers/account_authorize_container';
@ -53,16 +52,8 @@ class FollowRequests extends ImmutablePureComponent {
render () {
const { intl, accountIds, hasMore, multiColumn, locked, domain, isLoading } = this.props;
if (!accountIds) {
return (
<Column>
<LoadingIndicator />
</Column>
);
}
const emptyMessage = <FormattedMessage id='empty_column.follow_requests' defaultMessage="You don't have any follow requests yet. When you receive one, it will show up here." />;
const unlockedPrependMessage = locked ? null : (
const unlockedPrependMessage = !locked && accountIds.size > 0 && (
<div className='follow_requests-unlocked_explanation'>
<FormattedMessage
id='follow_requests.unlocked_explanation'
@ -80,6 +71,7 @@ class FollowRequests extends ImmutablePureComponent {
onLoadMore={this.handleLoadMore}
hasMore={hasMore}
isLoading={isLoading}
showLoading={isLoading && accountIds.size === 0}
emptyMessage={emptyMessage}
bindToDocument={!multiColumn}
prepend={unlockedPrependMessage}

@ -3,7 +3,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import { Link } from 'react-router-dom';
import { domain, version, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state';
import { domain, version, source_url, statusPageUrl, profile_directory as profileDirectory } from 'mastodon/initial_state';
import { logOut } from 'mastodon/utils/log_out';
import { openModal } from 'mastodon/actions/modal';
import { PERMISSION_INVITE_USERS } from 'mastodon/permissions';
@ -59,21 +59,27 @@ class LinkFooter extends React.PureComponent {
<p>
<strong>{domain}</strong>:
{' '}
<Link key='about' to='/about'><FormattedMessage id='footer.about' defaultMessage='About' /></Link>
<Link to='/about'><FormattedMessage id='footer.about' defaultMessage='About' /></Link>
{statusPageUrl && (
<>
{DividingCircle}
<a href={statusPageUrl} target='_blank' rel='noopener'><FormattedMessage id='footer.status' defaultMessage='Status' /></a>
</>
)}
{canInvite && (
<>
{DividingCircle}
<a key='invites' href='/invites' target='_blank'><FormattedMessage id='footer.invite' defaultMessage='Invite people' /></a>
<a href='/invites' target='_blank'><FormattedMessage id='footer.invite' defaultMessage='Invite people' /></a>
</>
)}
{canProfileDirectory && (
<>
{DividingCircle}
<Link key='directory' to='/directory'><FormattedMessage id='footer.directory' defaultMessage='Profiles directory' /></Link>
<Link to='/directory'><FormattedMessage id='footer.directory' defaultMessage='Profiles directory' /></Link>
</>
)}
{DividingCircle}
<Link key='privacy-policy' to='/privacy-policy'><FormattedMessage id='footer.privacy_policy' defaultMessage='Privacy policy' /></Link>
<Link to='/privacy-policy'><FormattedMessage id='footer.privacy_policy' defaultMessage='Privacy policy' /></Link>
</p>
<p>

@ -134,6 +134,7 @@ export const usePendingItems = getMeta('use_pending_items');
export const version = getMeta('version');
export const translationEnabled = getMeta('translation_enabled');
export const languages = initialState?.languages;
export const statusPageUrl = getMeta('status_page_url');
// Glitch-soc-specific settings
export const maxChars = (initialState && initialState.max_toot_chars) || 500;

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Kortpadsleutels",
"footer.privacy_policy": "Privaatheidsbeleid",
"footer.source_code": "Wys bronkode",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Kom aan die gang",
"hashtag.column_header.tag_mode.all": "and {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Alcorces de teclau",
"footer.privacy_policy": "Politica de privacidat",
"footer.source_code": "Veyer codigo fuent",
"footer.status": "Status",
"generic.saved": "Alzau",
"getting_started.heading": "Primers pasos",
"hashtag.column_header.tag_mode.all": "y {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "اختصارات لوحة المفاتيح",
"footer.privacy_policy": "سياسة الخصوصية",
"footer.source_code": "الاطلاع على الشفرة المصدرية",
"footer.status": "Status",
"generic.saved": "تم الحفظ",
"getting_started.heading": "استعدّ للبدء",
"hashtag.column_header.tag_mode.all": "و {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Atayos del tecláu",
"footer.privacy_policy": "Política de privacidá",
"footer.source_code": "Ver el códigu fonte",
"footer.status": "Status",
"generic.saved": "Guardóse",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "y {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Спалучэнні клавіш",
"footer.privacy_policy": "Палітыка прыватнасці",
"footer.source_code": "Прагледзець зыходны код",
"footer.status": "Статус",
"generic.saved": "Захавана",
"getting_started.heading": "Пачатак працы",
"hashtag.column_header.tag_mode.all": "і {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Клавишни комбинации",
"footer.privacy_policy": "Политика за поверителност",
"footer.source_code": "Преглед на изходния код",
"footer.status": "Status",
"generic.saved": "Запазено",
"getting_started.heading": "Първи стъпки",
"hashtag.column_header.tag_mode.all": "и {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "সংরক্ষণ হয়েছে",
"getting_started.heading": "শুরু করা",
"hashtag.column_header.tag_mode.all": "এবং {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Berradennoù klavier",
"footer.privacy_policy": "Reolennoù prevezded",
"footer.source_code": "Gwelet kod mammenn",
"footer.status": "Status",
"generic.saved": "Enrollet",
"getting_started.heading": "Loc'hañ",
"hashtag.column_header.tag_mode.all": "ha {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "and {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Dreceres de teclat",
"footer.privacy_policy": "Política de privadesa",
"footer.source_code": "Mostra el codi font",
"footer.status": "Estat",
"generic.saved": "Desat",
"getting_started.heading": "Primeres passes",
"hashtag.column_header.tag_mode.all": "i {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "پاشکەوتکرا",
"getting_started.heading": "دەست پێکردن",
"hashtag.column_header.tag_mode.all": "و {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Salvatu",
"getting_started.heading": "Per principià",
"hashtag.column_header.tag_mode.all": "è {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Klávesové zkratky",
"footer.privacy_policy": "Zásady ochrany osobních údajů",
"footer.source_code": "Zobrazit zdrojový kód",
"footer.status": "Stav",
"generic.saved": "Uloženo",
"getting_started.heading": "Začínáme",
"hashtag.column_header.tag_mode.all": "a {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "and {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Bysellau brys",
"footer.privacy_policy": "Polisi preifatrwydd",
"footer.source_code": "Gweld y cod ffynhonnell",
"footer.status": "Status",
"generic.saved": "Wedi'i Gadw",
"getting_started.heading": "Dechrau",
"hashtag.column_header.tag_mode.all": "a {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Tastaturgenveje",
"footer.privacy_policy": "Fortrolighedspolitik",
"footer.source_code": "Vis kildekode",
"footer.status": "Status",
"generic.saved": "Gemt",
"getting_started.heading": "Startmenu",
"hashtag.column_header.tag_mode.all": "og {additional}",

@ -247,7 +247,7 @@
"filter_modal.added.expired_explanation": "Diese Filterkategorie ist abgelaufen. Du musst das Ablaufdatum für diese Kategorie ändern.",
"filter_modal.added.expired_title": "Abgelaufener Filter!",
"filter_modal.added.review_and_configure": "Um diesen Filter zu überprüfen oder noch weiter zu konfigurieren, rufe die {settings_link} auf.",
"filter_modal.added.review_and_configure_title": "Filtereinstellungen",
"filter_modal.added.review_and_configure_title": "Filter-Einstellungen",
"filter_modal.added.settings_link": "Einstellungen",
"filter_modal.added.short_explanation": "Dieser Post wurde folgender Filterkategorie hinzugefügt: {title}.",
"filter_modal.added.title": "Filter hinzugefügt!",
@ -260,7 +260,7 @@
"filter_modal.title.status": "Beitrag per Filter ausblenden",
"follow_recommendations.done": "Fertig",
"follow_recommendations.heading": "Folge Leuten, deren Beiträge du sehen möchtest! Hier sind einige Vorschläge.",
"follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!",
"follow_recommendations.lead": "Beiträge von Profilen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Sei unbesorgt, mal Fehler zu begehen. Du kannst diesen Konten ganz einfach und jederzeit wieder entfolgen.",
"follow_request.authorize": "Genehmigen",
"follow_request.reject": "Ablehnen",
"follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.",
@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Tastenkombinationen",
"footer.privacy_policy": "Datenschutzerklärung",
"footer.source_code": "Quellcode anzeigen",
"footer.status": "Status",
"generic.saved": "Gespeichert",
"getting_started.heading": "Auf geht's!",
"hashtag.column_header.tag_mode.all": "und {additional}",
@ -279,10 +280,10 @@
"hashtag.column_header.tag_mode.none": "ohne {additional}",
"hashtag.column_settings.select.no_options_message": "Keine Vorschläge gefunden",
"hashtag.column_settings.select.placeholder": "Hashtags eingeben …",
"hashtag.column_settings.tag_mode.all": "All diese",
"hashtag.column_settings.tag_mode.all": "Alle",
"hashtag.column_settings.tag_mode.any": "Eines von diesen",
"hashtag.column_settings.tag_mode.none": "Keines von diesen",
"hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen",
"hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags dieser Spalte hinzufügen",
"hashtag.follow": "Hashtag folgen",
"hashtag.unfollow": "Hashtag entfolgen",
"home.column_settings.basic": "Einfach",
@ -308,7 +309,7 @@
"keyboard_shortcuts.back": "zurücknavigieren",
"keyboard_shortcuts.blocked": "Liste gesperrter Profile öffnen",
"keyboard_shortcuts.boost": "Beitrag teilen",
"keyboard_shortcuts.column": "Spalte fokussieren",
"keyboard_shortcuts.column": "Auf die aktuelle Spalte fokussieren",
"keyboard_shortcuts.compose": "Eingabefeld fokussieren",
"keyboard_shortcuts.description": "Beschreibung",
"keyboard_shortcuts.direct": "Direktnachrichten öffnen",
@ -340,8 +341,8 @@
"keyboard_shortcuts.unfocus": "Eingabefeld/Suche nicht mehr fokussieren",
"keyboard_shortcuts.up": "sich in der Liste hinaufbewegen",
"lightbox.close": "Schließen",
"lightbox.compress": "Bildansicht komprimieren",
"lightbox.expand": "Bildansicht erweitern",
"lightbox.compress": "Bildansicht verkleinern",
"lightbox.expand": "Bildansicht vergrößern",
"lightbox.next": "Vor",
"lightbox.previous": "Zurück",
"limited_account_hint.action": "Profil trotzdem anzeigen",
@ -377,7 +378,7 @@
"navigation_bar.discover": "Entdecken",
"navigation_bar.domain_blocks": "Gesperrte Domains",
"navigation_bar.edit_profile": "Profil bearbeiten",
"navigation_bar.explore": "Entdecken",
"navigation_bar.explore": "Erforschen",
"navigation_bar.favourites": "Favoriten",
"navigation_bar.filters": "Stummgeschaltete Wörter",
"navigation_bar.follow_requests": "Follower-Anfragen",
@ -393,7 +394,7 @@
"navigation_bar.search": "Suche",
"navigation_bar.security": "Sicherheit",
"not_signed_in_indicator.not_signed_in": "Du musst dich anmelden, um auf diesen Inhalt zugreifen zu können.",
"notification.admin.report": "{target} wurde von {name} gemeldet",
"notification.admin.report": "{name} meldete {target}",
"notification.admin.sign_up": "{name} registrierte sich",
"notification.favourite": "{name} hat deinen Beitrag favorisiert",
"notification.follow": "{name} folgt dir jetzt",
@ -451,7 +452,7 @@
"poll.votes": "{votes, plural, one {# Stimme} other {# Stimmen}}",
"poll_button.add_poll": "Umfrage erstellen",
"poll_button.remove_poll": "Umfrage entfernen",
"privacy.change": "Sichtbarkeit des Beitrags anpassen",
"privacy.change": "Sichtbarkeit anpassen",
"privacy.direct.long": "Nur für die genannten Profile sichtbar",
"privacy.direct.short": "Nur erwähnte Profile",
"privacy.private.long": "Nur für deine Follower sichtbar",
@ -465,16 +466,16 @@
"refresh": "Aktualisieren",
"regeneration_indicator.label": "Wird geladen …",
"regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!",
"relative_time.days": "{number}T",
"relative_time.days": "{number} T.",
"relative_time.full.days": "vor {number, plural, one {# Tag} other {# Tagen}}",
"relative_time.full.hours": "vor {number, plural, one {# Stunde} other {# Stunden}}",
"relative_time.full.just_now": "soeben",
"relative_time.full.minutes": "vor {number, plural, one {# Minute} other {# Minuten}}",
"relative_time.full.seconds": "vor {number, plural, one {1 Sekunde} other {# Sekunden}}",
"relative_time.hours": "{number} Std",
"relative_time.hours": "{number} Std.",
"relative_time.just_now": "jetzt",
"relative_time.minutes": "{number} min",
"relative_time.seconds": "{number} sek",
"relative_time.minutes": "{number} Min.",
"relative_time.seconds": "{number} Sek.",
"relative_time.today": "heute",
"reply_indicator.cancel": "Abbrechen",
"report.block": "Sperren",
@ -530,7 +531,7 @@
"search_results.accounts": "Profile",
"search_results.all": "Alles",
"search_results.hashtags": "Hashtags",
"search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden",
"search_results.nothing_found": "Nichts zu diesen Suchbegriffen gefunden",
"search_results.statuses": "Beiträge",
"search_results.statuses_fts_disabled": "Die Suche nach Beitragsinhalten ist auf diesem Mastodon-Server deaktiviert.",
"search_results.title": "Suchergebnisse für {q}",
@ -544,9 +545,9 @@
"sign_in_banner.create_account": "Konto erstellen",
"sign_in_banner.sign_in": "Anmelden",
"sign_in_banner.text": "Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu teilen und auf sie zu antworten. Du kannst auch von deinem Konto aus auf einem anderen Server interagieren.",
"status.admin_account": "Moderationsoberfläche für @{name} öffnen",
"status.admin_domain": "Moderationsoberfläche für {domain} öffnen",
"status.admin_status": "Diesen Beitrag in der Moderationsoberfläche öffnen",
"status.admin_account": "@{name} moderieren",
"status.admin_domain": "{domain} moderieren",
"status.admin_status": "Beitrag moderieren",
"status.block": "@{name} blockieren",
"status.bookmark": "Beitrag als Lesezeichen setzen",
"status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen",
@ -595,7 +596,7 @@
"status.show_original": "Ursprünglichen Beitrag anzeigen",
"status.translate": "Übersetzen",
"status.translated_from_with": "Aus {lang} mittels {provider} übersetzt",
"status.uncached_media_warning": "Nicht verfügbar",
"status.uncached_media_warning": "Medien-Datei auf diesem Server noch nicht verfügbar",
"status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben",
"status.unpin": "Vom Profil lösen",
"subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.",
@ -646,7 +647,7 @@
"upload_progress.label": "Wird hochgeladen …",
"upload_progress.processing": "Wird verarbeitet…",
"video.close": "Video schließen",
"video.download": "Datei herunterladen",
"video.download": "Video-Datei herunterladen",
"video.exit_fullscreen": "Vollbild verlassen",
"video.expand": "Video vergrößern",
"video.fullscreen": "Vollbild",

@ -4075,6 +4075,10 @@
"defaultMessage": "About",
"id": "footer.about"
},
{
"defaultMessage": "Status",
"id": "footer.status"
},
{
"defaultMessage": "Invite people",
"id": "footer.invite"

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου",
"footer.privacy_policy": "Πολιτική απορρήτου",
"footer.source_code": "Προβολή πηγαίου κώδικα",
"footer.status": "Κατάσταση",
"generic.saved": "Αποθηκεύτηκε",
"getting_started.heading": "Αφετηρία",
"hashtag.column_header.tag_mode.all": "και {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "and {additional}",

@ -276,6 +276,7 @@
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "and {additional}",

@ -3,7 +3,7 @@
"about.contact": "Kontakto:",
"about.disclaimer": "Mastodon estas libera, malfermitkoda programo kaj varmarko de la firmao Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Kialo ne disponebla",
"about.domain_blocks.preamble": "Mastodono ebligas vidi la enhavojn de uzantoj el aliaj serviloj en la Fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.",
"about.domain_blocks.preamble": "Mastodon ĝenerale rajtigas vidi la enhavojn de uzantoj el aliaj serviloj en la fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.",
"about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.",
"about.domain_blocks.silenced.title": "Limigita",
"about.domain_blocks.suspended.explanation": "Neniuj datumoj el tiu servilo estos prilaboritaj, konservitaj, aŭ interŝanĝitaj, do neeblas interagi aŭ komuniki kun uzantoj de tiu servilo.",
@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Fulmoklavoj",
"footer.privacy_policy": "Politiko de privateco",
"footer.source_code": "Montri fontkodon",
"footer.status": "Stato",
"generic.saved": "Konservita",
"getting_started.heading": "Por komenci",
"hashtag.column_header.tag_mode.all": "kaj {additional}",
@ -460,7 +461,7 @@
"privacy.public.short": "Publika",
"privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive el la funkcio de esploro",
"privacy.unlisted.short": "Nelistigita",
"privacy_policy.last_updated": "Laste ĝisdatigita sur {date}",
"privacy_policy.last_updated": "Laste ĝisdatigita en {date}",
"privacy_policy.title": "Politiko de privateco",
"refresh": "Refreŝigu",
"regeneration_indicator.label": "Ŝargado…",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Atajos de teclado",
"footer.privacy_policy": "Política de privacidad",
"footer.source_code": "Ver código fuente",
"footer.status": "Estado",
"generic.saved": "Guardado",
"getting_started.heading": "Inicio de Mastodon",
"hashtag.column_header.tag_mode.all": "y {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Atajos de teclado",
"footer.privacy_policy": "Política de privacidad",
"footer.source_code": "Ver código fuente",
"footer.status": "Status",
"generic.saved": "Guardado",
"getting_started.heading": "Primeros pasos",
"hashtag.column_header.tag_mode.all": "y {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Atajos de teclado",
"footer.privacy_policy": "Política de privacidad",
"footer.source_code": "Ver código fuente",
"footer.status": "Estado",
"generic.saved": "Guardado",
"getting_started.heading": "Primeros pasos",
"hashtag.column_header.tag_mode.all": "y {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Kiirklahvid",
"footer.privacy_policy": "Isikuandmete kaitse",
"footer.source_code": "Lähtekood",
"footer.status": "Olek",
"generic.saved": "Salvestatud",
"getting_started.heading": "Alustamine",
"hashtag.column_header.tag_mode.all": "ja {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Lasterbideak",
"footer.privacy_policy": "Pribatutasun politika",
"footer.source_code": "Ikusi iturburu kodea",
"footer.status": "Egoera",
"generic.saved": "Gordea",
"getting_started.heading": "Menua",
"hashtag.column_header.tag_mode.all": "eta {osagarria}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "میان‌برهای صفحه‌کلید",
"footer.privacy_policy": "سیاست محرمانگی",
"footer.source_code": "نمایش کد مبدأ",
"footer.status": "Status",
"generic.saved": "ذخیره شده",
"getting_started.heading": "آغاز کنید",
"hashtag.column_header.tag_mode.all": "و {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Pikanäppäimet",
"footer.privacy_policy": "Tietosuojakäytäntö",
"footer.source_code": "Näytä lähdekoodi",
"footer.status": "Tila",
"generic.saved": "Tallennettu",
"getting_started.heading": "Näin pääset alkuun",
"hashtag.column_header.tag_mode.all": "ja {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Knappasnarvegir",
"footer.privacy_policy": "Privatlívspolitikkur",
"footer.source_code": "Vís keldukotuna",
"footer.status": "Støða",
"generic.saved": "Goymt",
"getting_started.heading": "At byrja",
"hashtag.column_header.tag_mode.all": "og {additional}",

@ -128,7 +128,7 @@
"compose.language.search": "Rechercher des langues…",
"compose_form.direct_message_warning_learn_more": "En savoir plus",
"compose_form.encryption_warning": "Les publications sur Mastodon ne sont pas chiffrées de bout en bout. Veuillez ne partager aucune information sensible sur Mastodon.",
"compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent appaître dans les recherches par hashtags.",
"compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent apparaître dans les recherches par hashtags.",
"compose_form.lock_disclaimer": "Votre compte nest pas {locked}. Tout le monde peut vous suivre et voir vos publications privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "À quoi pensez-vous?",
@ -221,7 +221,7 @@
"empty_column.favourites": "Personne na encore ajouté cette publication à ses favoris. Lorsque quelquun le fera, elle apparaîtra ici.",
"empty_column.follow_recommendations": "Il semble quaucune suggestion nait pu être générée pour vous. Vous pouvez essayer dutiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags populaires.",
"empty_column.follow_requests": "Vous navez pas encore de demande d'abonnement. Lorsque vous en recevrez une, elle apparaîtra ici.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
"empty_column.followed_tags": "Vous n'avez pas encore suivi d'hashtags. Lorsque vous le ferez, ils apparaîtront ici.",
"empty_column.hashtag": "Il ny a pas encore de contenu associé à ce hashtag.",
"empty_column.home": "Votre fil d'accueil est vide! Suivez plus de personnes pour la remplir. {suggestions}",
"empty_column.home.suggestions": "Voir quelques suggestions",
@ -264,7 +264,7 @@
"follow_request.authorize": "Autoriser",
"follow_request.reject": "Rejeter",
"follow_requests.unlocked_explanation": "Même si votre compte nest pas privé, léquipe de {domain} a pensé que vous pourriez vouloir peut-être consulter manuellement les demandes d'abonnement de ces comptes.",
"followed_tags": "Followed hashtags",
"followed_tags": "Hashtags suivis",
"footer.about": "À propos",
"footer.directory": "Annuaire des profils",
"footer.get_app": "Télécharger lapplication",
@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Raccourcis clavier",
"footer.privacy_policy": "Politique de confidentialité",
"footer.source_code": "Voir le code source",
"footer.status": "Status",
"generic.saved": "Sauvegardé",
"getting_started.heading": "Pour commencer",
"hashtag.column_header.tag_mode.all": "et {additional}",
@ -381,7 +382,7 @@
"navigation_bar.favourites": "Favoris",
"navigation_bar.filters": "Mots masqués",
"navigation_bar.follow_requests": "Demandes d'abonnements",
"navigation_bar.followed_tags": "Followed hashtags",
"navigation_bar.followed_tags": "Hashtags suivis",
"navigation_bar.follows_and_followers": "Abonnements et abonnés",
"navigation_bar.lists": "Listes",
"navigation_bar.logout": "Se déconnecter",
@ -543,7 +544,7 @@
"server_banner.server_stats": "Statistiques du serveur:",
"sign_in_banner.create_account": "Créer un compte",
"sign_in_banner.sign_in": "Se connecter",
"sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
"sign_in_banner.text": "Identifiez-vous pour suivre des profils ou des hashtags, ajouter des favoris, partager et répondre à des messages. Vous pouvez également interagir depuis votre compte sur un autre serveur.",
"status.admin_account": "Ouvrir linterface de modération pour @{name}",
"status.admin_domain": "Ouvrir linterface de modération pour {domain}",
"status.admin_status": "Ouvrir ce message dans linterface de modération",

@ -6,7 +6,7 @@
"about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur⋅rice⋅s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.",
"about.domain_blocks.silenced.explanation": "Vous ne verrez généralement pas les profils et le contenu de ce serveur, à moins que vous ne les recherchiez explicitement ou que vous ne choisissiez de les suivre.",
"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 utilisateurs de ce serveur.",
"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.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
@ -45,7 +45,7 @@
"account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.",
"account.media": "Médias",
"account.mention": "Mentionner @{name}",
"account.moved_to": "{name} a indiqué que son nouveau compte est maintenant  :",
"account.moved_to": "{name} a indiqué que son nouveau compte est maintenant :",
"account.mute": "Masquer @{name}",
"account.mute_notifications": "Masquer les notifications de @{name}",
"account.muted": "Masqué·e",
@ -71,7 +71,7 @@
"admin.dashboard.monthly_retention": "Taux de rétention des utilisateur·rice·s par mois après inscription",
"admin.dashboard.retention.average": "Moyenne",
"admin.dashboard.retention.cohort": "Mois d'inscription",
"admin.dashboard.retention.cohort_size": "Nouveaux utilisateurs",
"admin.dashboard.retention.cohort_size": "Nouveaux comptes",
"alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.",
"alert.rate_limited.title": "Nombre de requêtes limité",
"alert.unexpected.message": "Une erreur inattendue sest produite.",
@ -96,7 +96,7 @@
"closed_registrations.other_server_instructions": "Puisque Mastodon est décentralisé, vous pouvez créer un compte sur un autre serveur et interagir quand même avec celui-ci.",
"closed_registrations_modal.description": "Créer un compte sur {domain} est actuellement impossible, néanmoins souvenez-vous que vous n'avez pas besoin d'un compte spécifiquement sur {domain} pour utiliser Mastodon.",
"closed_registrations_modal.find_another_server": "Trouver un autre serveur",
"closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre votre, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
"closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
"closed_registrations_modal.title": "Inscription sur Mastodon",
"column.about": "À propos",
"column.blocks": "Comptes bloqués",
@ -128,8 +128,8 @@
"compose.language.search": "Rechercher des langues …",
"compose_form.direct_message_warning_learn_more": "En savoir plus",
"compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information sensible sur Mastodon.",
"compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent appaître dans les recherches par hashtags.",
"compose_form.lock_disclaimer": "Votre compte nest pas {locked}. Tout le monde peut vous suivre et voir vos messages privés.",
"compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent apparaître dans les recherches par hashtags.",
"compose_form.lock_disclaimer": "Votre compte nest pas {locked}. Tout le monde peut vous suivre pour voir vos messages réservés à vos abonné⋅e⋅s.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Quavez-vous en tête?",
"compose_form.poll.add_option": "Ajouter un choix",
@ -185,12 +185,12 @@
"directory.recently_active": "Actif·ve·s récemment",
"disabled_account_banner.account_settings": "Paramètres du compte",
"disabled_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé.",
"dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.",
"dismissable_banner.community_timeline": "Voici les messages publics les plus récents des comptes hébergés par {domain}.",
"dismissable_banner.dismiss": "Rejeter",
"dismissable_banner.explore_links": "On parle actuellement de ces nouvelles sur ce serveur, ainsi que sur d'autres serveurs du réseau décentralisé.",
"dismissable_banner.explore_statuses": "Ces publications depuis les serveurs du réseau décentralisé, dont celui-ci, sont actuellement en train de gagner de l'ampleur sur ce serveur.",
"dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.",
"dismissable_banner.public_timeline": "Voici les publications publiques les plus récentes des personnes de ce serveur et des autres du réseau décentralisé que ce serveur connait.",
"dismissable_banner.public_timeline": "Voici les messages publics les plus récents des personnes de cette instance et des autres instances du réseau décentralisé connues par ce serveur.",
"embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.",
"embed.preview": "Il apparaîtra comme cela:",
"emoji_button.activity": "Activités",
@ -246,7 +246,7 @@
"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.",
"filter_modal.added.expired_title": "Filtre expiré!",
"filter_modal.added.review_and_configure": "Pour passer en revue et approfondir la configuration de cette catégorie de filtre, aller sur le {settings_link}.",
"filter_modal.added.review_and_configure": "Pour examiner et affiner la configuration de cette catégorie de filtre, allez à {settings_link}.",
"filter_modal.added.review_and_configure_title": "Paramètres du filtre",
"filter_modal.added.settings_link": "page des paramètres",
"filter_modal.added.short_explanation": "Ce message a été ajouté à la catégorie de filtre suivante : {title}.",
@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Raccourcis clavier",
"footer.privacy_policy": "Politique de confidentialité",
"footer.source_code": "Voir le code source",
"footer.status": "État",
"generic.saved": "Sauvegardé",
"getting_started.heading": "Pour commencer",
"hashtag.column_header.tag_mode.all": "et {additional}",
@ -290,17 +291,17 @@
"home.column_settings.show_replies": "Afficher les réponses",
"home.hide_announcements": "Masquer les annonces",
"home.show_announcements": "Afficher les annonces",
"interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce post aux favoris pour informer l'auteur que vous l'appréciez et le sauvegarder pour plus tard.",
"interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce message à vos favoris pour informer l'auteur⋅rice que vous l'appréciez et pour le sauvegarder pour plus tard.",
"interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.",
"interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonnés.",
"interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez partager ce message pour le faire découvrir à vos propres abonné⋅e⋅s.",
"interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.",
"interaction_modal.on_another_server": "Sur un autre serveur",
"interaction_modal.on_this_server": "Sur ce serveur",
"interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou l'interface web de votre serveur Mastodon.",
"interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou de l'interface web de votre serveur Mastodon.",
"interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.",
"interaction_modal.title.favourite": "Ajouter de post de {name} aux favoris",
"interaction_modal.title.favourite": "Ajouter le message de {name} aux favoris",
"interaction_modal.title.follow": "Suivre {name}",
"interaction_modal.title.reblog": "Partager la publication de {name}",
"interaction_modal.title.reblog": "Partager le message de {name}",
"interaction_modal.title.reply": "Répondre au message de {name}",
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
@ -364,7 +365,7 @@
"media_gallery.toggle_visible": "{number, plural, one {Cacher limage} other {Cacher les images}}",
"missing_indicator.label": "Non trouvé",
"missing_indicator.sublabel": "Ressource introuvable",
"moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déplacé vers {movedToAccount}.",
"moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.",
"mute_modal.duration": "Durée",
"mute_modal.hide_notifications": "Masquer les notifications de cette personne?",
"mute_modal.indefinite": "Indéfinie",
@ -395,7 +396,7 @@
"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.sign_up": "{name} s'est inscrit",
"notification.favourite": "{name} a aimé votre publication",
"notification.favourite": "{name} a ajouté votre message à ses favoris",
"notification.follow": "{name} vous suit",
"notification.follow_request": "{name} a demandé à vous suivre",
"notification.mention": "{name} vous a mentionné·e:",
@ -522,10 +523,10 @@
"search.placeholder": "Rechercher",
"search.search_or_paste": "Rechercher ou saisir une URL",
"search_popout.search_format": "Recherche avancée",
"search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.",
"search_popout.tips.full_text": "Faire une recherche textuelle retrouve les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "message",
"search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants",
"search_popout.tips.text": "Faire une recherche textuelle retrouve les noms affichés, les identifiants et les hashtags correspondants",
"search_popout.tips.user": "utilisateur",
"search_results.accounts": "Comptes",
"search_results.all": "Tous les résultats",
@ -562,7 +563,7 @@
"status.favourite": "Ajouter aux favoris",
"status.filter": "Filtrer ce message",
"status.filtered": "Filtré",
"status.hide": "Masquer la publication",
"status.hide": "Masquer le message",
"status.history.created": "créé par {name} {date}",
"status.history.edited": "édité par {name} {date}",
"status.load_more": "Charger plus",
@ -615,7 +616,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} des autres serveurs ne sont pas affichés.",
"timeline_hint.resources.followers": "Les abonnés",
"timeline_hint.resources.follows": "Les abonnements",
"timeline_hint.resources.statuses": "Les messages plus anciens",
"timeline_hint.resources.statuses": "Messages plus anciens",
"trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}",
"trends.trending_now": "Tendance en ce moment",
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
@ -627,7 +628,7 @@
"upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
"upload_error.poll": "Lenvoi de fichiers nest pas autorisé avec les sondages.",
"upload_form.audio_description": "Décrire pour les personnes ayant des difficultés daudition",
"upload_form.description": "Décrire pour les malvoyants",
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.description_missing": "Description manquante",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Changer la vignette",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Fluchtoetsen",
"footer.privacy_policy": "Privacybelied",
"footer.source_code": "Boarnekoade besjen",
"footer.status": "Steat",
"generic.saved": "Bewarre",
"getting_started.heading": "Uteinsette",
"hashtag.column_header.tag_mode.all": "en {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Aicearraí méarchláir",
"footer.privacy_policy": "Polasaí príobháideachais",
"footer.source_code": "Féach ar an gcód foinseach",
"footer.status": "Status",
"generic.saved": "Sábháilte",
"getting_started.heading": "Ag tosú amach",
"hashtag.column_header.tag_mode.all": "agus {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Ath-ghoiridean a mheur-chlàir",
"footer.privacy_policy": "Poileasaidh prìobhaideachd",
"footer.source_code": "Seall am bun-tùs",
"footer.status": "Status",
"generic.saved": "Chaidh a shàbhaladh",
"getting_started.heading": "Toiseach",
"hashtag.column_header.tag_mode.all": "agus {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Atallos do teclado",
"footer.privacy_policy": "Política de privacidade",
"footer.source_code": "Ver código fonte",
"footer.status": "Estado",
"generic.saved": "Gardado",
"getting_started.heading": "Primeiros pasos",
"hashtag.column_header.tag_mode.all": "e {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "קיצורי מקלדת",
"footer.privacy_policy": "מדיניות פרטיות",
"footer.source_code": "צפיה בקוד המקור",
"footer.status": "מצב",
"generic.saved": "נשמר",
"getting_started.heading": "בואו נתחיל",
"hashtag.column_header.tag_mode.all": "ו- {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "कीबोर्ड शॉर्टकट",
"footer.privacy_policy": "प्राइवेसी पालिसी",
"footer.source_code": "सोर्स कोड देखें",
"footer.status": "Status",
"generic.saved": "सेव्ड",
"getting_started.heading": "पहले कदम रखें",
"hashtag.column_header.tag_mode.all": "और {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Tipkovni prečaci",
"footer.privacy_policy": "Pravila o zaštiti privatnosti",
"footer.source_code": "Prikaz izvornog koda",
"footer.status": "Status",
"generic.saved": "Spremljeno",
"getting_started.heading": "Počnimo",
"hashtag.column_header.tag_mode.all": "i {additional}",

@ -272,6 +272,7 @@
"footer.keyboard_shortcuts": "Billentyűparancsok",
"footer.privacy_policy": "Adatvédelmi szabályzat",
"footer.source_code": "Forráskód megtekintése",