- + {' '}
-
+
/g, '\n\n');
const emojiMap = makeEmojiMap(normalStatus);
diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js
index 28c6b1a62..d60ccc1fb 100644
--- a/app/javascript/mastodon/actions/interactions.js
+++ b/app/javascript/mastodon/actions/interactions.js
@@ -41,11 +41,11 @@ export const UNBOOKMARK_REQUEST = 'UNBOOKMARKED_REQUEST';
export const UNBOOKMARK_SUCCESS = 'UNBOOKMARKED_SUCCESS';
export const UNBOOKMARK_FAIL = 'UNBOOKMARKED_FAIL';
-export function reblog(status) {
+export function reblog(status, visibility) {
return function (dispatch, getState) {
dispatch(reblogRequest(status));
- api(getState).post(`/api/v1/statuses/${status.get('id')}/reblog`).then(function (response) {
+ api(getState).post(`/api/v1/statuses/${status.get('id')}/reblog`, { visibility }).then(function (response) {
// The reblog API method returns a new status wrapped around the original. In this case we are only
// interested in how the original is modified, hence passing it skipping the wrapper
dispatch(importFetchedStatus(response.data.reblog));
diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js
index 3464ac995..663cf21e3 100644
--- a/app/javascript/mastodon/actions/notifications.js
+++ b/app/javascript/mastodon/actions/notifications.js
@@ -1,6 +1,6 @@
import api, { getLinks } from '../api';
import IntlMessageFormat from 'intl-messageformat';
-import { fetchRelationships } from './accounts';
+import { fetchFollowRequests, fetchRelationships } from './accounts';
import {
importFetchedAccount,
importFetchedAccounts,
@@ -78,6 +78,10 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
filtered = regex && regex.test(searchIndex);
}
+ if (['follow_request'].includes(notification.type)) {
+ dispatch(fetchFollowRequests());
+ }
+
dispatch(submitMarkers());
if (showInColumn) {
diff --git a/app/javascript/mastodon/actions/onboarding.js b/app/javascript/mastodon/actions/onboarding.js
index 42d8ea33f..a1dd3a731 100644
--- a/app/javascript/mastodon/actions/onboarding.js
+++ b/app/javascript/mastodon/actions/onboarding.js
@@ -1,21 +1,8 @@
import { changeSetting, saveSettings } from './settings';
-import { requestBrowserPermission } from './notifications';
export const INTRODUCTION_VERSION = 20181216044202;
export const closeOnboarding = () => dispatch => {
dispatch(changeSetting(['introductionVersion'], INTRODUCTION_VERSION));
dispatch(saveSettings());
-
- dispatch(requestBrowserPermission((permission) => {
- if (permission === 'granted') {
- dispatch(changeSetting(['notifications', 'alerts', 'follow'], true));
- dispatch(changeSetting(['notifications', 'alerts', 'favourite'], true));
- dispatch(changeSetting(['notifications', 'alerts', 'reblog'], true));
- dispatch(changeSetting(['notifications', 'alerts', 'mention'], true));
- dispatch(changeSetting(['notifications', 'alerts', 'poll'], true));
- dispatch(changeSetting(['notifications', 'alerts', 'status'], true));
- dispatch(saveSettings());
- }
- }));
};
diff --git a/app/javascript/mastodon/actions/picture_in_picture.js b/app/javascript/mastodon/actions/picture_in_picture.js
index 4085cb59e..33d8d57d4 100644
--- a/app/javascript/mastodon/actions/picture_in_picture.js
+++ b/app/javascript/mastodon/actions/picture_in_picture.js
@@ -22,13 +22,20 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
* @param {MediaProps} props
* @return {object}
*/
-export const deployPictureInPicture = (statusId, accountId, playerType, props) => ({
- type: PICTURE_IN_PICTURE_DEPLOY,
- statusId,
- accountId,
- playerType,
- props,
-});
+export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
+ return (dispatch, getState) => {
+ // Do not open a player for a toot that does not exist
+ if (getState().hasIn(['statuses', statusId])) {
+ dispatch({
+ type: PICTURE_IN_PICTURE_DEPLOY,
+ statusId,
+ accountId,
+ playerType,
+ props,
+ });
+ }
+ };
+};
/*
* @return {object}
diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js
index a178faead..37560a74c 100644
--- a/app/javascript/mastodon/actions/search.js
+++ b/app/javascript/mastodon/actions/search.js
@@ -32,6 +32,7 @@ export function submitSearch() {
const value = getState().getIn(['search', 'value']);
if (value.length === 0) {
+ dispatch(fetchSearchSuccess({ accounts: [], statuses: [], hashtags: [] }, ''));
return;
}
diff --git a/app/javascript/mastodon/actions/suggestions.js b/app/javascript/mastodon/actions/suggestions.js
index b15bd916b..1f1116e75 100644
--- a/app/javascript/mastodon/actions/suggestions.js
+++ b/app/javascript/mastodon/actions/suggestions.js
@@ -1,5 +1,6 @@
import api from '../api';
import { importFetchedAccounts } from './importer';
+import { fetchRelationships } from './accounts';
export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST';
export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS';
@@ -7,13 +8,17 @@ export const SUGGESTIONS_FETCH_FAIL = 'SUGGESTIONS_FETCH_FAIL';
export const SUGGESTIONS_DISMISS = 'SUGGESTIONS_DISMISS';
-export function fetchSuggestions() {
+export function fetchSuggestions(withRelationships = false) {
return (dispatch, getState) => {
dispatch(fetchSuggestionsRequest());
- api(getState).get('/api/v1/suggestions').then(response => {
- dispatch(importFetchedAccounts(response.data));
+ api(getState).get('/api/v2/suggestions', { params: { limit: 20 } }).then(response => {
+ dispatch(importFetchedAccounts(response.data.map(x => x.account)));
dispatch(fetchSuggestionsSuccess(response.data));
+
+ if (withRelationships) {
+ dispatch(fetchRelationships(response.data.map(item => item.account.id)));
+ }
}).catch(error => dispatch(fetchSuggestionsFail(error)));
};
};
@@ -25,10 +30,10 @@ export function fetchSuggestionsRequest() {
};
};
-export function fetchSuggestionsSuccess(accounts) {
+export function fetchSuggestionsSuccess(suggestions) {
return {
type: SUGGESTIONS_FETCH_SUCCESS,
- accounts,
+ suggestions,
skipLoading: true,
};
};
@@ -48,5 +53,12 @@ export const dismissSuggestion = accountId => (dispatch, getState) => {
id: accountId,
});
- api(getState).delete(`/api/v1/suggestions/${accountId}`);
+ api(getState).delete(`/api/v1/suggestions/${accountId}`).then(() => {
+ dispatch(fetchSuggestionsRequest());
+
+ api(getState).get('/api/v2/suggestions').then(response => {
+ dispatch(importFetchedAccounts(response.data.map(x => x.account)));
+ dispatch(fetchSuggestionsSuccess(response.data));
+ }).catch(error => dispatch(fetchSuggestionsFail(error)));
+ }).catch(() => {});
};
diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js
index de1725acf..31ae09e4a 100644
--- a/app/javascript/mastodon/actions/timelines.js
+++ b/app/javascript/mastodon/actions/timelines.js
@@ -18,17 +18,26 @@ export const TIMELINE_LOAD_PENDING = 'TIMELINE_LOAD_PENDING';
export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT';
export const TIMELINE_CONNECT = 'TIMELINE_CONNECT';
+export const TIMELINE_MARK_AS_PARTIAL = 'TIMELINE_MARK_AS_PARTIAL';
+
export const loadPending = timeline => ({
type: TIMELINE_LOAD_PENDING,
timeline,
});
export function updateTimeline(timeline, status, accept) {
- return dispatch => {
+ return (dispatch, getState) => {
if (typeof accept === 'function' && !accept(status)) {
return;
}
+ if (getState().getIn(['timelines', timeline, 'isPartial'])) {
+ // Prevent new items from being added to a partial timeline,
+ // since it will be reloaded anyway
+
+ return;
+ }
+
dispatch(importFetchedStatus(status));
dispatch({
@@ -183,3 +192,8 @@ export const disconnectTimeline = timeline => ({
timeline,
usePendingItems: preferPendingItems,
});
+
+export const markAsPartial = timeline => ({
+ type: TIMELINE_MARK_AS_PARTIAL,
+ timeline,
+});
diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js
index 98d59de43..645ef6500 100644
--- a/app/javascript/mastodon/api.js
+++ b/app/javascript/mastodon/api.js
@@ -12,21 +12,35 @@ export const getLinks = response => {
return LinkHeader.parse(value);
};
-let csrfHeader = {};
+const csrfHeader = {};
-function setCSRFHeader() {
+const setCSRFHeader = () => {
const csrfToken = document.querySelector('meta[name=csrf-token]');
+
if (csrfToken) {
csrfHeader['X-CSRF-Token'] = csrfToken.content;
}
-}
+};
ready(setCSRFHeader);
+const authorizationHeaderFromState = getState => {
+ const accessToken = getState && getState().getIn(['meta', 'access_token'], '');
+
+ if (!accessToken) {
+ return {};
+ }
+
+ return {
+ 'Authorization': `Bearer ${accessToken}`,
+ };
+};
+
export default getState => axios.create({
- headers: Object.assign(csrfHeader, getState ? {
- 'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`,
- } : {}),
+ headers: {
+ ...csrfHeader,
+ ...authorizationHeaderFromState(getState),
+ },
transformResponse: [function (data) {
try {
diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap
index 29fdc2412..0f27473af 100644
--- a/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap
+++ b/app/javascript/mastodon/components/__tests__/__snapshots__/display_name-test.js.snap
@@ -3,6 +3,8 @@
exports[`
-
+
{' '}
أي معلومات نجمعها عنك قَد تُستخدم بالطرق التالية: نقوم بتنفيذ مجموعة متنوعة من التدابير الأمنية للحفاظ على سلامة معلوماتك الشخصية عندما تدخلها، أو ترسلها، أو تقوم بالوصول إليها. بجاني أشياء أخرى، تؤَمن جلسة المتصفح الخاص بك، وحركة المرور بين تطبيقاتك والـAPI (واجهة برمجة التطبيقات) باستخدام SSL (بروتوكول طبقة المقابس الآمنة)، وتُهَش أو بالأحرى تُجَزأ كلمة السر الخاصة بك باستخدام خوارزمية أحادية الاتجاه، يمكنك تفعيل خاصّية "الاستيثاق بخطوتين" لتؤَمن وتُصعب إمكانية الوصول إلى حسابك أكثر. سنبذل جهداً حسن النية لـ: تستطيع أن تطلب وتُنزل أرشيف لمحتواك، الذي يحتوي على منشوراتك، ووسائطك المُرفقة، وصورك الرمزية، وصورك الرأسية. تستطيع أن تحذف حسابك بشكل لا رجعة فيه في أي وقت تريد. نعم، الـcookies هي عبارة عن قطعة نصية صغيرة مخزنة على قرص حاسوبك من قبل متصفحك (إذا سمحت له). تسمح هذه الـcookies للموقع بأن يتعرف على متصفحك، وإذا كنت قد سجلت دخولك إلى حسابك، فسيربطه بحسابك المسجل. نستعمل الـcookies لفهم ولحفظ تفضيلاتك للزيارات المستقبلية نحن لا نبيع، أو نتاجر، أو بأي طريقة أخرى نُحول بياناتك التعريفية الشخصية إلى جهات خارجية. طبعاً هذا الكلام لا ينطبق على الجهات الموثوقة التي تساعدنا في تشغيل موقعنا، أو في إجراء أعمالنا، أو في خدمتك طالما أنهم يوافقون على الحفاظ على سرّيتها. ومن الممكن أن نُطلق أو أن نُصرّح بمعلوماتك عندما نؤمِن بأن هذا هو التصرّف الصحيح للامتثال للقانون، أو لتطبيق سياسة موقعنا، أو لحفظ الحقوق، أو الأملاك، أو الأمان الخاص بنا أو بغيرنا. من الممكن أن يُنزل محتواك من قبل خوادم أخرى في الشبكة، يتم تسليم منشوراتك "العامة" ومنشورات "المتابعين فقط" إلى الخوادم التي يقيم فيها متابِعوك، وتُسلم الرسائل المباشرة إلى خوادم التي يُقيم فيها المُستقبلون، طالما أن هؤلاء المتابِعين أو المُستلمين يقيمون في خوادم مختلفة عن هذا الخادم. عندما تخوّل تطبيق معين لاستخدام حسابك، وطبعاً على حسب نطاق الأذونات التي سمحت له بها، فيستطيع هذا التطبيق الوصول إلى معلومات ملفك التعريفي العامة، قائمة المتابَعون منك، قائمة المتابِعون لك، كل منشوراتك، وكل إعجاباتك. لا يمكن للتطبيقات الوصول إلى عنوان بريدك الإلكتروني أو إلى كلمة مرورك. إذا كان هذا الخادم في الـEU (الإتحاد الأوروبي) أو في الـEEA (المنطقة الاقتصادية الأوروبية): فموقعنا، ومنتجاتنا وخدماتنا كلها موجهة للأشخاص الذين لا تقل أعمارهم عن الـ16 سنة، إذا كنت تحت هذا السن، حسب متطلبات الـGDPR (النظام الأوروبي العام لحماية البيانات) فلا تستخدم هذا الموقع. إذا كان هذا السيرفر في الـUS (الولايات المتحدة الأمريكية): فموقعنا، ومنتجاتنا وخدماتنا كلها موجهة للأشخاص الذين لا تقل أعمارهم عن الـ13 سنة، إذا كنت تحت هذا السن، حسب متطلبات الـCOPPA (قانون حماية خصوصية الأطفال على الإنترنت) فلا تستخدم هذا الموقع. من الممكن أن تكون المتطلبات القانونية مختلفة إذا كان هذا الخادم في ولاية قضائية أخرى. إذا قررنا أن نغير سياستنا للخصوصية، فسنَنشر هذه التغييرات على هذه الصفحة. هذه الوثيقة هي CC-BY-SA (النسبة-الترخيص بالمثل)، تم آخر تحديث لها في 7 مارس، 2018. مقتبسة في الأصل من Discourse privacy policy. Enhver af de oplysninger, vi indsamler fra dig, kan bruges på følgende måder: Vi implementerer en række sikkerhedsforanstaltninger for at opretholde sikkerheden for dine personlige oplysninger, når du indtaster, indsender eller har adgang til dine personlige oplysninger. Bl.a. er din browsersession samt trafikken mellem dine applikationer og API'en sikret med SSL, og din adgangskode er hashed ved hjælp af en stærk envejsalgoritme. Du kan muligvis aktivere tofaktors godkendelse for yderligere at sikre adgang til din konto. Vi vil gøre en god tro indsats for at: Du kan anmode om og downloade et arkiv af dit indhold, herunder dine indlæg, medievedhæftninger, profilbillede og headerbillede. Du kan til enhver tid slette din konto. Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder overfører til din computers harddisk via din webbrowser (hvis du tillader det). Disse cookies gør det muligt for webstedet at genkende din browser og, hvis du har en registreret konto, associerer den med din registrerede konto. Vi bruger cookies til at forstå og gemme dine præferencer til fremtidige besøg. Vi sælger ikke, handler eller på anden måde overfører dine personlige identificerbare oplysninger til eksterne parter. Dette omfatter ikke tillid til tredjeparter, der hjælper os med at drive vores hjemmeside, udføre vores forretning eller servicere dig, så længe parterne er enige om at holde disse oplysninger fortrolige. Vi kan også frigive dine oplysninger, når vi mener, at udgivelsen er hensigtsmæssig for at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores eller andre rettigheder, ejendom eller sikkerhed. Dit offentlige indhold kan downloades af andre servere i netværket. Dine offentlige og efterfølger-kun indlæg leveres til de servere, hvor dine tilhængere er bosat, og direkte meddelelser leveres til modtagerens servere, for så vidt som disse tilhængere eller modtagere opholder sig på en anden server end dette. Når du autoriserer et program til at bruge din konto, afhænger det af omfanget af tilladelser, du godkender, det kan få adgang til dine offentlige profiloplysninger, din følgende liste, dine tilhængere, dine lister, alle dine indlæg og dine favoritter. Applikationer kan aldrig få adgang til din e-mail-adresse eller adgangskode. Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle rettet mod personer, der er mindst 16 år gamle. Hvis du er under 16 år, skal du ikke bruge dette websted efter kravene i GDPR ( Generel databeskyttelsesforordning ). . Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod personer, der er mindst 13 år. Hvis du er under 13 år, skal du ikke bruge kravene i COPPA ( Børns online beskyttelse af personlige oplysninger ) dette websted. Lovkrav kan være anderledes, hvis denne server er i en anden jurisdiktion. Hvis vi beslutter os for at ændre vores privatlivspolitik, vil vi sende disse ændringer på denne side. Dette dokument er CC-BY-SA. Det blev senest opdateret 7. marts 2018. Oprindelig tilpasset fra Discourse privacy policy . Enhver oplysning, vi indsamler fra dig, kan blive brugt på flg. måder: Vi implementerer en række sikkerhedsforanstaltninger for at sikre dine personlige oplysninger, når du angiver, indsender eller tilgår dine personlige oplysninger. Bl.a. sikres din browsersession samt trafikken mellem dine applikationer og API'en med SSL, og din adgangskode er hashed vha. en stærk envejsalgoritme. Du kan aktivere tofaktorgodkendelse for yderligere at adgangssikre din konto. Vi vil efter bedste oprigtige evne gøre en indsats for at: Du kan anmode om og downloade et arkiv af dit indhold, herunder dine indlæg, medievedhæftninger samt profil- og headerbilleder Du kan til enhver tid slette din konto permanent. Ja. Cookies er små filer, som et websted eller dets tjenesteudbyder overfører til din computers lagerplads via din webbrowser (hvis du tillader det). Disse cookies gør det muligt for webstedet at genkende din browser og, hvis du har en registreret konto, associerer den med din registrerede konto. Vi bruger cookies til at forstå og gemme dine præferencer for fremtidige besøg. Vi hverken sælger, handler/bytter eller på anden måde overfører dine personlige identificerbare oplysninger til eksterne parter. Herfra undtaget er dog betroede tredjeparter, som hjælper os med at drive vores websted, drive vores forretning eller servicere dig, så længe parterne accepterer at holde disse oplysninger fortrolige. Vi kan også vælge at frigive dine oplysninger, såfremt vi mener, at frigivelsen er hensigtsmæssig ift. at overholde loven, håndhæve vores webstedspolitikker eller beskytte vores/andres rettigheder, ejendom eller sikkerhed. Dit offentlige indhold kan blive downloades af andre servere i netværket. Dine offentlige og kun-følgere indlæg leveres til de servere, hvor dine tilhængere er hjemhørende, og direkte beskeder leveres til modtagerens servere, for så vidt som disse følgere/modtagere ikke er hjemhørende på denne server. Når du godkender en applikation til at bruge din konto, afhængt af tilladelsesomfanget, godkender du, at det kan tilgå dine offentlige profiloplysninger, din liste over dem, du følger, dine følgere, dine lister, alle dine indlæg og dine favoritter. Applikationer kan aldrig tilgå din e-mailadresse eller adgangskode. Hvis denne server er i EU eller EØS: Vores websted, produkter og tjenester er alle er alle beregnet på personer, som er fyldt 16 år. Er du ike fyldt 16 år, så benyt ikke dette websted jf. kravene i GDPR, (Generel Databeskyttelsesforordning). Hvis denne server er i USA: Vores websted, produkter og tjenester er alle rettet mod personer, som er fyldt 13 år. Er du ikke fyldt 13 år, så benyt ikke dette websted jf. kravene i COPPA, (Børns online fortrolighedsbeskyttelsesslov). Lovkrav kan afvige, hvis denne server befinder sig i et andet retsområde. Beslutter vi os for at ændre vores fortrolighedspolitik, vil disse ændringer fremgå på denne side. Dette dokument er CC-BY-SA, og det blev senest opdateret 7. marts 2018. Oprindelig tilpasset fra Discourse' Fortrolighedspolitik. Toda la información que recolectamos de vos puede ser usada de las siguientes maneras: Podés solicitar y descargar un archivo historial de tu contenido, incluyendo tus toots, archivos adjuntos de medios, avatar e imagen de cabecera. Podés solicitar y descargar un archivo historial de tu contenido, incluyendo tus mensajes, archivos adjuntos de medios, avatar e imagen de cabecera. Podés eliminar tu cuenta de forma irreversible en cualquier momento. Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere a la unidad de almacenamiento de tu computadora a través de tu navegador web (si así lo permitís). Estas cookies permiten al sitio reconocer tu navegador web y, si tenés una cuenta registrada, asociarla con la misma. Sí. Las cookies son pequeños archivos que un sitio web o su proveedor de servicios transfiere a la unidad de almacenamiento de tu computadora a través de tu navegador web (si así lo permitís). Estas cookies permiten al sitio reconocer tu navegador web y, si tenés una cuenta registrada, asociarla con la misma. Usamos cookies para entender y guardar tu configuración para futuras visitas. Toda la información que obtenemos de usted puede ser utilizada de las siguientes maneras: Implementamos una variedad de medidas de seguridad para mantener la seguridad de su información personal cuando usted ingresa, envía o accede a su información personal. Entre otras cosas, la sesión de su navegador, así como el tráfico entre sus aplicaciones y la API, están protegidos con SSL, y su contraseña está protegida mediante un algoritmo unidireccional fuerte. Puede habilitar la autenticación de dos factores para un acceso más seguro a su cuenta. Haremos un esfuerzo de buena fe para: Puede solicitar y descargar un archivo de su contenido, incluidos sus mensajes, archivos adjuntos multimedia, foto de perfil e imagen de cabecera. Usted puede borrar su cuenta de forma irreversible en cualquier momento. Sí. Las cookies son pequeños archivos que un sitio o su proveedor de servicios transfiere al disco duro de su ordenador a través de su navegador web (si usted lo permite). Estas cookies permiten al sitio reconocer su navegador y, si tiene una cuenta registrada, asociarla con su cuenta registrada. Utilizamos cookies para entender y guardar sus preferencias para futuras visitas. No vendemos, comerciamos ni transferimos a terceros su información personal identificable. Esto no incluye a los terceros de confianza que nos asisten en la operación de nuestro sitio, en la realización de nuestros negocios o en la prestación de servicios, siempre y cuando dichas partes acuerden mantener la confidencialidad de esta información. También podemos divulgar su información cuando creamos que es apropiado para cumplir con la ley, hacer cumplir las políticas de nuestro sitio, o proteger nuestros u otros derechos, propiedad o seguridad. Su contenido público puede ser descargado por otros servidores de la red. Tus mensajes públicos y sólo para seguidores se envían a los servidores donde residen tus seguidores, y los mensajes directos se envían a los servidores de los destinatarios, en la medida en que dichos seguidores o destinatarios residan en un servidor diferente. Cuando usted autoriza a una aplicación a usar su cuenta, dependiendo del alcance de los permisos que usted apruebe, puede acceder a la información de su perfil público, su lista de seguimiento, sus seguidores, sus listas, todos sus mensajes y sus favoritos. Las aplicaciones nunca podrán acceder a su dirección de correo electrónico o contraseña. Si este servidor está en la UE o en el EEE: Nuestro sitio, productos y servicios están dirigidos a personas mayores de 16 años. Si es menor de 16 años, según los requisitos de la GDPR (General Data Protection Regulation) no utilice este sitio. Si este servidor está en los EE.UU.: Nuestro sitio, productos y servicios están todos dirigidos a personas que tienen al menos 13 años de edad. Si usted es menor de 13 años, según los requisitos de COPPA (Children's Online Privacy Protection Act) no utilice este sitio. Los requisitos legales pueden ser diferentes si este servidor está en otra jurisdicción. Si decidimos cambiar nuestra política de privacidad, publicaremos esos cambios en esta página. Este documento es CC-BY-SA. Fue actualizado por última vez el 7 de marzo de 2018. Adaptado originalmente desde la política de privacidad de Discourse. Bai. Cookie-ak gune edo zerbitzu hornitzaile baten zure ordenagailuko disko gogorrera bidaltzen dituen fitxategi txikiak dira (Zuk baimentzen baduzu). Cookie hauek guneari zure nabigatzailea identifikatzea, konturik duzun jakin, eta erregistratutako kontuarekin erlazionatzea ahalbidetzen diote. Bai. Cookie-ak gune edo zerbitzu hornitzaile baten zure ordenagailuko disko gogorrera bidaltzen dituen fitxategi txikiak dira (zuk baimentzen baduzu). Cookie hauek guneari zure nabigatzailea identifikatzea, konturik duzun jakin, eta erregistratutako kontuarekin erlazionatzea ahalbidetzen diote. Cookie-ak erabiltzen ditugu zure hobespenak ulertu eta hurrengo saioetarako gordetzeko Ez dugu identifikatu zaitzakeen informazio pertsonala saltzen, trukatzen edo kanpora bidaltzen. Salbuespena konfiantzako hirugarrengoak dira, gunea martxan izaten laguntzen digutenak, negozioa aurrera eramateko aholkua ematen digutenak edo zuri zerbitzua ematen laguntzen digutenak, hauek informazioaren konfidentzialtasuna errespetatzea onartzen dutenean. Agian legearekin betetzeko beharrezkoa den informazioa ere eman genezake, gunearen politika indarrean jartzeko behar dena, edo gure eskubideak, jabetzak, edo segurtasuna babesteko beharrezkoa dena. Zure eduki publikoak sareko beste zerbitzariek deskargatu dezakete. Zure mezu publikoak eta soilik jarraitzaileentzat diren mezuak zure jarraitzaileen zerbitzarietara bidaltzen dira, jarraitzaile edo hartzaile horiek beste zerbitzari batean badute kontua. Zure eduki publikoak sareko beste zerbitzariek deskargatu dezakete. Zure bidalketa publikoak eta soilik jarraitzaileentzat diren mezuak zure jarraitzaileen zerbitzarietara bidaltzen dira, jarraitzaile edo hartzaile horiek beste zerbitzari batean badute kontua. Aplikazio bati zure kontua erabiltzeko baimena ematen diozunean, onartutako baimen esparruaren arabera, zure profileko informazio publikoa atzitu lezake, zuk jarraitutakoen zerrenda, zure jarraitzaileen zerrenda, zure mezu guztiak eta zure gogokoak. Aplikazioen ezin dute inoiz zure e-mail helbidea edo pasahitza atzitu. Aplikazio bati zure kontua erabiltzeko baimena ematen diozunean, onartutako baimen esparruaren arabera, zure profileko informazio publikoa atzitu lezake, zuk jarraitutakoen zerrenda, zure jarraitzaileen zerrenda, zure bidalketa guztiak eta zure gogokoak. Aplikazioen ezin dute inoiz zure e-posta helbidea edo pasahitza atzitu. Gure pribatutasun politika aldatzea erabakitzen badugu, aldaketak orri honetan argitaratuko ditugu. Dokumentu honek CC-BY-SA lizentzia du. Eta azkenekoz 2019ko martxoak 7an eguneratu zen Dokumentu honek CC-BY-SA lizentzia du. Eta azkenekoz 2018ko martxoak 7an eguneratu zen Jatorrian Discourse sarearen pribatutasun politikatik moldatua. Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes : Toutes les informations que nous collectons sur vous peuvent être utilisées des manières suivantes : Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte. Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS ; tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte. Nous ferons un effort de bonne foi : Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête. Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transfère sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier. Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transfère sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et, dans le cas où vous possédez un compte, de vous associer avec ce dernier. Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes. Nous ne vendons, n’échangeons ou ne transférons d’une quelconque manière que ce soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tiers de confiance qui nous aident à faire fonctionner ce site, à conduire nos activités commerciales ou à vous servir, du moment qu’ils acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que cela est nécessaire pour nous conformer à la loi, pour faire respecter les règles de notre site, ainsi que pour défendre nos droits, notre propriété, notre sécurité, ou ceux d’autres personnes. Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires. Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe. Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, à votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tous vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe. Si ce serveur est situé dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site. Si ce serveur est situé dans l’UE ou l’EEE : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (Règlement Général sur la Protection des Données), merci de ne pas utiliser ce site. Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site. Si ce serveur est situé aux États-Unis d’Amérique : notre site, nos produits et nos services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (Children's Online Privacy Protection Act), merci de ne pas utiliser ce site. Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction. Ce document est publié sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 7 mars 2018. Originellement adapté de la politique de confidentialité de Discourse. Seo na dòighean air an cleachd sinn fiosrachadh sam bith a chruinnich sinn uat ma dh’fhaoidte: Cuiridh sinn iomadh gleus tèarainteachd an sàs ach an glèidheadh sinn sàbhailteachd an fhiosrachaidh phearsanta agad nuair a chuireas tu gin a-steach, nuair a chuireas tu a-null e no nuair a nì thu inntrigeadh air. Am measg gleusan eile, thèid seisean a’ bhrabhsair agad cuide ris an trafaig eadar na h-aplacaidean agad ’s an API a dhìon le SSL agus thèid hais a dhèanamh dhen fhacal-fhaire agad le algairim aon-shligheach làidir. Faodaidh tu dearbhadh dà-cheumnach a chur an comas airson barrachd tèarainteachd a chur ris an inntrigeadh dhan chunntas agad. Nì sinn ar dìcheall: ’S urrainn dhut tasg-lann iarraidh dhen t-susbaint agad ’s a luchdadh a-nuas is gabhaidh seo a-staigh na postaichean, na ceanglachain meadhain, dealbh na pròifil agus dealbh a’ bhanna-chinn agad. ’S urrainn dhut an cunntas agad a sguabadh às gu buan uair sam bith. Cleachdaidh. ’S e faidhlichean beaga a tha sna briosgaidean a thar-chuireas làrach no solaraiche seirbheise gu clàr-cruaidh a’ choimpiutair agad leis a’ bhrabhsair-lìn agad (ma cheadaicheas tu sin). Bheir na briosgaidean sin comas dhan làrach gun aithnich i am brabhsair agad agus ma tha cunntas clàraichte agad, gun co-cheangail i ris a’ chunntas chlàraichte agad e. Cleachdaidh sinn briosgaidean airson na roghainnean agad a thuigsinn ’s a ghlèidheadh gus an tadhail thu oirnn san àm ri teachd. Cha reic, malairt no tar-chuir sinn fiosrachadh air a dh’aithnichear thu fhèin gu pàrtaidh sam bith air an taobh a-muigh. Cha ghabh seo a-staigh treas-phàrtaidhean earbsach a chuidicheas leinn le ruith na làraich againn, le obrachadh a’ ghnìomhachais againn no gus an t-seirbheis a thoirt leat cho fada ’s a dh’aontaicheas na treas-phàrtaidhean sin gun cùm iad am fiosrachadh dìomhair. Faodaidh sinn am fiosrachadh agad fhoillseachadh cuideachd nuair a bhios sinn dhen bheachd gu bheil am foillseachadh sin iomchaidh airson gèilleadh dhan lagh, poileasaidhean na làraich againn èigneachadh no na còraichean, an sealbh no an t-sàbhailteachd againn fhèin no aig càch a dhìon. Dh’fhaoidte gun dèid an t-susbaint phoblach agad a luchdadh a-nuas le frithealaichean eile san lìonra. Thèid na postaichean poblach agad ’s an fheadhainn dhan luchd-leantainn a-mhàin a lìbhrigeadh dha na frithealaichean far a bheil an luchd-leantainn agad a’ còmhnaidh agus thèid na teachdaireachdan dìreach a lìbhrigeadh gu frithealaichean nam faightearan nuair a bhios iad a’ còmhnaidh air frithealaiche eile. Nuair a dh’ùghdarraicheas tu aplacaid gun cleachd i an cunntas agad, a-rèir sgòp nan ceadan a dh’aontaicheas tu riutha, faodaidh i fiosrachadh poblach na pròifil agad, liosta na feadhna air a bhios tu a’ leantainn, an luchd-leantainn agad, na liostaichean agad, na postaichean agad uile ’s na h-annsachdan agad inntrigeadh. Chan urrainn do dh’aplacaidean an seòladh puist-d no am facal-faire agad inntrigeadh idir. Ma tha am frithealaiche seo san Aonadh Eòrpach (AE) no san Roinn Eaconomach na h-Eòrpa (EEA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo. Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act)ha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 16 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon GDPR (General Data Protection Regulation) nach cleachd thu an làrach seo. Ma tha am frithealaiche seo sna Stàitean Aonaichte (SAA): Tha an làrach, na batharan agus na seirbheisean againn uile ag amas air an fheadhainn a tha co-dhiù 13 bliadhnaichean a dh’aois. Ma tha thu nas òige na 16 bliadhnaichean a dh’aois, tha e riatanach fon COPPA (Children''s Online Privacy Protection Act) nach cleachd thu an làrach seo. Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile. Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo. Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018. Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse. Dh’fhaoidte gu bheil am frithealaiche seo fo riatanasan lagha eile ma tha e ann an uachdranas laghail eile. Ma chuireas sinn romhainn am poileasaidh prìobhaideachd againn atharrachadh, postaichidh sinn na h-atharraichean dhan duilleag seo. Tha an sgrìobhainn seo fo cheadachas CC-BY-SA. Chaidh ùrachadh an turas mu dheireadh an t-7mh dhen Mhart 2018. Chaidh a fhreagarrachadh o thùs o phoileasaidh prìobhaideachd Discourse. Kérhetsz mentést minden tárolt adatodról, tülködről, média fájlodról, profil- és háttér képedről. Kérhetsz mentést minden tárolt adatodról, bejegyzésedről, média fájlodról, profil- és háttér képedről. Bármikor visszaállíthatatlanul le is törölheted a fiókodat. Igen. A sütik pici állományok, melyeket az oldalunk a böngésződön keresztül a háttértáradra rak, ha engedélyezed ezt. Ezek a sütik teszik lehetővé, hogy az oldalunk felismerje a böngésződet, és ha regisztráltál, hozzá tudjon kötni a fiókodhoz. Arra is használjuk a sütiket, hogy elmenthessük a beállításaidat egy következő látogatás céljából. Arra is használjuk a sütiket, hogy elmenthessük a beállításaidat egy következő látogatás alkalmára. Az azonosításodra alkalmazható adatokat nem adjuk el, nem kereskedünk vele, nem adjuk át külső szereplőnek. Ez nem foglalja magában azon harmadik személyeket, aki az üzemeltetésben, felhasználók kiszolgálásban és a tevékenységünkben segítenek, de csak addig, amíg ők is elfogadják, hogy ezeket az adatokat bizalmasan kezelik. Akkor is átadhatjuk ezeket az adatokat, ha erre hitünk szerint törvény kötelez minket, ha betartatjuk az oldalunk szabályzatát vagy megvédjük a saját vagy mások személyiségi jogait, tulajdonát, biztonságát. A nyilvános tartalmaidat más hálózatban lévő szerverek letölthetik. A nyilvános és csak követőknek szánt tülkjeid olyan szerverekre is elküldődnek, melyeken követőid vannak. A közvetlen üzenetek is átkerülnek a címzettek szervereire, ha ők más szerveren regisztráltak. A nyilvános tartalmaidat más hálózatban lévő szerverek letölthetik. A nyilvános és csak követőknek szánt bejegyzéseid olyan szerverekre is elküldődnek, melyeken követőid vannak. A közvetlen üzenetek is átkerülnek a címzettek szervereire, ha ők más szerveren regisztráltak. Ha felhatalmazol egy alkalmazást, hogy használja a fiókodat, a jóváhagyott hatásköröktől függően ez elérheti a nyilvános profiladataidat, a követettjeid listáját, a követőidet, listáidat, tülkjeidet és kedvenceidet is. Ezek az alkalmazások ugyanakkor sosem érhetik el a jelszavadat és e-mail címedet. Ha felhatalmazol egy alkalmazást, hogy használja a fiókodat, a jóváhagyott hatásköröktől függően ez elérheti a nyilvános profiladataidat, a követettjeid listáját, a követőidet, listáidat, bejegyzéseidet és kedvenceidet is. Ezek az alkalmazások ugyanakkor sosem érhetik el a jelszavadat és e-mail címedet. Totu is informatziones chi collimus dae tene diat pòdere èssere impreadas in is maneras chi sighint: Totu is informatziones chi collimus dae tene diant pòdere èssere impreadas in is maneras chi sighint: Impreamus medidas de seguresa vàrias pro amparare sa seguresa de is informatziones personales tuas cando insertas o imbias is informatziones personales tuas, o cando b'atzedes. In paris a àteras cosas, sa sessione de su navigadore tuo, e fintzas su tràficu intre s'aplicatzione tua e s'API, benint amparados cun SSL, e sa crae tua benit tzifrada impreende un'algoritmu forte a una diretzione. Pro afortiare sa seguresa de s'atzessu a su contu tuo galu de prus podes abilitare s'autenticatzione in duos fatores. Impreamus medidas de seguresa vàrias pro amparare sa seguresa de is informatziones personales tuas cando insertas o imbias is informatziones personales tuas, o cando bi atzedes. In paris a àteras cosas, sa sessione de su navigadore tuo, e fintzas su tràficu intre s'aplicatzione tua e s'API, benint amparados cun SSL, e sa crae tua benit tzifrada impreende un'algoritmu forte a una diretzione. Pro afortiare sa seguresa de s'atzessu a su contu tuo ancora de prus podes abilitare s'autenticatzione in duos fatores. Eja. Is testimòngios ("cookies") sunt documentos minores chi unu situ o su frunidore de servìtzios suos tramudant a su discu tèteru de s'elaboradore tuo pro mèdiu de su navigadore web tuo (si bi lu permitis). Custos testimòngios permitint a su situ de reconnòschere su navigadore tuo e, si tenes unu contu registradu, de dd'assotziare cun su contu tuo. Eja. Is testimòngios ("cookies") sunt documentos minores chi unu situ o su frunidore de servìtzios suos tramudant a su discu tèteru de s'elaboradore tuo pro mèdiu de su navigadore web tuo (si si ddu permitis). Custos testimòngios permitint a su situ de reconnòschere su navigadore tuo e, si tenes unu contu registradu, de ddu assotziare cun su contu tuo. Impreamus is testimòngios pro cumprèndere e sarvare is preferèntzias tuas pro is bìsitas imbenientes. Impreamus is testimòngios pro cumprèndere e sarvare is preferèntzias tuas pro is visitas imbenientes. Non bendimus, cuncambiamus, o tramudamus in àteras maneras is informatziones tuas chi ti diant pòdere individuare in manera personale. Custu no incluit sugetos de tertzas partes fidados chi nos agiudant a amministrare su situ, fàghere is fainas nostras, o a t'agiudare, finas a cando cussos sugetos atzetant de mantènnere cunfidentziales cussas informatziones. Diamus fintzas pòdere frunire is informatziones tuas si amus a èssere cumbintos chi siat apropriadu pro sighire is leges, aplicare is polìticas de su situ nostru, e amparare is deretos, propiedades o seguresas nostros o de àteros. Is cuntenutos pùblicos tuos diant pòdere èssere iscarrigados dae àteros serbidores in sa retza. Is publicatziones pùblicas e pro is sighidores ebbia benint intregadas a is serbidores in ue istant is retzidores, si istant in unu serbidore chi no est custu. Is cuntenutos pùblicos tuos diant pòdere èssere iscarrigados dae àteros serbidores in sa rete. Is publicatziones pùblicas e pro is sighiduras ebbia benint intregadas a is serbidores in ue istant is retzidores, si istant in unu serbidore chi no est custu. Cando autorizas un'aplicatzione a impreare su contu tuo, a segunda de sa mannària de is permissos chi frunis, cussa diat pòdere atzèdere a is informatziones pùblicas de profilu tuas, a sa lista de is persones chi sighis e chi ti sighint, a is listas tuas, a totu is publicatziones tuas e a is referidos tuos. Is aplicatziones non podent mai tènnere atzessu a s'indiritzu de posta eletrònica tuo e a sa crae de intrada tua. Si custu serbidore est in s'UE o in s'ÀEE: Su situ nostru, is produtos nostros e is servìtzios nostros sunt totu cantos pensados pro persones chi tenent a su mancu 16 annos de edade. Si tenes de mancu de 16 annos, in aplicatzione de is rechisitos de su GDPR (General Data Protection Regulation) no imprees custu situ. Si custu serbidore est in sos IUA: Su situ nostru, is produtos e is servìtzios suos sunt totu cantos pensados pro persones chi tenent a su mancu 13 annos de edade. Si tenes de mancu de 13 annos, in aplicatzione de su COPPA (Children's Online Privacy Protection Act) no imprees custu situ. Si custu serbidore est in is IUA: Su situ nostru, is produtos e is servìtzios suos sunt totu cantos pensados pro persones chi tenent a su mancu 13 annos de edade. Si tenes de mancu de 13 annos, in aplicatzione de su COPPA (Children's Online Privacy Protection Act) no imprees custu situ. Is rechisidos de sa lege diant pòdere èssere diferentes si custu serbidore est in suta de un'àtera giurisditzione. Is rechisitos de sa lege diant pòdere èssere diferentes si custu serbidore est in suta de un'àtera giurisditzione. Si amus a isseberare de cambiare sa polìtica de riservadesa nostra amus a publicare is modìficas in custa pàgina. Si amus a seberare de cambiare sa polìtica de riservadesa nostra amus a publicare is modìficas in custa pàgina. Custu documentu tenet una litzèntzia CC-BY-SA. Est istadu agiornadu s'ùrtima borta su 7 de martzu de su 2018. Bạn có thể tải xuống một bản sao lưu trữ nội dung của bạn, bao gồm các tút, tệp đính kèm phương tiện, ảnh đại diện và ảnh bìa. Bạn có thể tải xuống một bản sao lưu trữ nội dung của bạn, bao gồm các tút, tập tin đính kèm, ảnh đại diện và ảnh bìa. Bạn có thể xóa tài khoản của mình bất cứ lúc nào. Có. Cookie là các tệp nhỏ mà một trang web hoặc nhà cung cấp dịch vụ internet chuyển vào ổ cứng máy tính của bạn thông qua trình duyệt Web (nếu bạn cho phép). Những cookie này cho phép trang web nhận ra trình duyệt của bạn và nếu bạn có tài khoản đã đăng ký, nó sẽ liên kết với tài khoản đã đăng ký của bạn. Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tương lai. Chúng tôi sử dụng cookie để hiểu và lưu các tùy chọn của bạn cho các lần truy cập trong tiếp theo. Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai. Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang cá nhân, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn. Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, theo yêu cầu của GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này. Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều hướng đến những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, theo yêu cầu của COPPA (Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em) thì không được sử dụng trang web này. Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo GDPR (Quy định bảo vệ dữ liệu chung) thì không được sử dụng trang web này. Nếu máy chủ này ở Hoa Kỳ: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 13 tuổi. Nếu bạn dưới 13 tuổi, xét theo COPPA (Đạo luật bảo vệ quyền riêng tư trực tuyến của trẻ em) thì không được sử dụng trang web này. Quy định pháp luật có thể khác biệt nếu máy chủ này ở khu vực địa lý khác. Nếu có thay đổi chính sách bảo mật, chúng tôi sẽ đăng những thay đổi đó ở mục này. Tài liệu này phát hành dưới hình thức CC-BY-SA và được cập nhật lần cuối vào ngày 7 tháng 3 năm 2018. Chỉnh sửa và hoàn thiện từ Discourse. 我们向您收集的任何信息均可通过以下方式使用: 我们向你收集的任何信息均可通过以下方式使用: 当您输入,提交或访问您的个人信息时,我们会实施各种安全措施以维护您的个人信息的安全。 除此之外,您的浏览器会话以及应用程序和API之间的流量都使用SSL进行保护,您的密码使用强大的单向算法进行哈希处理。 您可以启用双因素身份验证,以进一步保护对您帐户的访问。 当你输入,提交或访问你的个人信息时,我们会实施各种安全措施以维护你的个人信息的安全。 除此之外,你的浏览器会话以及应用程序和API之间的流量都使用SSL进行保护,你的密码使用强大的单向算法进行哈希处理。 你可以启用双因素身份验证,以进一步保护对你帐户的访问。 您可以请求并下载我们内容的存档,包括您的帖子,媒体附件,个人资料图片和标题图片。 你可以请求并下载我们内容的存档,包括你的帖子,媒体附件,个人资料图片和标题图片。 您可以随时不可逆转地删除您的帐户。 你可以随时不可逆转地删除你的帐户。 是。 Cookie是网站或其服务提供商通过Web浏览器传输到计算机硬盘的小文件(如果允许)。 这些cookie使网站能够识别您的浏览器,如果您有注册帐户,则将其与您的注册帐户相关联。 是。 Cookie是网站或其服务提供商通过Web浏览器传输到计算机硬盘的小文件(如果允许)。 这些cookie使网站能够识别你的浏览器,如果你有注册帐户,则将其与你的注册帐户相关联。 我们使用Cookie来了解并保存您对未来访问的偏好。 我们使用Cookie来了解并保存你对未来访问的偏好。 我们不会将您的个人身份信息出售,交易或以其他方式转让给外方。 这不包括协助我们操作我们的网站,开展业务或为您服务的受信任的第三方,只要这些方同意保密这些信息。 当我们认为发布适合遵守法律,执行我们的网站政策或保护我们或他人的权利,财产或安全时,我们也可能会发布您的信息。 我们不会将你的个人身份信息出售,交易或以其他方式转让给外方。 这不包括协助我们操作我们的网站,开展业务或为你服务的受信任的第三方,只要这些方同意保密这些信息。 当我们认为发布适合遵守法律,执行我们的网站政策或保护我们或他人的权利,财产或安全时,我们也可能会发布你的信息。 您的公共内容可能会被网络中的其他服务器下载。 您的公开帖子和关注者帖子会发送到关注者所在的服务器,并且直接邮件会传递到收件人的服务器,只要这些关注者或收件人位于与此不同的服务器上。 你的公共内容可能会被网络中的其他服务器下载。 你的公开帖子和关注者帖子会发送到关注者所在的服务器,并且直接邮件会传递到收件人的服务器,只要这些关注者或收件人位于与此不同的服务器上。 当您授权应用程序使用您的帐户时,根据您批准的权限范围,它可能会访问您的公开个人资料信息,以下列表,您的关注者,您的列表,所有帖子和您的收藏夹。 应用程序永远不能访问您的电子邮件地址或密码。 当你授权应用程序使用你的帐户时,根据你批准的权限范围,它可能会访问你的公开个人资料信息,以下列表,你的关注者,你的列表,所有帖子和你的收藏夹。 应用程序永远不能访问你的电子邮件地址或密码。 如果此服务器位于欧盟或欧洲经济区:我们的网站,产品和服务都是针对至少16岁的人。 如果您未满16岁,则符合GDPR的要求(General Data Protection Regulation) 不要使用这个网站。 如果此服务器位于欧盟或欧洲经济区:我们的网站,产品和服务都是针对至少16岁的人。 如果你未满16岁,则符合GDPR的要求(General Data Protection Regulation) 不要使用这个网站。 如果此服务器位于美国:我们的网站,产品和服务均面向至少13岁的人。 如果您未满13岁,则符合COPPA的要求 (Children's Online Privacy Protection Act) 不要使用这个网站。 如果此服务器位于美国:我们的网站,产品和服务均面向至少13岁的人。 如果你未满13岁,则符合COPPA的要求 (Children's Online Privacy Protection Act) 不要使用这个网站。 如果此服务器位于另一个辖区,则法律要求可能不同。
- {media.map(attachment => {
- const displayUrl = attachment.get('remote_url') || attachment.get('url');
-
- return (
-
-
{media.map(attachment => {
@@ -46,7 +32,11 @@ export default class AttachmentList extends ImmutablePureComponent {
return (
@@ -15,4 +15,4 @@ const MissingIndicator = () => (
-
+
-
@@ -340,26 +325,28 @@ class Header extends ImmutablePureComponent {
{account.get('id') !== me && !suspended &&
+
+
{lists.map(list => (
- "
+ image_tag(original_url, draggable: false, class: 'emojione', alt: ":#{shortcode}:", title: ":#{shortcode}:")
else
- "
"
+ image_tag(original_url, draggable: false, class: 'emojione custom-emoji', alt: ":#{shortcode}:", title: ":#{shortcode}:", data: { original: original_url, static: static_url })
end
end
before_html = shortname_start_index.positive? ? html[0..shortname_start_index - 1] : ''
@@ -280,39 +279,10 @@ class Formatter
result.flatten.join
end
- UNICODE_ESCAPE_BLACKLIST_RE = /\p{Z}|\p{P}/
-
def utf8_friendly_extractor(text, options = {})
- old_to_new_index = [0]
-
- escaped = text.chars.map do |c|
- output = begin
- if c.ord.to_s(16).length > 2 && UNICODE_ESCAPE_BLACKLIST_RE.match(c).nil?
- CGI.escape(c)
- else
- c
- end
- end
-
- old_to_new_index << old_to_new_index.last + output.length
-
- output
- end.join
-
# Note: I couldn't obtain list_slug with @user/list-name format
# for mention so this requires additional check
- special = Extractor.extract_urls_with_indices(escaped, options).map do |extract|
- new_indices = [
- old_to_new_index.find_index(extract[:indices].first),
- old_to_new_index.find_index(extract[:indices].last),
- ]
-
- next extract.merge(
- indices: new_indices,
- url: text[new_indices.first..new_indices.last - 1]
- )
- end
-
+ special = Extractor.extract_urls_with_indices(text, options)
standard = Extractor.extract_entities_with_indices(text, options)
extra = Extractor.extract_extra_uris_with_indices(text, options)
@@ -348,27 +318,42 @@ class Formatter
html_attrs[:rel] = "me #{html_attrs[:rel]}" if options[:me]
- Twitter::Autolink.send(:link_to_text, entity, link_html(entity[:url]), url, html_attrs)
+ Twitter::TwitterText::Autolink.send(:link_to_text, entity, link_html(entity[:url]), url, html_attrs)
rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
encode(entity[:url])
end
- def link_to_mention(entity, linkable_accounts)
+ def link_to_mention(entity, linkable_accounts, options = {})
acct = entity[:screen_name]
- return link_to_account(acct) unless linkable_accounts
+ return link_to_account(acct, options) unless linkable_accounts
- account = linkable_accounts.find { |item| TagManager.instance.same_acct?(item.acct, acct) }
- account ? mention_html(account) : "@#{encode(acct)}"
+ same_username_hits = 0
+ account = nil
+ username, domain = acct.split('@')
+ domain = nil if TagManager.instance.local_domain?(domain)
+
+ linkable_accounts.each do |item|
+ same_username = item.username.casecmp(username).zero?
+ same_domain = item.domain.nil? ? domain.nil? : item.domain.casecmp(domain)&.zero?
+
+ if same_username && !same_domain
+ same_username_hits += 1
+ elsif same_username && same_domain
+ account = item
+ end
+ end
+
+ account ? mention_html(account, with_domain: same_username_hits.positive? || options[:with_domain]) : "@#{encode(acct)}"
end
- def link_to_account(acct)
+ def link_to_account(acct, options = {})
username, domain = acct.split('@')
domain = nil if TagManager.instance.local_domain?(domain)
account = EntityCache.instance.mention(username, domain)
- account ? mention_html(account) : "@#{encode(acct)}"
+ account ? mention_html(account, with_domain: options[:with_domain]) : "@#{encode(acct)}"
end
def link_to_hashtag(entity)
@@ -389,7 +374,7 @@ class Formatter
"##{encode(tag)}"
end
- def mention_html(account)
- "@#{encode(account.username)}"
+ def mention_html(account, with_domain: false)
+ "@#{encode(with_domain ? account.pretty_acct : account.username)}"
end
end
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
index 2cc8ac615..40452eddc 100644
--- a/app/lib/language_detector.rb
+++ b/app/lib/language_detector.rb
@@ -69,7 +69,7 @@ class LanguageDetector
def simplify_text(text)
new_text = remove_html(text)
- new_text.gsub!(FetchLinkCardService::URL_PATTERN, '')
+ new_text.gsub!(FetchLinkCardService::URL_PATTERN, '\1')
new_text.gsub!(Account::MENTION_RE, '')
new_text.gsub!(Tag::HASHTAG_RE) { |string| string.gsub(/[#_]/, '#' => '', '_' => ' ').gsub(/[a-z][A-Z]|[a-zA-Z][\d]/) { |s| s.insert(1, ' ') }.downcase }
new_text.gsub!(/:#{CustomEmoji::SHORTCODE_RE_FRAGMENT}:/, '')
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
new file mode 100644
index 000000000..e48bce060
--- /dev/null
+++ b/app/lib/permalink_redirector.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+class PermalinkRedirector
+ include RoutingHelper
+
+ def initialize(path)
+ @path = path
+ end
+
+ def redirect_path
+ if path_segments[0] == 'web'
+ if path_segments[1].present? && path_segments[1].start_with?('@') && path_segments[2] =~ /\d/
+ find_status_url_by_id(path_segments[2])
+ elsif path_segments[1].present? && path_segments[1].start_with?('@')
+ find_account_url_by_name(path_segments[1])
+ elsif path_segments[1] == 'statuses' && path_segments[2] =~ /\d/
+ find_status_url_by_id(path_segments[2])
+ elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/
+ find_account_url_by_id(path_segments[2])
+ elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present?
+ find_tag_url_by_name(path_segments[3])
+ elsif path_segments[1] == 'tags' && path_segments[2].present?
+ find_tag_url_by_name(path_segments[2])
+ end
+ end
+ end
+
+ private
+
+ def path_segments
+ @path_segments ||= @path.gsub(/\A\//, '').split('/')
+ end
+
+ def find_status_url_by_id(id)
+ status = Status.find_by(id: id)
+
+ return unless status&.distributable?
+
+ ActivityPub::TagManager.instance.url_for(status)
+ end
+
+ def find_account_url_by_id(id)
+ account = Account.find_by(id: id)
+
+ return unless account
+
+ ActivityPub::TagManager.instance.url_for(account)
+ end
+
+ def find_account_url_by_name(name)
+ username, domain = name.gsub(/\A@/, '').split('@')
+ domain = nil if TagManager.instance.local_domain?(domain)
+ account = Account.find_remote(username, domain)
+
+ return unless account
+
+ ActivityPub::TagManager.instance.url_for(account)
+ end
+
+ def find_tag_url_by_name(name)
+ tag_path(CGI.unescape(name))
+ end
+end
diff --git a/app/lib/potential_friendship_tracker.rb b/app/lib/potential_friendship_tracker.rb
index 188aa4a27..f5bc20346 100644
--- a/app/lib/potential_friendship_tracker.rb
+++ b/app/lib/potential_friendship_tracker.rb
@@ -27,11 +27,5 @@ class PotentialFriendshipTracker
def remove(account_id, target_account_id)
redis.zrem("interactions:#{account_id}", target_account_id)
end
-
- def get(account_id, limit: 20, offset: 0)
- account_ids = redis.zrevrange("interactions:#{account_id}", offset, limit)
- return [] if account_ids.empty?
- Account.searchable.where(id: account_ids)
- end
end
end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 38048dad7..125dee3ea 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -145,7 +145,7 @@ class Request
end
def block_hidden_service?
- !Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match(@url.host)
+ !Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match?(@url.host)
end
module ClientLimit
diff --git a/app/lib/settings/scoped_settings.rb b/app/lib/settings/scoped_settings.rb
index 9889940f3..796de1113 100644
--- a/app/lib/settings/scoped_settings.rb
+++ b/app/lib/settings/scoped_settings.rb
@@ -31,7 +31,7 @@ module Settings
def all_as_records
vars = thing_scoped
- records = vars.each_with_object({}) { |r, h| h[r.var] = r }
+ records = vars.index_by(&:var)
Setting.default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)
@@ -64,7 +64,7 @@ module Settings
class << self
def default_settings
- defaulting = DEFAULTING_TO_UNSCOPED.each_with_object({}) { |k, h| h[k] = Setting[k] }
+ defaulting = DEFAULTING_TO_UNSCOPED.index_with { |k| Setting[k] }
Setting.default_settings.merge!(defaulting)
end
end
diff --git a/app/lib/spam_check.rb b/app/lib/spam_check.rb
deleted file mode 100644
index 652d03615..000000000
--- a/app/lib/spam_check.rb
+++ /dev/null
@@ -1,198 +0,0 @@
-# frozen_string_literal: true
-
-class SpamCheck
- include Redisable
- include ActionView::Helpers::TextHelper
-
- # Threshold over which two Nilsimsa values are considered
- # to refer to the same text
- NILSIMSA_COMPARE_THRESHOLD = 95
-
- # Nilsimsa doesn't work well on small inputs, so below
- # this size, we check only for exact matches with MD5
- NILSIMSA_MIN_SIZE = 10
-
- # How long to keep the trail of digests between updates,
- # there is no reason to store it forever
- EXPIRE_SET_AFTER = 1.week.seconds
-
- # How many digests to keep in an account's trail. If it's
- # too small, spam could rotate around different message templates
- MAX_TRAIL_SIZE = 10
-
- # How many detected duplicates to allow through before
- # considering the message as spam
- THRESHOLD = 5
-
- def initialize(status)
- @account = status.account
- @status = status
- end
-
- def skip?
- disabled? || already_flagged? || trusted? || no_unsolicited_mentions? || solicited_reply?
- end
-
- def spam?
- if insufficient_data?
- false
- elsif nilsimsa?
- digests_over_threshold?('nilsimsa') { |_, other_digest| nilsimsa_compare_value(digest, other_digest) >= NILSIMSA_COMPARE_THRESHOLD }
- else
- digests_over_threshold?('md5') { |_, other_digest| other_digest == digest }
- end
- end
-
- def flag!
- auto_report_status!
- end
-
- def remember!
- # The scores in sorted sets don't actually have enough bits to hold an exact
- # value of our snowflake IDs, so we use it only for its ordering property. To
- # get the correct status ID back, we have to save it in the string value
-
- redis.zadd(redis_key, @status.id, digest_with_algorithm)
- redis.zremrangebyrank(redis_key, 0, -(MAX_TRAIL_SIZE + 1))
- redis.expire(redis_key, EXPIRE_SET_AFTER)
- end
-
- def reset!
- redis.del(redis_key)
- end
-
- def hashable_text
- return @hashable_text if defined?(@hashable_text)
-
- @hashable_text = @status.text
- @hashable_text = remove_mentions(@hashable_text)
- @hashable_text = strip_tags(@hashable_text) unless @status.local?
- @hashable_text = normalize_unicode(@status.spoiler_text + ' ' + @hashable_text)
- @hashable_text = remove_whitespace(@hashable_text)
- end
-
- def insufficient_data?
- hashable_text.blank?
- end
-
- def digest
- @digest ||= begin
- if nilsimsa?
- Nilsimsa.new(hashable_text).hexdigest
- else
- Digest::MD5.hexdigest(hashable_text)
- end
- end
- end
-
- def digest_with_algorithm
- if nilsimsa?
- ['nilsimsa', digest, @status.id].join(':')
- else
- ['md5', digest, @status.id].join(':')
- end
- end
-
- class << self
- def perform(status)
- spam_check = new(status)
-
- return if spam_check.skip?
-
- if spam_check.spam?
- spam_check.flag!
- else
- spam_check.remember!
- end
- end
- end
-
- private
-
- def disabled?
- !Setting.spam_check_enabled
- end
-
- def remove_mentions(text)
- return text.gsub(Account::MENTION_RE, '') if @status.local?
-
- Nokogiri::HTML.fragment(text).tap do |html|
- mentions = @status.mentions.map { |mention| ActivityPub::TagManager.instance.url_for(mention.account) }
-
- html.traverse do |element|
- element.unlink if element.name == 'a' && mentions.include?(element['href'])
- end
- end.to_s
- end
-
- def normalize_unicode(text)
- text.unicode_normalize(:nfkc).downcase
- end
-
- def remove_whitespace(text)
- text.gsub(/\s+/, ' ').strip
- end
-
- def auto_report_status!
- status_ids = Status.where(visibility: %i(public unlisted)).where(id: matching_status_ids).pluck(:id) + [@status.id] if @status.distributable?
- ReportService.new.call(Account.representative, @account, status_ids: status_ids, comment: I18n.t('spam_check.spam_detected'))
- end
-
- def already_flagged?
- @account.silenced? || @account.targeted_reports.unresolved.where(account_id: -99).exists?
- end
-
- def trusted?
- @account.trust_level > Account::TRUST_LEVELS[:untrusted] || (@account.local? && @account.user_staff?)
- end
-
- def no_unsolicited_mentions?
- @status.mentions.all? { |mention| mention.silent? || (!@account.local? && !mention.account.local?) || mention.account.following?(@account) }
- end
-
- def solicited_reply?
- !@status.thread.nil? && @status.thread.mentions.where(account: @account).exists?
- end
-
- def nilsimsa_compare_value(first, second)
- first = [first].pack('H*')
- second = [second].pack('H*')
- bits = 0
-
- 0.upto(31) do |i|
- bits += Nilsimsa::POPC[255 & (first[i].ord ^ second[i].ord)].ord
- end
-
- 128 - bits # -128 <= Nilsimsa Compare Value <= 128
- end
-
- def nilsimsa?
- hashable_text.size > NILSIMSA_MIN_SIZE
- end
-
- def other_digests
- redis.zrange(redis_key, 0, -1)
- end
-
- def digests_over_threshold?(filter_algorithm)
- other_digests.select do |record|
- algorithm, other_digest, status_id = record.split(':')
-
- next unless algorithm == filter_algorithm
-
- yield algorithm, other_digest, status_id
- end.size >= THRESHOLD
- end
-
- def matching_status_ids
- if nilsimsa?
- other_digests.select { |record| record.start_with?('nilsimsa') && nilsimsa_compare_value(digest, record.split(':')[1]) >= NILSIMSA_COMPARE_THRESHOLD }.map { |record| record.split(':')[2] }.compact
- else
- other_digests.select { |record| record.start_with?('md5') && record.split(':')[1] == digest }.map { |record| record.split(':')[2] }.compact
- end
- end
-
- def redis_key
- @redis_key ||= "spam_check:#{@account.id}"
- end
-end
diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb
index 35b191dad..735d66a4f 100644
--- a/app/lib/status_reach_finder.rb
+++ b/app/lib/status_reach_finder.rb
@@ -6,11 +6,22 @@ class StatusReachFinder
end
def inboxes
- Account.where(id: reached_account_ids).inboxes
+ (reached_account_inboxes + followers_inboxes + relay_inboxes).uniq
end
private
+ def reached_account_inboxes
+ # When the status is a reblog, there are no interactions with it
+ # directly, we assume all interactions are with the original one
+
+ if @status.reblog?
+ []
+ else
+ Account.where(id: reached_account_ids).inboxes
+ end
+ end
+
def reached_account_ids
[
replied_to_account_id,
@@ -49,4 +60,20 @@ class StatusReachFinder
def replies_account_ids
@status.replies.pluck(:account_id)
end
+
+ def followers_inboxes
+ if @status.in_reply_to_local_account? && @status.distributable?
+ @status.account.followers.or(@status.thread.account.followers).inboxes
+ else
+ @status.account.followers.inboxes
+ end
+ end
+
+ def relay_inboxes
+ if @status.public_visibility?
+ Relay.enabled.pluck(:inbox_url)
+ else
+ []
+ end
+ end
end
diff --git a/app/lib/tag_manager.rb b/app/lib/tag_manager.rb
index 29dde128c..a1d12a654 100644
--- a/app/lib/tag_manager.rb
+++ b/app/lib/tag_manager.rb
@@ -22,14 +22,6 @@ class TagManager
uri.normalized_host
end
- def same_acct?(canonical, needle)
- return true if canonical.casecmp(needle).zero?
-
- username, domain = needle.split('@')
-
- local_domain?(domain) && canonical.casecmp(username).zero?
- end
-
def local_url?(url)
uri = Addressable::URI.parse(url).normalize
return false unless uri.host
diff --git a/app/lib/validation_error_formatter.rb b/app/lib/validation_error_formatter.rb
new file mode 100644
index 000000000..3f964f739
--- /dev/null
+++ b/app/lib/validation_error_formatter.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class ValidationErrorFormatter
+ def initialize(error, aliases = {})
+ @error = error
+ @aliases = aliases
+ end
+
+ def as_json
+ { error: @error.to_s, details: details }
+ end
+
+ private
+
+ def details
+ h = {}
+
+ errors.details.each_pair do |attribute_name, attribute_errors|
+ messages = errors.messages[attribute_name]
+
+ h[@aliases[attribute_name] || attribute_name] = attribute_errors.map.with_index do |error, index|
+ { error: 'ERR_' + error[:error].to_s.upcase, description: messages[index] }
+ end
+ end
+
+ h
+ end
+
+ def errors
+ @errors ||= @error.record.errors
+ end
+end
diff --git a/app/lib/video_metadata_extractor.rb b/app/lib/video_metadata_extractor.rb
new file mode 100644
index 000000000..03e40f923
--- /dev/null
+++ b/app/lib/video_metadata_extractor.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+class VideoMetadataExtractor
+ attr_reader :duration, :bitrate, :video_codec, :audio_codec,
+ :colorspace, :width, :height, :frame_rate
+
+ def initialize(path)
+ @path = path
+ @metadata = Oj.load(ffmpeg_command_output, mode: :strict, symbol_keys: true)
+
+ parse_metadata
+ rescue Terrapin::ExitStatusError, Oj::ParseError
+ @invalid = true
+ rescue Terrapin::CommandNotFoundError
+ raise Paperclip::Errors::CommandNotFoundError, 'Could not run the `ffprobe` command. Please install ffmpeg.'
+ end
+
+ def valid?
+ !@invalid
+ end
+
+ private
+
+ def ffmpeg_command_output
+ command = Terrapin::CommandLine.new('ffprobe', '-i :path -print_format :format -show_format -show_streams -show_error -loglevel :loglevel')
+ command.run(path: @path, format: 'json', loglevel: 'fatal')
+ end
+
+ def parse_metadata
+ if @metadata.key?(:format)
+ @duration = @metadata[:format][:duration].to_f
+ @bitrate = @metadata[:format][:bit_rate].to_i
+ end
+
+ if @metadata.key?(:streams)
+ video_streams = @metadata[:streams].select { |stream| stream[:codec_type] == 'video' }
+ audio_streams = @metadata[:streams].select { |stream| stream[:codec_type] == 'audio' }
+
+ if (video_stream = video_streams.first)
+ @video_codec = video_stream[:codec_name]
+ @colorspace = video_stream[:pix_fmt]
+ @width = video_stream[:width]
+ @height = video_stream[:height]
+ @frame_rate = video_stream[:avg_frame_rate] == '0/0' ? nil : Rational(video_stream[:avg_frame_rate])
+ end
+
+ if (audio_stream = audio_streams.first)
+ @audio_codec = audio_stream[:codec_name]
+ end
+ end
+
+ @invalid = true if @metadata.key?(:error)
+ end
+end
diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb
index c7aa43bb3..e0e022cea 100644
--- a/app/lib/webfinger.rb
+++ b/app/lib/webfinger.rb
@@ -21,7 +21,7 @@ class Webfinger
private
def links
- @links ||= @json['links'].map { |link| [link['rel'], link] }.to_h
+ @links ||= @json['links'].index_by { |link| link['rel'] }
end
end
@@ -88,10 +88,18 @@ class Webfinger
end
def standard_url
- "https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ if @domain.end_with? ".onion"
+ "http://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ else
+ "https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ end
end
def host_meta_url
- "https://#{@domain}/.well-known/host-meta"
+ if @domain.end_with? ".onion"
+ "http://#{@domain}/.well-known/host-meta"
+ else
+ "https://#{@domain}/.well-known/host-meta"
+ end
end
end
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 54db892cc..9e683b6a1 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -4,7 +4,7 @@ class NotificationMailer < ApplicationMailer
helper :accounts
helper :statuses
- add_template_helper RoutingHelper
+ helper RoutingHelper
def mention(recipient, notification)
@me = recipient
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb
index 95996ba3f..68d1c4507 100644
--- a/app/mailers/user_mailer.rb
+++ b/app/mailers/user_mailer.rb
@@ -8,7 +8,7 @@ class UserMailer < Devise::Mailer
helper :instance
helper :statuses
- add_template_helper RoutingHelper
+ helper RoutingHelper
def confirmation_instructions(user, token, **)
@resource = user
diff --git a/app/models/account.rb b/app/models/account.rb
index f6aba74c6..d6300a13f 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -6,12 +6,8 @@
# id :bigint(8) not null, primary key
# username :string default(""), not null
# domain :string
-# secret :string default(""), not null
# private_key :text
# public_key :text default(""), not null
-# remote_url :string default(""), not null
-# salmon_url :string default(""), not null
-# hub_url :string default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
# note :text default(""), not null
@@ -27,7 +23,6 @@
# header_file_size :integer
# header_updated_at :datetime
# avatar_remote_url :string
-# subscription_expires_at :datetime
# locked :boolean default(FALSE), not null
# header_remote_url :string default(""), not null
# last_webfingered_at :datetime
@@ -50,20 +45,29 @@
# avatar_storage_schema_version :integer
# header_storage_schema_version :integer
# devices_url :string
-# sensitized_at :datetime
# suspension_origin :integer
+# sensitized_at :datetime
#
class Account < ApplicationRecord
- USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
- MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[a-z0-9]+)?)/i
+ self.ignored_columns = %w(
+ subscription_expires_at
+ secret
+ remote_url
+ salmon_url
+ hub_url
+ )
+ USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
+ MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[[:word:]]+)?)/i
+ URL_PREFIX_RE = /\Ahttp(s?):\/\/[^\/]+/
+
+ include Attachmentable
include AccountAssociations
include AccountAvatar
include AccountFinderConcern
include AccountHeader
include AccountInteractions
- include Attachmentable
include Paginable
include AccountCounters
include DomainNormalizable
@@ -97,7 +101,6 @@ class Account < ApplicationRecord
scope :remote, -> { where.not(domain: nil) }
scope :local, -> { where(domain: nil) }
- scope :expiring, ->(time) { remote.where.not(subscription_expires_at: nil).where('subscription_expires_at < ?', time) }
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
scope :silenced, -> { where.not(silenced_at: nil) }
scope :suspended, -> { where.not(suspended_at: nil) }
@@ -114,7 +117,7 @@ class Account < ApplicationRecord
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
scope :searchable, -> { without_suspended.where(moved_to_account_id: nil) }
scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).left_outer_joins(:account_stat) }
- scope :tagged_with, ->(tag) { joins(:accounts_tags).where(accounts_tags: { tag_id: tag }) }
+ scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) }
scope :by_recent_status, -> { order(Arel.sql('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc, accounts.id desc')) }
scope :by_recent_sign_in, -> { order(Arel.sql('(case when users.current_sign_in_at is null then 1 else 0 end) asc, users.current_sign_in_at desc, accounts.id desc')) }
scope :popular, -> { order('account_stats.followers_count desc') }
@@ -194,10 +197,6 @@ class Account < ApplicationRecord
"acct:#{local_username_and_domain}"
end
- def subscribed?
- subscription_expires_at.present?
- end
-
def searchable?
!(suspended? || moved?)
end
@@ -238,10 +237,11 @@ class Account < ApplicationRecord
suspended? && deletion_request.present?
end
- def suspend!(date: Time.now.utc, origin: :local)
+ def suspend!(date: Time.now.utc, origin: :local, block_email: true)
transaction do
create_deletion_request!
update!(suspended_at: date, suspension_origin: origin)
+ create_canonical_email_block! if block_email
end
end
@@ -249,6 +249,7 @@ class Account < ApplicationRecord
transaction do
deletion_request&.destroy!
update!(suspended_at: nil, suspension_origin: nil)
+ destroy_canonical_email_block!
end
end
@@ -277,26 +278,20 @@ class Account < ApplicationRecord
end
def tags_as_strings=(tag_names)
- hashtags_map = Tag.find_or_create_by_names(tag_names).each_with_object({}) { |tag, h| h[tag.name] = tag }
+ hashtags_map = Tag.find_or_create_by_names(tag_names).index_by(&:name)
# Remove hashtags that are to be deleted
tags.each do |tag|
if hashtags_map.key?(tag.name)
hashtags_map.delete(tag.name)
else
- transaction do
- tags.delete(tag)
- tag.decrement_count!(:accounts_count)
- end
+ tags.delete(tag)
end
end
# Add hashtags that were so far missing
hashtags_map.each_value do |tag|
- transaction do
- tags << tag
- tag.increment_count!(:accounts_count)
- end
+ tags << tag
end
end
@@ -305,7 +300,11 @@ class Account < ApplicationRecord
end
def fields
- (self[:fields] || []).map { |f| Field.new(self, f) }
+ (self[:fields] || []).map do |f|
+ Field.new(self, f)
+ rescue
+ nil
+ end.compact
end
def fields_attributes=(attributes)
@@ -369,7 +368,7 @@ class Account < ApplicationRecord
end
def excluded_from_timeline_account_ids
- Rails.cache.fetch("exclude_account_ids_for:#{id}") { blocking.pluck(:target_account_id) + blocked_by.pluck(:account_id) + muting.pluck(:target_account_id) }
+ Rails.cache.fetch("exclude_account_ids_for:#{id}") { block_relationships.pluck(:target_account_id) + blocked_by_relationships.pluck(:account_id) + mute_relationships.pluck(:target_account_id) }
end
def excluded_from_timeline_domains
@@ -383,19 +382,21 @@ class Account < ApplicationRecord
def synchronization_uri_prefix
return 'local' if local?
- @synchronization_uri_prefix ||= uri[/http(s?):\/\/[^\/]+\//]
+ @synchronization_uri_prefix ||= "#{uri[URL_PREFIX_RE]}/"
end
class Field < ActiveModelSerializers::Model
- attributes :name, :value, :verified_at, :account, :errors
+ attributes :name, :value, :verified_at, :account
def initialize(account, attributes)
- @account = account
- @attributes = attributes
- @name = attributes['name'].strip[0, string_limit]
- @value = attributes['value'].strip[0, string_limit]
- @verified_at = attributes['verified_at']&.to_datetime
- @errors = {}
+ @original_field = attributes
+ string_limit = account.local? ? 255 : 2047
+ super(
+ account: account,
+ name: attributes['name'].strip[0, string_limit],
+ value: attributes['value'].strip[0, string_limit],
+ verified_at: attributes['verified_at']&.to_datetime,
+ )
end
def verified?
@@ -417,22 +418,12 @@ class Account < ApplicationRecord
end
def mark_verified!
- @verified_at = Time.now.utc
- @attributes['verified_at'] = @verified_at
+ self.verified_at = Time.now.utc
+ @original_field['verified_at'] = verified_at
end
def to_h
- { name: @name, value: @value, verified_at: @verified_at }
- end
-
- private
-
- def string_limit
- if account.local?
- 255
- else
- 2047
- end
+ { name: name, value: value, verified_at: verified_at }
end
end
@@ -518,7 +509,7 @@ class Account < ApplicationRecord
def from_text(text)
return [] if text.blank?
- text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.map do |(username, domain)|
+ text.scan(MENTION_RE).map { |match| match.first.split('@', 2) }.uniq.filter_map do |(username, domain)|
domain = begin
if TagManager.instance.local_domain?(domain)
nil
@@ -527,7 +518,7 @@ class Account < ApplicationRecord
end
end
EntityCache.instance.mention(username, domain)
- end.compact
+ end
end
private
@@ -582,4 +573,20 @@ class Account < ApplicationRecord
def clean_feed_manager
FeedManager.instance.clean_feeds!(:home, [id])
end
+
+ def create_canonical_email_block!
+ return unless local? && user_email.present?
+
+ begin
+ CanonicalEmailBlock.create(reference_account: self, email: user_email)
+ rescue ActiveRecord::RecordNotUnique
+ # A canonical e-mail block may already exist for the same e-mail
+ end
+ end
+
+ def destroy_canonical_email_block!
+ return unless local?
+
+ CanonicalEmailBlock.where(reference_account: self).delete_all
+ end
end
diff --git a/app/models/account_migration.rb b/app/models/account_migration.rb
index 4fae98ed7..ded32c9c6 100644
--- a/app/models/account_migration.rb
+++ b/app/models/account_migration.rb
@@ -14,6 +14,8 @@
#
class AccountMigration < ApplicationRecord
+ include Redisable
+
COOLDOWN_PERIOD = 30.days.freeze
belongs_to :account
@@ -39,7 +41,13 @@ class AccountMigration < ApplicationRecord
return false unless errors.empty?
- save
+ RedisLock.acquire(lock_options) do |lock|
+ if lock.acquired?
+ save
+ else
+ raise Mastodon::RaceConditionError
+ end
+ end
end
def cooldown_at
@@ -75,4 +83,8 @@ class AccountMigration < ApplicationRecord
def validate_migration_cooldown
errors.add(:base, I18n.t('migrations.errors.on_cooldown')) if account.migrations.within_cooldown.exists?
end
+
+ def lock_options
+ { redis: redis, key: "account_migration:#{account.id}" }
+ end
end
diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb
index e70b54d79..e702fa4a4 100644
--- a/app/models/account_stat.rb
+++ b/app/models/account_stat.rb
@@ -11,53 +11,13 @@
# created_at :datetime not null
# updated_at :datetime not null
# last_status_at :datetime
-# lock_version :integer default(0), not null
#
class AccountStat < ApplicationRecord
+ self.locking_column = nil
+ self.ignored_columns = %w(lock_version)
+
belongs_to :account, inverse_of: :account_stat
update_index('accounts#account', :account)
-
- def increment_count!(key)
- update(attributes_for_increment(key))
- rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotUnique
- begin
- reload_with_id
- rescue ActiveRecord::RecordNotFound
- return
- end
-
- retry
- end
-
- def decrement_count!(key)
- update(attributes_for_decrement(key))
- rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotUnique
- begin
- reload_with_id
- rescue ActiveRecord::RecordNotFound
- return
- end
-
- retry
- end
-
- private
-
- def attributes_for_increment(key)
- attrs = { key => public_send(key) + 1 }
- attrs[:last_status_at] = Time.now.utc if key == :statuses_count
- attrs
- end
-
- def attributes_for_decrement(key)
- attrs = { key => [public_send(key) - 1, 0].max }
- attrs
- end
-
- def reload_with_id
- self.id = self.class.find_by!(account: account).id if new_record?
- reload
- end
end
diff --git a/app/models/account_statuses_cleanup_policy.rb b/app/models/account_statuses_cleanup_policy.rb
new file mode 100644
index 000000000..705ccff54
--- /dev/null
+++ b/app/models/account_statuses_cleanup_policy.rb
@@ -0,0 +1,171 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: account_statuses_cleanup_policies
+#
+# id :bigint not null, primary key
+# account_id :bigint not null
+# enabled :boolean default(TRUE), not null
+# min_status_age :integer default(1209600), not null
+# keep_direct :boolean default(TRUE), not null
+# keep_pinned :boolean default(TRUE), not null
+# keep_polls :boolean default(FALSE), not null
+# keep_media :boolean default(FALSE), not null
+# keep_self_fav :boolean default(TRUE), not null
+# keep_self_bookmark :boolean default(TRUE), not null
+# min_favs :integer
+# min_reblogs :integer
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+class AccountStatusesCleanupPolicy < ApplicationRecord
+ include Redisable
+
+ ALLOWED_MIN_STATUS_AGE = [
+ 2.weeks.seconds,
+ 1.month.seconds,
+ 2.months.seconds,
+ 3.months.seconds,
+ 6.months.seconds,
+ 1.year.seconds,
+ 2.years.seconds,
+ ].freeze
+
+ EXCEPTION_BOOLS = %w(keep_direct keep_pinned keep_polls keep_media keep_self_fav keep_self_bookmark).freeze
+ EXCEPTION_THRESHOLDS = %w(min_favs min_reblogs).freeze
+
+ # Depending on the cleanup policy, the query to discover the next
+ # statuses to delete my get expensive if the account has a lot of old
+ # statuses otherwise excluded from deletion by the other exceptions.
+ #
+ # Therefore, `EARLY_SEARCH_CUTOFF` is meant to be the maximum number of
+ # old statuses to be considered for deletion prior to checking exceptions.
+ #
+ # This is used in `compute_cutoff_id` to provide a `max_id` to
+ # `statuses_to_delete`.
+ EARLY_SEARCH_CUTOFF = 5_000
+
+ belongs_to :account
+
+ validates :min_status_age, inclusion: { in: ALLOWED_MIN_STATUS_AGE }
+ validates :min_favs, numericality: { greater_than_or_equal_to: 1, allow_nil: true }
+ validates :min_reblogs, numericality: { greater_than_or_equal_to: 1, allow_nil: true }
+ validate :validate_local_account
+
+ before_save :update_last_inspected
+
+ def statuses_to_delete(limit = 50, max_id = nil, min_id = nil)
+ scope = account.statuses
+ scope.merge!(old_enough_scope(max_id))
+ scope = scope.where(Status.arel_table[:id].gteq(min_id)) if min_id.present?
+ scope.merge!(without_popular_scope) unless min_favs.nil? && min_reblogs.nil?
+ scope.merge!(without_direct_scope) if keep_direct?
+ scope.merge!(without_pinned_scope) if keep_pinned?
+ scope.merge!(without_poll_scope) if keep_polls?
+ scope.merge!(without_media_scope) if keep_media?
+ scope.merge!(without_self_fav_scope) if keep_self_fav?
+ scope.merge!(without_self_bookmark_scope) if keep_self_bookmark?
+
+ scope.reorder(id: :asc).limit(limit)
+ end
+
+ # This computes a toot id such that:
+ # - the toot would be old enough to be candidate for deletion
+ # - there are at most EARLY_SEARCH_CUTOFF toots between the last inspected toot and this one
+ #
+ # The idea is to limit expensive SQL queries when an account has lots of toots excluded from
+ # deletion, while not starting anew on each run.
+ def compute_cutoff_id
+ min_id = last_inspected || 0
+ max_id = Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false)
+ subquery = account.statuses.where(Status.arel_table[:id].gteq(min_id)).where(Status.arel_table[:id].lteq(max_id))
+ subquery = subquery.select(:id).reorder(id: :asc).limit(EARLY_SEARCH_CUTOFF)
+
+ # We're textually interpolating a subquery here as ActiveRecord seem to not provide
+ # a way to apply the limit to the subquery
+ Status.connection.execute("SELECT MAX(id) FROM (#{subquery.to_sql}) t").values.first.first
+ end
+
+ # The most important thing about `last_inspected` is that any toot older than it is guaranteed
+ # not to be kept by the policy regardless of its age.
+ def record_last_inspected(last_id)
+ redis.set("account_cleanup:#{account.id}", last_id, ex: 1.week.seconds)
+ end
+
+ def last_inspected
+ redis.get("account_cleanup:#{account.id}")&.to_i
+ end
+
+ def invalidate_last_inspected(status, action)
+ last_value = last_inspected
+ return if last_value.nil? || status.id > last_value || status.account_id != account_id
+
+ case action
+ when :unbookmark
+ return unless keep_self_bookmark?
+ when :unfav
+ return unless keep_self_fav?
+ when :unpin
+ return unless keep_pinned?
+ end
+
+ record_last_inspected(status.id)
+ end
+
+ private
+
+ def update_last_inspected
+ if EXCEPTION_BOOLS.map { |name| attribute_change_to_be_saved(name) }.compact.include?([true, false])
+ # Policy has been widened in such a way that any previously-inspected status
+ # may need to be deleted, so we'll have to start again.
+ redis.del("account_cleanup:#{account.id}")
+ end
+ if EXCEPTION_THRESHOLDS.map { |name| attribute_change_to_be_saved(name) }.compact.any? { |old, new| old.present? && (new.nil? || new > old) }
+ redis.del("account_cleanup:#{account.id}")
+ end
+ end
+
+ def validate_local_account
+ errors.add(:account, :invalid) unless account&.local?
+ end
+
+ def without_direct_scope
+ Status.where.not(visibility: :direct)
+ end
+
+ def old_enough_scope(max_id = nil)
+ # Filtering on `id` rather than `min_status_age` ago will treat
+ # non-snowflake statuses as older than they really are, but Mastodon
+ # has switched to snowflake IDs significantly over 2 years ago anyway.
+ max_id = [max_id, Mastodon::Snowflake.id_at(min_status_age.seconds.ago, with_random: false)].compact.min
+ Status.where(Status.arel_table[:id].lteq(max_id))
+ end
+
+ def without_self_fav_scope
+ Status.where('NOT EXISTS (SELECT * FROM favourites fav WHERE fav.account_id = statuses.account_id AND fav.status_id = statuses.id)')
+ end
+
+ def without_self_bookmark_scope
+ Status.where('NOT EXISTS (SELECT * FROM bookmarks bookmark WHERE bookmark.account_id = statuses.account_id AND bookmark.status_id = statuses.id)')
+ end
+
+ def without_pinned_scope
+ Status.where('NOT EXISTS (SELECT * FROM status_pins pin WHERE pin.account_id = statuses.account_id AND pin.status_id = statuses.id)')
+ end
+
+ def without_media_scope
+ Status.where('NOT EXISTS (SELECT * FROM media_attachments media WHERE media.status_id = statuses.id)')
+ end
+
+ def without_poll_scope
+ Status.where(poll_id: nil)
+ end
+
+ def without_popular_scope
+ scope = Status.left_joins(:status_stat)
+ scope = scope.where('COALESCE(status_stats.reblogs_count, 0) <= ?', min_reblogs) unless min_reblogs.nil?
+ scope = scope.where('COALESCE(status_stats.favourites_count, 0) <= ?', min_favs) unless min_favs.nil?
+ scope
+ end
+end
diff --git a/app/models/account_suggestions.rb b/app/models/account_suggestions.rb
new file mode 100644
index 000000000..d1774e62f
--- /dev/null
+++ b/app/models/account_suggestions.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class AccountSuggestions
+ SOURCES = [
+ AccountSuggestions::SettingSource,
+ AccountSuggestions::PastInteractionsSource,
+ AccountSuggestions::GlobalSource,
+ ].freeze
+
+ def self.get(account, limit)
+ SOURCES.each_with_object([]) do |source_class, suggestions|
+ source_suggestions = source_class.new.get(
+ account,
+ skip_account_ids: suggestions.map(&:account_id),
+ limit: limit - suggestions.size
+ )
+
+ suggestions.concat(source_suggestions)
+ end
+ end
+
+ def self.remove(account, target_account_id)
+ SOURCES.each do |source_class|
+ source = source_class.new
+ source.remove(account, target_account_id)
+ end
+ end
+end
diff --git a/app/models/account_suggestions/global_source.rb b/app/models/account_suggestions/global_source.rb
new file mode 100644
index 000000000..ac764de50
--- /dev/null
+++ b/app/models/account_suggestions/global_source.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::GlobalSource < AccountSuggestions::Source
+ def key
+ :global
+ end
+
+ def get(account, skip_account_ids: [], limit: 40)
+ account_ids = account_ids_for_locale(account.user_locale) - [account.id] - skip_account_ids
+
+ as_ordered_suggestions(
+ scope(account).where(id: account_ids),
+ account_ids
+ ).take(limit)
+ end
+
+ def remove(_account, _target_account_id)
+ nil
+ end
+
+ private
+
+ def scope(account)
+ Account.searchable
+ .followable_by(account)
+ .not_excluded_by_account(account)
+ .not_domain_blocked_by_account(account)
+ end
+
+ def account_ids_for_locale(locale)
+ Redis.current.zrevrange("follow_recommendations:#{locale}", 0, -1).map(&:to_i)
+ end
+
+ def to_ordered_list_key(account)
+ account.id
+ end
+end
diff --git a/app/models/account_suggestions/past_interactions_source.rb b/app/models/account_suggestions/past_interactions_source.rb
new file mode 100644
index 000000000..d169394f1
--- /dev/null
+++ b/app/models/account_suggestions/past_interactions_source.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::PastInteractionsSource < AccountSuggestions::Source
+ include Redisable
+
+ def key
+ :past_interactions
+ end
+
+ def get(account, skip_account_ids: [], limit: 40)
+ account_ids = account_ids_for_account(account.id, limit + skip_account_ids.size) - skip_account_ids
+
+ as_ordered_suggestions(
+ scope.where(id: account_ids),
+ account_ids
+ ).take(limit)
+ end
+
+ def remove(account, target_account_id)
+ redis.zrem("interactions:#{account.id}", target_account_id)
+ end
+
+ private
+
+ def scope
+ Account.searchable
+ end
+
+ def account_ids_for_account(account_id, limit)
+ redis.zrevrange("interactions:#{account_id}", 0, limit).map(&:to_i)
+ end
+
+ def to_ordered_list_key(account)
+ account.id
+ end
+end
diff --git a/app/models/account_suggestions/setting_source.rb b/app/models/account_suggestions/setting_source.rb
new file mode 100644
index 000000000..be9eff233
--- /dev/null
+++ b/app/models/account_suggestions/setting_source.rb
@@ -0,0 +1,68 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::SettingSource < AccountSuggestions::Source
+ def key
+ :staff
+ end
+
+ def get(account, skip_account_ids: [], limit: 40)
+ return [] unless setting_enabled?
+
+ as_ordered_suggestions(
+ scope(account).where(setting_to_where_condition).where.not(id: skip_account_ids),
+ usernames_and_domains
+ ).take(limit)
+ end
+
+ def remove(_account, _target_account_id)
+ nil
+ end
+
+ private
+
+ def scope(account)
+ Account.searchable
+ .followable_by(account)
+ .not_excluded_by_account(account)
+ .not_domain_blocked_by_account(account)
+ .where(locked: false)
+ .where.not(id: account.id)
+ end
+
+ def usernames_and_domains
+ @usernames_and_domains ||= setting_to_usernames_and_domains
+ end
+
+ def setting_enabled?
+ setting.present?
+ end
+
+ def setting_to_where_condition
+ usernames_and_domains.map do |(username, domain)|
+ Arel::Nodes::Grouping.new(
+ Account.arel_table[:username].lower.eq(username.downcase).and(
+ Account.arel_table[:domain].lower.eq(domain&.downcase)
+ )
+ )
+ end.reduce(:or)
+ end
+
+ def setting_to_usernames_and_domains
+ setting.split(',').map do |str|
+ username, domain = str.strip.gsub(/\A@/, '').split('@', 2)
+ domain = nil if TagManager.instance.local_domain?(domain)
+
+ next if username.blank?
+
+ [username, domain]
+ end.compact
+ end
+
+ def setting
+ Setting.bootstrap_timeline_accounts
+ end
+
+ def to_ordered_list_key(account)
+ [account.username, account.domain]
+ end
+end
diff --git a/app/models/account_suggestions/source.rb b/app/models/account_suggestions/source.rb
new file mode 100644
index 000000000..bd1068d20
--- /dev/null
+++ b/app/models/account_suggestions/source.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::Source
+ def key
+ raise NotImplementedError
+ end
+
+ def get(_account, **kwargs)
+ raise NotImplementedError
+ end
+
+ def remove(_account, target_account_id)
+ raise NotImplementedError
+ end
+
+ protected
+
+ def as_ordered_suggestions(scope, ordered_list)
+ return [] if ordered_list.empty?
+
+ map = scope.index_by(&method(:to_ordered_list_key))
+
+ ordered_list.map { |ordered_list_key| map[ordered_list_key] }.compact.map do |account|
+ AccountSuggestions::Suggestion.new(
+ account: account,
+ source: key
+ )
+ end
+ end
+
+ def to_ordered_list_key(_account)
+ raise NotImplementedError
+ end
+end
diff --git a/app/models/account_suggestions/suggestion.rb b/app/models/account_suggestions/suggestion.rb
new file mode 100644
index 000000000..2c6f4d27f
--- /dev/null
+++ b/app/models/account_suggestions/suggestion.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AccountSuggestions::Suggestion < ActiveModelSerializers::Model
+ attributes :account, :source
+
+ delegate :id, to: :account, prefix: true
+end
diff --git a/app/models/account_summary.rb b/app/models/account_summary.rb
new file mode 100644
index 000000000..3a3cebc55
--- /dev/null
+++ b/app/models/account_summary.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: account_summaries
+#
+# account_id :bigint(8) primary key
+# language :string
+# sensitive :boolean
+#
+
+class AccountSummary < ApplicationRecord
+ self.primary_key = :account_id
+
+ scope :safe, -> { where(sensitive: false) }
+ scope :localized, ->(locale) { where(language: locale) }
+ scope :filtered, -> { joins(arel_table.join(FollowRecommendationSuppression.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:account_id].eq(FollowRecommendationSuppression.arel_table[:account_id])).join_sources).where(FollowRecommendationSuppression.arel_table[:id].eq(nil)) }
+
+ def self.refresh
+ Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false)
+ end
+
+ def readonly?
+ true
+ end
+end
diff --git a/app/models/account_tag_stat.rb b/app/models/account_tag_stat.rb
deleted file mode 100644
index 3c36c155a..000000000
--- a/app/models/account_tag_stat.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-# frozen_string_literal: true
-# == Schema Information
-#
-# Table name: account_tag_stats
-#
-# id :bigint(8) not null, primary key
-# tag_id :bigint(8) not null
-# accounts_count :bigint(8) default(0), not null
-# hidden :boolean default(FALSE), not null
-# created_at :datetime not null
-# updated_at :datetime not null
-#
-
-class AccountTagStat < ApplicationRecord
- belongs_to :tag, inverse_of: :account_tag_stat
-
- def increment_count!(key)
- update(key => public_send(key) + 1)
- end
-
- def decrement_count!(key)
- update(key => [public_send(key) - 1, 0].max)
- end
-end
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
index 3a1b67e06..a1c156a8b 100644
--- a/app/models/admin/action_log_filter.rb
+++ b/app/models/admin/action_log_filter.rb
@@ -17,12 +17,14 @@ class Admin::ActionLogFilter
create_domain_allow: { target_type: 'DomainAllow', action: 'create' }.freeze,
create_domain_block: { target_type: 'DomainBlock', action: 'create' }.freeze,
create_email_domain_block: { target_type: 'EmailDomainBlock', action: 'create' }.freeze,
+ create_unavailable_domain: { target_type: 'UnavailableDomain', action: 'create' }.freeze,
demote_user: { target_type: 'User', action: 'demote' }.freeze,
destroy_announcement: { target_type: 'Announcement', action: 'destroy' }.freeze,
destroy_custom_emoji: { target_type: 'CustomEmoji', action: 'destroy' }.freeze,
destroy_domain_allow: { target_type: 'DomainAllow', action: 'destroy' }.freeze,
destroy_domain_block: { target_type: 'DomainBlock', action: 'destroy' }.freeze,
destroy_email_domain_block: { target_type: 'EmailDomainBlock', action: 'destroy' }.freeze,
+ destroy_unavailable_domain: { target_type: 'UnavailableDomain', action: 'destroy' }.freeze,
destroy_status: { target_type: 'Status', action: 'destroy' }.freeze,
disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze,
disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb
index 916261a17..f21ea714c 100644
--- a/app/models/bookmark.rb
+++ b/app/models/bookmark.rb
@@ -23,4 +23,12 @@ class Bookmark < ApplicationRecord
before_validation do
self.status = status.reblog if status&.reblog?
end
+
+ after_destroy :invalidate_cleanup_info
+
+ def invalidate_cleanup_info
+ return unless status&.account_id == account_id && account.local?
+
+ account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unbookmark)
+ end
end
diff --git a/app/models/canonical_email_block.rb b/app/models/canonical_email_block.rb
new file mode 100644
index 000000000..a8546d65a
--- /dev/null
+++ b/app/models/canonical_email_block.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: canonical_email_blocks
+#
+# id :bigint(8) not null, primary key
+# canonical_email_hash :string default(""), not null
+# reference_account_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class CanonicalEmailBlock < ApplicationRecord
+ include EmailHelper
+
+ belongs_to :reference_account, class_name: 'Account'
+
+ validates :canonical_email_hash, presence: true
+
+ def email=(email)
+ self.canonical_email_hash = email_to_canonical_email_hash(email)
+ end
+
+ def self.block?(email)
+ where(canonical_email_hash: email_to_canonical_email_hash(email)).exists?
+ end
+end
diff --git a/app/models/concerns/account_associations.rb b/app/models/concerns/account_associations.rb
index 98849f8fc..f2a4eae77 100644
--- a/app/models/concerns/account_associations.rb
+++ b/app/models/concerns/account_associations.rb
@@ -63,5 +63,11 @@ module AccountAssociations
# Account deletion requests
has_one :deletion_request, class_name: 'AccountDeletionRequest', inverse_of: :account, dependent: :destroy
+
+ # Follow recommendations
+ has_one :follow_recommendation_suppression, inverse_of: :account, dependent: :destroy
+
+ # Account statuses cleanup policy
+ has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy', inverse_of: :account, dependent: :destroy
end
end
diff --git a/app/models/concerns/account_avatar.rb b/app/models/concerns/account_avatar.rb
index 2d5ebfca3..1af53ed23 100644
--- a/app/models/concerns/account_avatar.rb
+++ b/app/models/concerns/account_avatar.rb
@@ -21,7 +21,7 @@ module AccountAvatar
has_attached_file :avatar, styles: ->(f) { avatar_styles(f) }, convert_options: { all: '-strip' }, processors: [:lazy_thumbnail]
validates_attachment_content_type :avatar, content_type: IMAGE_MIME_TYPES
validates_attachment_size :avatar, less_than: LIMIT
- remotable_attachment :avatar, LIMIT
+ remotable_attachment :avatar, LIMIT, suppress_errors: false
end
def avatar_original_url
diff --git a/app/models/concerns/account_counters.rb b/app/models/concerns/account_counters.rb
index 6e25e1905..3fabb5205 100644
--- a/app/models/concerns/account_counters.rb
+++ b/app/models/concerns/account_counters.rb
@@ -3,6 +3,8 @@
module AccountCounters
extend ActiveSupport::Concern
+ ALLOWED_COUNTER_KEYS = %i(statuses_count following_count followers_count).freeze
+
included do
has_one :account_stat, inverse_of: :account
after_save :save_account_stat
@@ -14,11 +16,63 @@ module AccountCounters
:following_count=,
:followers_count,
:followers_count=,
- :increment_count!,
- :decrement_count!,
:last_status_at,
to: :account_stat
+ # @param [Symbol] key
+ def increment_count!(key)
+ update_count!(key, 1)
+ end
+
+ # @param [Symbol] key
+ def decrement_count!(key)
+ update_count!(key, -1)
+ end
+
+ # @param [Symbol] key
+ # @param [Integer] value
+ def update_count!(key, value)
+ raise ArgumentError, "Invalid key #{key}" unless ALLOWED_COUNTER_KEYS.include?(key)
+ raise ArgumentError, 'Do not call update_count! on dirty objects' if association(:account_stat).loaded? && account_stat&.changed? && account_stat.changed_attribute_names_to_save == %w(id)
+
+ value = value.to_i
+ default_value = value.positive? ? value : 0
+
+ # We do an upsert using manually written SQL, as Rails' upsert method does
+ # not seem to support writing expressions in the UPDATE clause, but only
+ # re-insert the provided values instead.
+ # Even ARel seem to be missing proper handling of upserts.
+ sql = if value.positive? && key == :statuses_count
+ <<-SQL.squish
+ INSERT INTO account_stats(account_id, #{key}, created_at, updated_at, last_status_at)
+ VALUES (:account_id, :default_value, now(), now(), now())
+ ON CONFLICT (account_id) DO UPDATE
+ SET #{key} = account_stats.#{key} + :value,
+ last_status_at = now(),
+ updated_at = now()
+ RETURNING id;
+ SQL
+ else
+ <<-SQL.squish
+ INSERT INTO account_stats(account_id, #{key}, created_at, updated_at)
+ VALUES (:account_id, :default_value, now(), now())
+ ON CONFLICT (account_id) DO UPDATE
+ SET #{key} = account_stats.#{key} + :value,
+ updated_at = now()
+ RETURNING id;
+ SQL
+ end
+
+ sql = AccountStat.sanitize_sql([sql, account_id: id, default_value: default_value, value: value])
+ account_stat_id = AccountStat.connection.exec_query(sql)[0]['id']
+
+ # Reload account_stat if it was loaded, taking into account newly-created unsaved records
+ if association(:account_stat).loaded?
+ account_stat.id = account_stat_id if account_stat.new_record?
+ account_stat.reload
+ end
+ end
+
def account_stat
super || build_account_stat
end
diff --git a/app/models/concerns/account_finder_concern.rb b/app/models/concerns/account_finder_concern.rb
index 04b2c981b..0dadddad1 100644
--- a/app/models/concerns/account_finder_concern.rb
+++ b/app/models/concerns/account_finder_concern.rb
@@ -14,6 +14,8 @@ module AccountFinderConcern
def representative
Account.find(-99)
+ rescue ActiveRecord::RecordNotFound
+ Account.create!(id: -99, actor_type: 'Application', locked: true, username: Rails.configuration.x.local_domain)
end
def find_local(username)
diff --git a/app/models/concerns/account_header.rb b/app/models/concerns/account_header.rb
index 067e166eb..72a3d0566 100644
--- a/app/models/concerns/account_header.rb
+++ b/app/models/concerns/account_header.rb
@@ -22,7 +22,7 @@ module AccountHeader
has_attached_file :header, styles: ->(f) { header_styles(f) }, convert_options: { all: '-strip' }, processors: [:lazy_thumbnail]
validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
validates_attachment_size :header, less_than: LIMIT
- remotable_attachment :header, LIMIT
+ remotable_attachment :header, LIMIT, suppress_errors: false
end
def header_original_url
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index 974f57820..8f19176a7 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -67,7 +67,7 @@ module AccountInteractions
private
def follow_mapping(query, field)
- query.pluck(field).each_with_object({}) { |id, mapping| mapping[id] = true }
+ query.pluck(field).index_with(true)
end
end
@@ -81,6 +81,9 @@ module AccountInteractions
has_many :following, -> { order('follows.id desc') }, through: :active_relationships, source: :target_account
has_many :followers, -> { order('follows.id desc') }, through: :passive_relationships, source: :account
+ # Account notes
+ has_many :account_notes, dependent: :destroy
+
# Block relationships
has_many :block_relationships, class_name: 'Block', foreign_key: 'account_id', dependent: :destroy
has_many :blocking, -> { order('blocks.id desc') }, through: :block_relationships, source: :target_account
@@ -184,6 +187,14 @@ module AccountInteractions
active_relationships.where(target_account: other_account).exists?
end
+ def following_anyone?
+ active_relationships.exists?
+ end
+
+ def not_following_anyone?
+ !following_anyone?
+ end
+
def blocking?(other_account)
block_relationships.where(target_account: other_account).exists?
end
@@ -243,10 +254,13 @@ module AccountInteractions
.where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago)
end
- def remote_followers_hash(url_prefix)
- Rails.cache.fetch("followers_hash:#{id}:#{url_prefix}") do
+ def remote_followers_hash(url)
+ url_prefix = url[Account::URL_PREFIX_RE]
+ return if url_prefix.blank?
+
+ Rails.cache.fetch("followers_hash:#{id}:#{url_prefix}/") do
digest = "\x00" * 32
- followers.where(Account.arel_table[:uri].matches(url_prefix + '%', false, true)).pluck_each(:uri) do |uri|
+ followers.where(Account.arel_table[:uri].matches("#{Account.sanitize_sql_like(url_prefix)}/%", false, true)).or(followers.where(uri: url_prefix)).pluck_each(:uri) do |uri|
Xorcist.xor!(digest, Digest::SHA256.digest(uri))
end
digest.unpack('H*')[0]
diff --git a/app/models/concerns/account_merging.rb b/app/models/concerns/account_merging.rb
index c3b7018f2..8d37c6e56 100644
--- a/app/models/concerns/account_merging.rb
+++ b/app/models/concerns/account_merging.rb
@@ -15,7 +15,7 @@ module AccountMerging
Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite,
Follow, FollowRequest, Block, Mute, AccountIdentityProof,
AccountModerationNote, AccountPin, AccountStat, ListAccount,
- PollVote, Mention, AccountDeletionRequest, AccountNote
+ PollVote, Mention, AccountDeletionRequest, AccountNote, FollowRecommendationSuppression
]
owned_classes.each do |klass|
@@ -43,6 +43,10 @@ module AccountMerging
end
end
+ CanonicalEmailBlock.where(reference_account_id: other_account.id).find_each do |record|
+ record.update_attribute(:reference_account_id, id)
+ end
+
# Some follow relationships have moved, so the cache is stale
Rails.cache.delete_matched("followers_hash:#{id}:*")
Rails.cache.delete_matched("relationships:#{id}:*")
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index c5febb828..01fae4236 100644
--- a/app/models/concerns/attachmentable.rb
+++ b/app/models/concerns/attachmentable.rb
@@ -15,50 +15,47 @@ module Attachmentable
# those files, it is necessary to use the output of the
# `file` utility instead
INCORRECT_CONTENT_TYPES = %w(
+ audio/vorbis
video/ogg
video/webm
).freeze
included do
- before_post_process :obfuscate_file_name
- before_post_process :set_file_extensions
- before_post_process :check_image_dimensions
- before_post_process :set_file_content_type
+ def self.has_attached_file(name, options = {}) # rubocop:disable Naming/PredicateName
+ options = { validate_media_type: false }.merge(options)
+ super(name, options)
+ send(:"before_#{name}_post_process") do
+ attachment = send(name)
+ check_image_dimension(attachment)
+ set_file_content_type(attachment)
+ obfuscate_file_name(attachment)
+ set_file_extension(attachment)
+ Paperclip::Validators::MediaTypeSpoofDetectionValidator.new(attributes: [name]).validate(self)
+ end
+ end
end
private
- def set_file_content_type
- self.class.attachment_definitions.each_key do |attachment_name|
- attachment = send(attachment_name)
+ def set_file_content_type(attachment) # rubocop:disable Naming/AccessorMethodName
+ return if attachment.blank? || attachment.queued_for_write[:original].blank? || !INCORRECT_CONTENT_TYPES.include?(attachment.instance_read(:content_type))
- next if attachment.blank? || attachment.queued_for_write[:original].blank? || !INCORRECT_CONTENT_TYPES.include?(attachment.instance_read(:content_type))
-
- attachment.instance_write :content_type, calculated_content_type(attachment)
- end
+ attachment.instance_write :content_type, calculated_content_type(attachment)
end
- def set_file_extensions
- self.class.attachment_definitions.each_key do |attachment_name|
- attachment = send(attachment_name)
+ def set_file_extension(attachment) # rubocop:disable Naming/AccessorMethodName
+ return if attachment.blank?
- next if attachment.blank?
-
- attachment.instance_write :file_name, [Paperclip::Interpolations.basename(attachment, :original), appropriate_extension(attachment)].delete_if(&:blank?).join('.')
- end
+ attachment.instance_write :file_name, [Paperclip::Interpolations.basename(attachment, :original), appropriate_extension(attachment)].delete_if(&:blank?).join('.')
end
- def check_image_dimensions
- self.class.attachment_definitions.each_key do |attachment_name|
- attachment = send(attachment_name)
+ def check_image_dimension(attachment)
+ return if attachment.blank? || !/image.*/.match?(attachment.content_type) || attachment.queued_for_write[:original].blank?
- next if attachment.blank? || !/image.*/.match?(attachment.content_type) || attachment.queued_for_write[:original].blank?
+ width, height = FastImage.size(attachment.queued_for_write[:original].path)
+ matrix_limit = attachment.content_type == 'image/gif' ? GIF_MATRIX_LIMIT : MAX_MATRIX_LIMIT
- width, height = FastImage.size(attachment.queued_for_write[:original].path)
- matrix_limit = attachment.content_type == 'image/gif' ? GIF_MATRIX_LIMIT : MAX_MATRIX_LIMIT
-
- raise Mastodon::DimensionsValidationError, "#{width}x#{height} images are not supported" if width.present? && height.present? && (width * height > matrix_limit)
- end
+ raise Mastodon::DimensionsValidationError, "#{width}x#{height} images are not supported" if width.present? && height.present? && (width * height > matrix_limit)
end
def appropriate_extension(attachment)
@@ -79,13 +76,9 @@ module Attachmentable
''
end
- def obfuscate_file_name
- self.class.attachment_definitions.each_key do |attachment_name|
- attachment = send(attachment_name)
+ def obfuscate_file_name(attachment)
+ return if attachment.blank? || attachment.queued_for_write[:original].blank? || attachment.options[:preserve_files]
- next if attachment.blank? || attachment.queued_for_write[:original].blank? || attachment.options[:preserve_files]
-
- attachment.instance_write :file_name, SecureRandom.hex(8) + File.extname(attachment.instance_read(:file_name))
- end
+ attachment.instance_write :file_name, SecureRandom.hex(8) + File.extname(attachment.instance_read(:file_name))
end
end
diff --git a/app/models/concerns/expireable.rb b/app/models/concerns/expireable.rb
index a66a4661b..4d902abcb 100644
--- a/app/models/concerns/expireable.rb
+++ b/app/models/concerns/expireable.rb
@@ -17,7 +17,7 @@ module Expireable
end
def expires_in=(interval)
- self.expires_at = interval.to_i.seconds.from_now if interval.present?
+ self.expires_at = interval.present? ? interval.to_i.seconds.from_now : nil
@expires_in = interval
end
diff --git a/app/models/concerns/ldap_authenticable.rb b/app/models/concerns/ldap_authenticable.rb
index e3f94bb6c..dc5abcd5a 100644
--- a/app/models/concerns/ldap_authenticable.rb
+++ b/app/models/concerns/ldap_authenticable.rb
@@ -15,10 +15,10 @@ module LdapAuthenticable
def ldap_get_user(attributes = {})
safe_username = attributes[Devise.ldap_uid.to_sym].first
+
if Devise.ldap_uid_conversion_enabled
keys = Regexp.union(Devise.ldap_uid_conversion_search.chars)
replacement = Devise.ldap_uid_conversion_replace
-
safe_username = safe_username.gsub(keys, replacement)
end
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 4ea219537..791a94911 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -57,7 +57,7 @@ module Omniauthable
user = User.new(user_params_from_auth(email, auth))
- user.account.avatar_remote_url = auth.info.image if auth.info.image =~ /\A#{URI::DEFAULT_PARSER.make_regexp(%w(http https))}\z/
+ user.account.avatar_remote_url = auth.info.image if /\A#{URI::DEFAULT_PARSER.make_regexp(%w(http https))}\z/.match?(auth.info.image)
user.skip_confirmation!
user.save!
user
@@ -68,7 +68,6 @@ module Omniauthable
def user_params_from_auth(email, auth)
{
email: email || "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
- password: Devise.friendly_token[0, 20],
agreement: true,
external: true,
account_attributes: {
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index 56b9c0164..ffe8a7565 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -28,9 +28,11 @@ module Remotable
end
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
+ public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
raise e unless suppress_errors
rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => e
Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
+ public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
end
nil
diff --git a/app/models/concerns/status_threading_concern.rb b/app/models/concerns/status_threading_concern.rb
index a0ead1995..5c04108e4 100644
--- a/app/models/concerns/status_threading_concern.rb
+++ b/app/models/concerns/status_threading_concern.rb
@@ -83,7 +83,7 @@ module StatusThreadingConcern
def find_statuses_from_tree_path(ids, account, promote: false)
statuses = Status.with_accounts(ids).to_a
account_ids = statuses.map(&:account_id).uniq
- domains = statuses.map(&:account_domain).compact.uniq
+ domains = statuses.filter_map(&:account_domain).uniq
relations = relations_map_for_account(account, account_ids, domains)
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index 9b323cb17..8d09d9bfb 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -21,7 +21,10 @@
#
class CustomEmoji < ApplicationRecord
- LIMIT = 50.kilobytes
+ include Attachmentable
+
+ LOCAL_LIMIT = (ENV['MAX_EMOJI_SIZE'] || 50.kilobytes).to_i
+ LIMIT = [LOCAL_LIMIT, (ENV['MAX_REMOTE_EMOJI_SIZE'] || 200.kilobytes).to_i].max
SHORTCODE_RE_FRAGMENT = '[a-zA-Z0-9_]{2,}'
@@ -34,11 +37,13 @@ class CustomEmoji < ApplicationRecord
belongs_to :category, class_name: 'CustomEmojiCategory', optional: true
has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode
- has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce -strip' } }
+ has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce -strip' } }, validate_media_type: false
before_validation :downcase_domain
- validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true, size: { less_than: LIMIT }
+ validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true
+ validates_attachment_size :image, less_than: LIMIT, unless: :local?
+ validates_attachment_size :image, less_than: LOCAL_LIMIT, if: :local?
validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
scope :local, -> { where(domain: nil) }
@@ -48,8 +53,6 @@ class CustomEmoji < ApplicationRecord
remotable_attachment :image, LIMIT
- include Attachmentable
-
after_commit :remove_entity_cache
def local?
diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb
index 8df8a4fbf..9d0f3729b 100644
--- a/app/models/custom_filter.rb
+++ b/app/models/custom_filter.rb
@@ -46,7 +46,7 @@ class CustomFilter < ApplicationRecord
private
def clean_up_contexts
- self.context = Array(context).map(&:strip).map(&:presence).compact
+ self.context = Array(context).map(&:strip).filter_map(&:presence)
end
def remove_cache
diff --git a/app/models/direct_feed.rb b/app/models/direct_feed.rb
index c0b8a0a35..1f2448070 100644
--- a/app/models/direct_feed.rb
+++ b/app/models/direct_feed.rb
@@ -24,7 +24,7 @@ class DirectFeed < Feed
statuses = Status.as_direct_timeline(@account, limit, max_id, since_id, min_id)
return statuses if statuses.empty?
max_id = statuses.last.id
- statuses = statuses.reject { |status| FeedManager.instance.filter?(:direct, status, @account.id) }
+ statuses = statuses.reject { |status| FeedManager.instance.filter?(:direct, status, @account) }
return statuses unless statuses.empty?
end
end
diff --git a/app/models/favourite.rb b/app/models/favourite.rb
index 35028b7dd..ca8bce146 100644
--- a/app/models/favourite.rb
+++ b/app/models/favourite.rb
@@ -28,6 +28,7 @@ class Favourite < ApplicationRecord
after_create :increment_cache_counters
after_destroy :decrement_cache_counters
+ after_destroy :invalidate_cleanup_info
private
@@ -39,4 +40,10 @@ class Favourite < ApplicationRecord
return if association(:status).loaded? && status.marked_for_destruction?
status&.decrement_count!(:favourites_count)
end
+
+ def invalidate_cleanup_info
+ return unless status&.account_id == account_id && account.local?
+
+ account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unfav)
+ end
end
diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb
new file mode 100644
index 000000000..e552b5a88
--- /dev/null
+++ b/app/models/follow_recommendation.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: follow_recommendations
+#
+# account_id :bigint(8) primary key
+# rank :decimal(, )
+# reason :text is an Array
+#
+
+class FollowRecommendation < ApplicationRecord
+ self.primary_key = :account_id
+
+ belongs_to :account_summary, foreign_key: :account_id
+ belongs_to :account, foreign_key: :account_id
+
+ scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
+
+ def self.refresh
+ Scenic.database.refresh_materialized_view(table_name, concurrently: false, cascade: false)
+ end
+
+ def readonly?
+ true
+ end
+end
diff --git a/app/models/follow_recommendation_filter.rb b/app/models/follow_recommendation_filter.rb
new file mode 100644
index 000000000..acf03cd84
--- /dev/null
+++ b/app/models/follow_recommendation_filter.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class FollowRecommendationFilter
+ KEYS = %i(
+ language
+ status
+ ).freeze
+
+ attr_reader :params, :language
+
+ def initialize(params)
+ @language = params.delete('language') || I18n.locale
+ @params = params
+ end
+
+ def results
+ if params['status'] == 'suppressed'
+ Account.joins(:follow_recommendation_suppression).order(FollowRecommendationSuppression.arel_table[:id].desc).to_a
+ else
+ account_ids = Redis.current.zrevrange("follow_recommendations:#{@language}", 0, -1).map(&:to_i)
+ accounts = Account.where(id: account_ids).index_by(&:id)
+
+ account_ids.map { |id| accounts[id] }.compact
+ end
+ end
+end
diff --git a/app/models/follow_recommendation_suppression.rb b/app/models/follow_recommendation_suppression.rb
new file mode 100644
index 000000000..170506b85
--- /dev/null
+++ b/app/models/follow_recommendation_suppression.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: follow_recommendation_suppressions
+#
+# id :bigint(8) not null, primary key
+# account_id :bigint(8) not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class FollowRecommendationSuppression < ApplicationRecord
+ include Redisable
+
+ belongs_to :account
+
+ after_commit :remove_follow_recommendations, on: :create
+
+ private
+
+ def remove_follow_recommendations
+ redis.pipelined do
+ I18n.available_locales.each do |locale|
+ redis.zrem("follow_recommendations:#{locale}", account_id)
+ end
+ end
+ end
+end
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 59fefcdf6..0b6f7629a 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -29,7 +29,7 @@ class FollowRequest < ApplicationRecord
validates :account_id, uniqueness: { scope: :target_account_id }
def authorize!
- account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri)
+ account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri, bypass_limit: true)
MergeWorker.perform_async(target_account.id, account.id) if account.local?
destroy!
end
diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb
index 26d6d3abf..698933c9f 100644
--- a/app/models/form/account_batch.rb
+++ b/app/models/form/account_batch.rb
@@ -21,6 +21,10 @@ class Form::AccountBatch
approve!
when 'reject'
reject!
+ when 'suppress_follow_recommendation'
+ suppress_follow_recommendation!
+ when 'unsuppress_follow_recommendation'
+ unsuppress_follow_recommendation!
end
end
@@ -79,4 +83,18 @@ class Form::AccountBatch
records.each { |account| authorize(account.user, :reject?) }
.each { |account| DeleteAccountService.new.call(account, reserve_email: false, reserve_username: false) }
end
+
+ def suppress_follow_recommendation!
+ authorize(:follow_recommendation, :suppress?)
+
+ accounts.each do |account|
+ FollowRecommendationSuppression.create(account: account)
+ end
+ end
+
+ def unsuppress_follow_recommendation!
+ authorize(:follow_recommendation, :unsuppress?)
+
+ FollowRecommendationSuppression.where(account_id: account_ids).destroy_all
+ end
end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 999d835e6..0276ec058 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -16,7 +16,6 @@ class Form::AdminSettings
open_deletion
timeline_preview
show_staff_badge
- enable_bootstrap_timeline_accounts
bootstrap_timeline_accounts
flavour
skin
@@ -35,7 +34,6 @@ class Form::AdminSettings
mascot
show_reblogs_in_public_timelines
show_replies_in_public_timelines
- spam_check_enabled
trends
trendable_by_default
show_domain_blocks
@@ -49,7 +47,6 @@ class Form::AdminSettings
open_deletion
timeline_preview
show_staff_badge
- enable_bootstrap_timeline_accounts
activity_api_enabled
peers_api_enabled
show_known_fediverse_at_about_page
@@ -59,7 +56,6 @@ class Form::AdminSettings
enable_keybase
show_reblogs_in_public_timelines
show_replies_in_public_timelines
- spam_check_enabled
trends
trendable_by_default
noindex
diff --git a/app/models/home_feed.rb b/app/models/home_feed.rb
index 0fe9dae46..d6ebb5fa6 100644
--- a/app/models/home_feed.rb
+++ b/app/models/home_feed.rb
@@ -2,12 +2,11 @@
class HomeFeed < Feed
def initialize(account)
- @type = :home
- @id = account.id
@account = account
+ super(:home, account.id)
end
def regenerating?
- redis.exists?("account:#{@id}:regeneration")
+ redis.exists?("account:#{@account.id}:regeneration")
end
end
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 29be03662..8949be054 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -10,10 +10,13 @@
class Instance < ApplicationRecord
self.primary_key = :domain
+ attr_accessor :failure_days
+
has_many :accounts, foreign_key: :domain, primary_key: :domain
belongs_to :domain_block, foreign_key: :domain, primary_key: :domain
belongs_to :domain_allow, foreign_key: :domain, primary_key: :domain
+ belongs_to :unavailable_domain, foreign_key: :domain, primary_key: :domain # skipcq: RB-RL1031
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb
index 0598d8fea..9e533c4aa 100644
--- a/app/models/instance_filter.rb
+++ b/app/models/instance_filter.rb
@@ -4,6 +4,8 @@ class InstanceFilter
KEYS = %i(
limited
by_domain
+ warning
+ unavailable
).freeze
attr_reader :params
@@ -13,7 +15,7 @@ class InstanceFilter
end
def results
- scope = Instance.includes(:domain_block, :domain_allow).order(accounts_count: :desc)
+ scope = Instance.includes(:domain_block, :domain_allow, :unavailable_domain).order(accounts_count: :desc)
params.each do |key, value|
scope.merge!(scope_for(key, value.to_s.strip)) if value.present?
@@ -32,6 +34,10 @@ class InstanceFilter
Instance.joins(:domain_allow).reorder(Arel.sql('domain_allows.id desc'))
when 'by_domain'
Instance.matches_domain(value)
+ when 'warning'
+ Instance.where(domain: DeliveryFailureTracker.warning_domains)
+ when 'unavailable'
+ Instance.joins(:unavailable_domain)
else
raise "Unknown filter: #{key}"
end
diff --git a/app/models/list_feed.rb b/app/models/list_feed.rb
index f371e4ed9..47b9281b8 100644
--- a/app/models/list_feed.rb
+++ b/app/models/list_feed.rb
@@ -2,7 +2,6 @@
class ListFeed < Feed
def initialize(list)
- @type = :list
- @id = list.id
+ super(:list, list.id)
end
end
diff --git a/app/models/login_activity.rb b/app/models/login_activity.rb
new file mode 100644
index 000000000..52a0fd01d
--- /dev/null
+++ b/app/models/login_activity.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+# == Schema Information
+#
+# Table name: login_activities
+#
+# id :bigint(8) not null, primary key
+# user_id :bigint(8) not null
+# authentication_method :string
+# provider :string
+# success :boolean
+# failure_reason :string
+# ip :inet
+# user_agent :string
+# created_at :datetime
+#
+
+class LoginActivity < ApplicationRecord
+ enum authentication_method: { password: 'password', otp: 'otp', webauthn: 'webauthn', sign_in_token: 'sign_in_token', omniauth: 'omniauth' }
+
+ belongs_to :user
+
+ validates :authentication_method, inclusion: { in: authentication_methods.keys }
+
+ def detection
+ @detection ||= Browser.new(user_agent)
+ end
+
+ def browser
+ detection.id
+ end
+
+ def platform
+ detection.platform.id
+ end
+end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index cc81b648c..a80087fa3 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -31,6 +31,8 @@
class MediaAttachment < ApplicationRecord
self.inheritance_column = nil
+ include Attachmentable
+
enum type: [:image, :gifv, :video, :unknown, :audio]
enum processing: [:queued, :in_progress, :complete, :failed], _prefix: true
@@ -50,7 +52,7 @@ class MediaAttachment < ApplicationRecord
IMAGE_MIME_TYPES = %w(image/jpeg image/png image/gif).freeze
VIDEO_MIME_TYPES = %w(video/webm video/mp4 video/quicktime video/ogg).freeze
VIDEO_CONVERTIBLE_MIME_TYPES = %w(video/webm video/quicktime).freeze
- AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/ogg audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze
+ AUDIO_MIME_TYPES = %w(audio/wave audio/wav audio/x-wav audio/x-pn-wave audio/ogg audio/vorbis audio/mpeg audio/mp3 audio/webm audio/flac audio/aac audio/m4a audio/x-m4a audio/mp4 audio/3gpp video/x-ms-asf).freeze
BLURHASH_OPTIONS = {
x_comp: 4,
@@ -59,7 +61,7 @@ class MediaAttachment < ApplicationRecord
IMAGE_STYLES = {
original: {
- pixels: 1_638_400, # 1280x1280px
+ pixels: 2_073_600, # 1920x1080px
file_geometry_parser: FastGeometryParser,
}.freeze,
@@ -165,12 +167,11 @@ class MediaAttachment < ApplicationRecord
processors: ->(f) { file_processors f },
convert_options: GLOBAL_CONVERT_OPTIONS
- before_file_post_process :set_type_and_extension
- before_file_post_process :check_video_dimensions
+ before_file_validate :set_type_and_extension
+ before_file_validate :check_video_dimensions
validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES + AUDIO_MIME_TYPES
- validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :larger_media_format?
- validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :larger_media_format?
+ validates_attachment_size :file, less_than: ->(m) { m.larger_media_format? ? VIDEO_LIMIT : IMAGE_LIMIT }
remotable_attachment :file, VIDEO_LIMIT, suppress_errors: false, download_on_assign: false, attribute_name: :remote_url
has_attached_file :thumbnail,
@@ -182,8 +183,6 @@ class MediaAttachment < ApplicationRecord
validates_attachment_size :thumbnail, less_than: IMAGE_LIMIT
remotable_attachment :thumbnail, IMAGE_LIMIT, suppress_errors: true, download_on_assign: false
- include Attachmentable
-
validates :account, presence: true
validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH }, if: :local?
validates :file, presence: true, if: :local?
@@ -255,7 +254,7 @@ class MediaAttachment < ApplicationRecord
after_commit :reset_parent_cache, on: :update
before_create :prepare_description, unless: :local?
- before_create :set_shortcode
+ before_create :set_unknown_type
before_create :set_processing
after_post_process :set_meta
@@ -287,7 +286,7 @@ class MediaAttachment < ApplicationRecord
if instance.file_content_type == 'image/gif'
[:gif_transcoder, :blurhash_transcoder]
elsif VIDEO_MIME_TYPES.include?(instance.file_content_type)
- [:video_transcoder, :blurhash_transcoder, :type_corrector]
+ [:transcoder, :blurhash_transcoder, :type_corrector]
elsif AUDIO_MIME_TYPES.include?(instance.file_content_type)
[:image_extractor, :transcoder, :type_corrector]
else
@@ -298,15 +297,8 @@ class MediaAttachment < ApplicationRecord
private
- def set_shortcode
+ def set_unknown_type
self.type = :unknown if file.blank? && !type_changed?
-
- return unless local?
-
- loop do
- self.shortcode = SecureRandom.urlsafe_base64(14)
- break if MediaAttachment.find_by(shortcode: shortcode).nil?
- end
end
def prepare_description
@@ -388,7 +380,7 @@ class MediaAttachment < ApplicationRecord
# paths but ultimately the same file, so it makes sense to memoize the
# result while disregarding the path
def ffmpeg_data(path = nil)
- @ffmpeg_data ||= FFMPEG::Movie.new(path)
+ @ffmpeg_data ||= VideoMetadataExtractor.new(path)
end
def enqueue_processing
diff --git a/app/models/notification.rb b/app/models/notification.rb
index e83123c97..3bf9dd483 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -17,7 +17,6 @@ class Notification < ApplicationRecord
self.inheritance_column = nil
include Paginable
- include Cacheable
LEGACY_TYPE_CLASS_MAP = {
'Mention' => :mention,
@@ -38,18 +37,24 @@ class Notification < ApplicationRecord
poll
).freeze
- STATUS_INCLUDES = [:account, :application, :preloadable_poll, :media_attachments, :tags, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, :tags, active_mentions: :account]].freeze
+ TARGET_STATUS_INCLUDES_BY_TYPE = {
+ status: :status,
+ reblog: [status: :reblog],
+ mention: [mention: :status],
+ favourite: [favourite: :status],
+ poll: [poll: :status],
+ }.freeze
belongs_to :account, optional: true
belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true
- belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id', optional: true
- belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', optional: true
- belongs_to :follow, foreign_type: 'Follow', foreign_key: 'activity_id', optional: true
- belongs_to :follow_request, foreign_type: 'FollowRequest', foreign_key: 'activity_id', optional: true
- belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id', optional: true
- belongs_to :poll, foreign_type: 'Poll', foreign_key: 'activity_id', optional: true
+ belongs_to :mention, foreign_key: 'activity_id', optional: true
+ belongs_to :status, foreign_key: 'activity_id', optional: true
+ belongs_to :follow, foreign_key: 'activity_id', optional: true
+ belongs_to :follow_request, foreign_key: 'activity_id', optional: true
+ belongs_to :favourite, foreign_key: 'activity_id', optional: true
+ belongs_to :poll, foreign_key: 'activity_id', optional: true
validates :type, inclusion: { in: TYPES }
@@ -65,8 +70,6 @@ class Notification < ApplicationRecord
end
}
- cache_associated :from_account, status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account, follow_request: :account, poll: [status: STATUS_INCLUDES]
-
def type
@type ||= (super || LEGACY_TYPE_CLASS_MAP[activity_type]).to_sym
end
@@ -87,21 +90,40 @@ class Notification < ApplicationRecord
end
class << self
- def cache_ids
- select(:id, :updated_at, :activity_type, :activity_id)
- end
+ def preload_cache_collection_target_statuses(notifications, &_block)
+ notifications.group_by(&:type).each do |type, grouped_notifications|
+ associations = TARGET_STATUS_INCLUDES_BY_TYPE[type]
+ next unless associations
- def reload_stale_associations!(cached_items)
- account_ids = (cached_items.map(&:from_account_id) + cached_items.map { |item| item.target_status&.account_id }.compact).uniq
-
- return if account_ids.empty?
-
- accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
-
- cached_items.each do |item|
- item.from_account = accounts[item.from_account_id]
- item.target_status.account = accounts[item.target_status.account_id] if item.target_status
+ # Instead of using the usual `includes`, manually preload each type.
+ # If polymorphic associations are loaded with the usual `includes`, other types of associations will be loaded more.
+ ActiveRecord::Associations::Preloader.new.preload(grouped_notifications, associations)
end
+
+ unique_target_statuses = notifications.map(&:target_status).compact.uniq
+ # Call cache_collection in block
+ cached_statuses_by_id = yield(unique_target_statuses).index_by(&:id)
+
+ notifications.each do |notification|
+ next if notification.target_status.nil?
+
+ cached_status = cached_statuses_by_id[notification.target_status.id]
+
+ case notification.type
+ when :status
+ notification.status = cached_status
+ when :reblog
+ notification.status.reblog = cached_status
+ when :favourite
+ notification.favourite.status = cached_status
+ when :mention
+ notification.mention.status = cached_status
+ when :poll
+ notification.poll.status = cached_status
+ end
+ end
+
+ notifications
end
end
diff --git a/app/models/poll.rb b/app/models/poll.rb
index e1ca55252..d2a17277b 100644
--- a/app/models/poll.rb
+++ b/app/models/poll.rb
@@ -73,10 +73,12 @@ class Poll < ApplicationRecord
attributes :id, :title, :votes_count, :poll
def initialize(poll, id, title, votes_count)
- @poll = poll
- @id = id
- @title = title
- @votes_count = votes_count
+ super(
+ poll: poll,
+ id: id,
+ title: title,
+ votes_count: votes_count,
+ )
end
end
diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb
index a6ec839f8..bca3a3ce8 100644
--- a/app/models/preview_card.rb
+++ b/app/models/preview_card.rb
@@ -27,6 +27,8 @@
#
class PreviewCard < ApplicationRecord
+ include Attachmentable
+
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
LIMIT = 1.megabytes
@@ -41,9 +43,7 @@ class PreviewCard < ApplicationRecord
has_and_belongs_to_many :statuses
- has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }
-
- include Attachmentable
+ has_attached_file :image, processors: [:thumbnail, :blurhash_transcoder], styles: ->(f) { image_styles(f) }, convert_options: { all: '-quality 80 -strip' }, validate_media_type: false
validates :url, presence: true, uniqueness: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES
diff --git a/app/models/public_feed.rb b/app/models/public_feed.rb
index 2839da5cb..2528ef1b6 100644
--- a/app/models/public_feed.rb
+++ b/app/models/public_feed.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class PublicFeed < Feed
+class PublicFeed
# @param [Account] account
# @param [Hash] options
# @option [Boolean] :with_replies
@@ -35,36 +35,38 @@ class PublicFeed < Feed
private
+ attr_reader :account, :options
+
def allow_local_only?
- local_account? && (local_only? || @options[:allow_local_only])
+ local_account? && (local_only? || options[:allow_local_only])
end
def with_reblogs?
- @options[:with_reblogs]
+ options[:with_reblogs]
end
def with_replies?
- @options[:with_replies]
+ options[:with_replies]
end
def local_only?
- @options[:local]
+ options[:local]
end
def remote_only?
- @options[:remote]
+ options[:remote]
end
def account?
- @account.present?
+ account.present?
end
def local_account?
- @account&.local?
+ account&.local?
end
def media_only?
- @options[:only_media]
+ options[:only_media]
end
def public_scope
@@ -96,9 +98,9 @@ class PublicFeed < Feed
end
def account_filters_scope
- Status.not_excluded_by_account(@account).tap do |scope|
- scope.merge!(Status.not_domain_blocked_by_account(@account)) unless local_only?
- scope.merge!(Status.in_chosen_languages(@account)) if @account.chosen_languages.present?
+ Status.not_excluded_by_account(account).tap do |scope|
+ scope.merge!(Status.not_domain_blocked_by_account(account)) unless local_only?
+ scope.merge!(Status.in_chosen_languages(account)) if account.chosen_languages.present?
end
end
end
diff --git a/app/models/report.rb b/app/models/report.rb
index cd08120e4..ef41547d9 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -32,7 +32,7 @@ class Report < ApplicationRecord
scope :unresolved, -> { where(action_taken: false) }
scope :resolved, -> { where(action_taken: true) }
- scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].each_with_object({}) { |k, h| h[k] = { user: [:invite_request, :invite] } }) }
+ scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) }
validates :comment, length: { maximum: 1000 }
diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb
index c32d4359e..a91a6baeb 100644
--- a/app/models/report_filter.rb
+++ b/app/models/report_filter.rb
@@ -6,6 +6,7 @@ class ReportFilter
account_id
target_account_id
by_target_domain
+ target_origin
).freeze
attr_reader :params
@@ -34,8 +35,21 @@ class ReportFilter
Report.where(account_id: value)
when :target_account_id
Report.where(target_account_id: value)
+ when :target_origin
+ target_origin_scope(value)
else
raise "Unknown filter: #{key}"
end
end
+
+ def target_origin_scope(value)
+ case value.to_sym
+ when :local
+ Report.where(target_account: Account.local)
+ when :remote
+ Report.where(target_account: Account.remote)
+ else
+ raise "Unknown value: #{value}"
+ end
+ end
end
diff --git a/app/models/rule.rb b/app/models/rule.rb
new file mode 100644
index 000000000..7b62f2b35
--- /dev/null
+++ b/app/models/rule.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# == Schema Information
+#
+# Table name: rules
+#
+# id :bigint(8) not null, primary key
+# priority :integer default(0), not null
+# deleted_at :datetime
+# text :text default(""), not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+class Rule < ApplicationRecord
+ include Discard::Model
+
+ self.discard_column = :deleted_at
+
+ validates :text, presence: true, length: { maximum: 300 }
+
+ scope :ordered, -> { kept.order(priority: :asc) }
+end
diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb
index b0ce9d112..3a59bad93 100644
--- a/app/models/session_activation.rb
+++ b/app/models/session_activation.rb
@@ -44,7 +44,7 @@ class SessionActivation < ApplicationRecord
end
def activate(**options)
- activation = create!(options)
+ activation = create!(**options)
purge_old
activation
end
diff --git a/app/models/setting.rb b/app/models/setting.rb
index a5878e96a..4bcaa060f 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -40,7 +40,7 @@ class Setting < RailsSettings::Base
def all_as_records
vars = thing_scoped
- records = vars.each_with_object({}) { |r, h| h[r.var] = r }
+ records = vars.index_by(&:var)
default_settings.each do |key, default_value|
next if records.key?(key) || default_value.is_a?(Hash)
diff --git a/app/models/status.rb b/app/models/status.rb
index 0d15304b6..9f673ee53 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -120,7 +120,7 @@ class Status < ApplicationRecord
:tags,
:preview_cards,
:preloadable_poll,
- account: :account_stat,
+ account: [:account_stat, :user],
active_mentions: { account: :account_stat },
reblog: [
:application,
@@ -130,7 +130,7 @@ class Status < ApplicationRecord
:conversation,
:status_stat,
:preloadable_poll,
- account: :account_stat,
+ account: [:account_stat, :user],
active_mentions: { account: :account_stat },
],
thread: { account: :account_stat }
@@ -167,6 +167,10 @@ class Status < ApplicationRecord
attributes['local'] || uri.nil?
end
+ def in_reply_to_local_account?
+ reply? && thread&.account&.local?
+ end
+
def reblog?
!reblog_of_id.nil?
end
@@ -354,7 +358,7 @@ class Status < ApplicationRecord
return if account_ids.empty?
- accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a }
+ accounts = Account.where(id: account_ids).includes(:account_stat, :user).index_by(&:id)
cached_items.each do |item|
item.account = accounts[item.account_id]
@@ -387,7 +391,7 @@ class Status < ApplicationRecord
def from_text(text)
return [] if text.blank?
- text.scan(FetchLinkCardService::URL_PATTERN).map(&:first).uniq.map do |url|
+ text.scan(FetchLinkCardService::URL_PATTERN).map(&:first).uniq.filter_map do |url|
status = begin
if TagManager.instance.local_url?(url)
ActivityPub::TagManager.instance.uri_to_resource(url, Status)
@@ -396,7 +400,7 @@ class Status < ApplicationRecord
end
end
status&.distributable? ? status : nil
- end.compact
+ end
end
end
diff --git a/app/models/status_pin.rb b/app/models/status_pin.rb
index afc76bded..93a0ea1c0 100644
--- a/app/models/status_pin.rb
+++ b/app/models/status_pin.rb
@@ -15,4 +15,12 @@ class StatusPin < ApplicationRecord
belongs_to :status
validates_with StatusPinValidator
+
+ after_destroy :invalidate_cleanup_info
+
+ def invalidate_cleanup_info
+ return unless status&.account_id == account_id && account.local?
+
+ account.statuses_cleanup_policy&.invalidate_last_inspected(status, :unpin)
+ end
end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index bb93a52e2..735c30608 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -20,10 +20,8 @@
class Tag < ApplicationRecord
has_and_belongs_to_many :statuses
has_and_belongs_to_many :accounts
- has_and_belongs_to_many :sample_accounts, -> { local.discoverable.popular.limit(3) }, class_name: 'Account'
has_many :featured_tags, dependent: :destroy, inverse_of: :tag
- has_one :account_tag_stat, dependent: :destroy
HASHTAG_SEPARATORS = "_\u00B7\u200c"
HASHTAG_NAME_RE = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)"
@@ -38,28 +36,11 @@ class Tag < ApplicationRecord
scope :usable, -> { where(usable: [true, nil]) }
scope :listable, -> { where(listable: [true, nil]) }
scope :trendable, -> { Setting.trendable_by_default ? where(trendable: [true, nil]) : where(trendable: true) }
- scope :discoverable, -> { listable.joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).order(Arel.sql('account_tag_stats.accounts_count desc')) }
scope :recently_used, ->(account) { joins(:statuses).where(statuses: { id: account.statuses.select(:id).limit(1000) }).group(:id).order(Arel.sql('count(*) desc')) }
- scope :matches_name, ->(value) { where(arel_table[:name].matches("#{value}%")) }
-
- delegate :accounts_count,
- :accounts_count=,
- :increment_count!,
- :decrement_count!,
- to: :account_tag_stat
-
- after_save :save_account_tag_stat
+ scope :matches_name, ->(term) { where(arel_table[:name].lower.matches(arel_table.lower("#{sanitize_sql_like(Tag.normalize(term))}%"), nil, true)) } # Search with case-sensitive to use B-tree index
update_index('tags#tag', :self)
- def account_tag_stat
- super || build_account_tag_stat
- end
-
- def cached_sample_accounts
- Rails.cache.fetch("#{cache_key}/sample_accounts", expires_in: 12.hours) { sample_accounts }
- end
-
def to_param
name
end
@@ -94,6 +75,10 @@ class Tag < ApplicationRecord
requested_review_at.present?
end
+ def use!(account, status: nil, at_time: Time.now.utc)
+ TrendingTags.record_use!(self, account, status: status, at_time: at_time)
+ end
+
def trending?
TrendingTags.trending?(self)
end
@@ -126,10 +111,10 @@ class Tag < ApplicationRecord
end
def search_for(term, limit = 5, offset = 0, options = {})
- normalized_term = normalize(term.strip)
- pattern = sanitize_sql_like(normalized_term) + '%'
- query = Tag.listable.where(arel_table[:name].lower.matches(pattern))
- query = query.where(arel_table[:name].lower.eq(normalized_term).or(arel_table[:reviewed_at].not_eq(nil))) if options[:exclude_unreviewed]
+ stripped_term = term.strip
+
+ query = Tag.listable.matches_name(stripped_term)
+ query = query.merge(matching_name(stripped_term).or(where.not(reviewed_at: nil))) if options[:exclude_unreviewed]
query.order(Arel.sql('length(name) ASC, name ASC'))
.limit(limit)
@@ -145,7 +130,7 @@ class Tag < ApplicationRecord
end
def matching_name(name_or_names)
- names = Array(name_or_names).map { |name| normalize(name).mb_chars.downcase.to_s }
+ names = Array(name_or_names).map { |name| arel_table.lower(normalize(name)) }
if names.size == 1
where(arel_table[:name].lower.eq(names.first))
@@ -154,8 +139,6 @@ class Tag < ApplicationRecord
end
end
- private
-
def normalize(str)
str.gsub(/\A#/, '')
end
@@ -163,11 +146,6 @@ class Tag < ApplicationRecord
private
- def save_account_tag_stat
- return unless account_tag_stat&.changed?
- account_tag_stat.save
- end
-
def validate_name_change
errors.add(:name, I18n.t('tags.does_not_match_previous_name')) unless name_was.mb_chars.casecmp(name.mb_chars).zero?
end
diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb
index a7d583a7e..fbbdbaae2 100644
--- a/app/models/tag_feed.rb
+++ b/app/models/tag_feed.rb
@@ -13,9 +13,8 @@ class TagFeed < PublicFeed
# @option [Boolean] :remote
# @option [Boolean] :only_media
def initialize(tag, account, options = {})
- @tag = tag
- @account = account
- @options = options
+ @tag = tag
+ super(account, options)
end
# @param [Integer] limit
@@ -41,15 +40,15 @@ class TagFeed < PublicFeed
private
def tagged_with_any_scope
- Status.group(:id).tagged_with(tags_for(Array(@tag.name) | Array(@options[:any])))
+ Status.group(:id).tagged_with(tags_for(Array(@tag.name) | Array(options[:any])))
end
def tagged_with_all_scope
- Status.group(:id).tagged_with_all(tags_for(@options[:all]))
+ Status.group(:id).tagged_with_all(tags_for(options[:all]))
end
def tagged_with_none_scope
- Status.group(:id).tagged_with_none(tags_for(@options[:none]))
+ Status.group(:id).tagged_with_none(tags_for(options[:none]))
end
def tags_for(names)
diff --git a/app/models/tag_filter.rb b/app/models/tag_filter.rb
index a9ff5b703..85bfcbea5 100644
--- a/app/models/tag_filter.rb
+++ b/app/models/tag_filter.rb
@@ -33,8 +33,6 @@ class TagFilter
def scope_for(key, value)
case key.to_s
- when 'directory'
- Tag.discoverable
when 'reviewed'
Tag.reviewed.order(reviewed_at: :desc)
when 'unreviewed'
diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb
index c69f6d3c3..31890b082 100644
--- a/app/models/trending_tags.rb
+++ b/app/models/trending_tags.rb
@@ -13,19 +13,23 @@ class TrendingTags
class << self
include Redisable
- def record_use!(tag, account, at_time = Time.now.utc)
- return if account.silenced? || account.bot? || !tag.usable? || !(tag.trendable? || tag.requires_review?)
+ def record_use!(tag, account, status: nil, at_time: Time.now.utc)
+ return unless tag.usable? && !account.silenced?
+ # Even if a tag is not allowed to trend, we still need to
+ # record the stats since they can be displayed in other places
increment_historical_use!(tag.id, at_time)
increment_unique_use!(tag.id, account.id, at_time)
increment_use!(tag.id, at_time)
- tag.update(last_status_at: Time.now.utc) if tag.last_status_at.nil? || tag.last_status_at < 12.hours.ago
+ # Only update when the tag was last used once every 12 hours
+ # and only if a status is given (lets use ignore reblogs)
+ tag.update(last_status_at: at_time) if status.present? && (tag.last_status_at.nil? || (tag.last_status_at < at_time && tag.last_status_at < 12.hours.ago))
end
def update!(at_time = Time.now.utc)
tag_ids = redis.smembers("#{KEY}:used:#{at_time.beginning_of_day.to_i}") + redis.zrange(KEY, 0, -1)
- tags = Tag.where(id: tag_ids.uniq)
+ tags = Tag.trendable.where(id: tag_ids.uniq)
# First pass to calculate scores and update the set
@@ -91,7 +95,7 @@ class TrendingTags
tags = Tag.where(id: tag_ids)
tags = tags.trendable if filtered
- tags = tags.each_with_object({}) { |tag, h| h[tag.id] = tag }
+ tags = tags.index_by(&:id)
tag_ids.map { |tag_id| tags[tag_id] }.compact.take(limit)
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 9316eb228..a1a278004 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -42,6 +42,7 @@
# sign_in_token_sent_at :datetime
# webauthn_id :string
# sign_up_ip :inet
+# skip_sign_in_token :boolean
#
class User < ApplicationRecord
@@ -152,7 +153,7 @@ class User < ApplicationRecord
def confirm
new_user = !confirmed?
- self.approved = true if open_registrations?
+ self.approved = true if open_registrations? && !sign_up_from_ip_requires_approval?
super
@@ -200,7 +201,7 @@ class User < ApplicationRecord
end
def suspicious_sign_in?(ip)
- !otp_required_for_login? && current_sign_in_at.present? && current_sign_in_at < 2.weeks.ago && !recent_ip?(ip)
+ !otp_required_for_login? && !skip_sign_in_token? && current_sign_in_at.present? && !recent_ip?(ip)
end
def functional?
@@ -329,12 +330,32 @@ class User < ApplicationRecord
super
end
- def reset_password!(new_password, new_password_confirmation)
+ def reset_password(new_password, new_password_confirmation)
return false if encrypted_password.blank?
super
end
+ def reset_password!
+ # First, change password to something random, invalidate the remember-me token,
+ # and deactivate all sessions
+ transaction do
+ update(remember_token: nil, remember_created_at: nil, password: SecureRandom.hex)
+ session_activations.destroy_all
+ end
+
+ # Then, remove all authorized applications and connected push subscriptions
+ Doorkeeper::AccessGrant.by_resource_owner(self).in_batches.update_all(revoked_at: Time.now.utc)
+
+ Doorkeeper::AccessToken.by_resource_owner(self).in_batches do |batch|
+ batch.update_all(revoked_at: Time.now.utc)
+ Web::PushSubscription.where(access_token_id: batch).delete_all
+ end
+
+ # Finally, send a reset password prompt to the user
+ send_reset_password_instructions
+ end
+
def show_all_media?
setting_display_media == 'show_all'
end
@@ -370,15 +391,20 @@ class User < ApplicationRecord
protected
- def send_devise_notification(notification, *args)
+ def send_devise_notification(notification, *args, **kwargs)
# This method can be called in `after_update` and `after_commit` hooks,
# but we must make sure the mailer is actually called *after* commit,
# otherwise it may work on stale data. To do this, figure out if we are
# within a transaction.
+
+ # It seems like devise sends keyword arguments as a hash in the last
+ # positional argument
+ kwargs = args.pop if args.last.is_a?(Hash) && kwargs.empty?
+
if ActiveRecord::Base.connection.current_transaction.try(:records)&.include?(self)
- pending_devise_notifications << [notification, args]
+ pending_devise_notifications << [notification, args, kwargs]
else
- render_and_send_devise_message(notification, *args)
+ render_and_send_devise_message(notification, *args, **kwargs)
end
end
@@ -389,8 +415,8 @@ class User < ApplicationRecord
end
def send_pending_devise_notifications
- pending_devise_notifications.each do |notification, args|
- render_and_send_devise_message(notification, *args)
+ pending_devise_notifications.each do |notification, args, kwargs|
+ render_and_send_devise_message(notification, *args, **kwargs)
end
# Empty the pending notifications array because the
@@ -403,8 +429,8 @@ class User < ApplicationRecord
@pending_devise_notifications ||= []
end
- def render_and_send_devise_message(notification, *args)
- devise_mailer.send(notification, self, *args).deliver_later
+ def render_and_send_devise_message(notification, *args, **kwargs)
+ devise_mailer.send(notification, self, *args, **kwargs).deliver_later
end
def set_approved
@@ -458,9 +484,7 @@ class User < ApplicationRecord
end
def regenerate_feed!
- return unless Redis.current.setnx("account:#{account_id}:regeneration", true)
- Redis.current.expire("account:#{account_id}:regeneration", 1.day.seconds)
- RegenerationWorker.perform_async(account_id)
+ RegenerationWorker.perform_async(account_id) if Redis.current.set("account:#{account_id}:regeneration", true, nx: true, ex: 1.day.seconds)
end
def needs_feed_update?
@@ -468,7 +492,7 @@ class User < ApplicationRecord
end
def validate_email_dns?
- email_changed? && !(Rails.env.test? || Rails.env.development?)
+ email_changed? && !external? && !(Rails.env.test? || Rails.env.development?)
end
def invite_text_required?
diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb
index c407a7789..6e46573ae 100644
--- a/app/models/web/push_subscription.rb
+++ b/app/models/web/push_subscription.rb
@@ -24,81 +24,101 @@ class Web::PushSubscription < ApplicationRecord
validates :key_p256dh, presence: true
validates :key_auth, presence: true
- def push(notification)
- I18n.with_locale(associated_user&.locale || I18n.default_locale) do
- push_payload(payload_for_notification(notification), 48.hours.seconds)
- end
+ delegate :locale, to: :associated_user
+
+ def encrypt(payload)
+ Webpush::Encryption.encrypt(payload, key_p256dh, key_auth)
+ end
+
+ def audience
+ @audience ||= Addressable::URI.parse(endpoint).normalized_site
+ end
+
+ def crypto_key_header
+ p256ecdsa = vapid_key.public_key_for_push_header
+
+ "p256ecdsa=#{p256ecdsa}"
+ end
+
+ def authorization_header
+ jwt = JWT.encode({ aud: audience, exp: 24.hours.from_now.to_i, sub: "mailto:#{contact_email}" }, vapid_key.curve, 'ES256', typ: 'JWT')
+
+ "WebPush #{jwt}"
end
def pushable?(notification)
- data&.key?('alerts') && ActiveModel::Type::Boolean.new.cast(data['alerts'][notification.type.to_s])
+ policy_allows_notification?(notification) && alert_enabled_for_notification_type?(notification)
end
def associated_user
return @associated_user if defined?(@associated_user)
- @associated_user = if user_id.nil?
- session_activation.user
- else
- user
- end
+ @associated_user = begin
+ if user_id.nil?
+ session_activation.user
+ else
+ user
+ end
+ end
end
def associated_access_token
return @associated_access_token if defined?(@associated_access_token)
- @associated_access_token = if access_token_id.nil?
- find_or_create_access_token.token
- else
- access_token.token
- end
+ @associated_access_token = begin
+ if access_token_id.nil?
+ find_or_create_access_token.token
+ else
+ access_token.token
+ end
+ end
end
class << self
def unsubscribe_for(application_id, resource_owner)
- access_token_ids = Doorkeeper::AccessToken.where(application_id: application_id, resource_owner_id: resource_owner.id, revoked_at: nil)
- .pluck(:id)
-
+ access_token_ids = Doorkeeper::AccessToken.where(application_id: application_id, resource_owner_id: resource_owner.id, revoked_at: nil).pluck(:id)
where(access_token_id: access_token_ids).delete_all
end
end
private
- def push_payload(message, ttl = 5.minutes.seconds)
- Webpush.payload_send(
- message: Oj.dump(message),
- endpoint: endpoint,
- p256dh: key_p256dh,
- auth: key_auth,
- ttl: ttl,
- ssl_timeout: 10,
- open_timeout: 10,
- read_timeout: 10,
- vapid: {
- subject: "mailto:#{::Setting.site_contact_email}",
- private_key: Rails.configuration.x.vapid_private_key,
- public_key: Rails.configuration.x.vapid_public_key,
- }
- )
- end
-
- def payload_for_notification(notification)
- ActiveModelSerializers::SerializableResource.new(
- notification,
- serializer: Web::NotificationSerializer,
- scope: self,
- scope_name: :current_push_subscription
- ).as_json
- end
-
def find_or_create_access_token
Doorkeeper::AccessToken.find_or_create_for(
application: Doorkeeper::Application.find_by(superapp: true),
- resource_owner: session_activation.user_id,
+ resource_owner: user_id || session_activation.user_id,
scopes: Doorkeeper::OAuth::Scopes.from_string('read write follow push'),
expires_in: Doorkeeper.configuration.access_token_expires_in,
use_refresh_token: Doorkeeper.configuration.refresh_token_enabled?
)
end
+
+ def vapid_key
+ @vapid_key ||= Webpush::VapidKey.from_keys(Rails.configuration.x.vapid_public_key, Rails.configuration.x.vapid_private_key)
+ end
+
+ def contact_email
+ @contact_email ||= ::Setting.site_contact_email
+ end
+
+ def alert_enabled_for_notification_type?(notification)
+ truthy?(data&.dig('alerts', notification.type.to_s))
+ end
+
+ def policy_allows_notification?(notification)
+ case data&.dig('policy')
+ when nil, 'all'
+ true
+ when 'none'
+ false
+ when 'followed'
+ notification.account.following?(notification.from_account)
+ when 'follower'
+ notification.from_account.following?(notification.account)
+ end
+ end
+
+ def truthy?(val)
+ ActiveModel::Type::Boolean.new.cast(val)
+ end
end
diff --git a/app/policies/delivery_policy.rb b/app/policies/delivery_policy.rb
new file mode 100644
index 000000000..24d06c168
--- /dev/null
+++ b/app/policies/delivery_policy.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class DeliveryPolicy < ApplicationPolicy
+ def clear_delivery_errors?
+ admin?
+ end
+
+ def restart_delivery?
+ admin?
+ end
+
+ def stop_delivery?
+ admin?
+ end
+end
diff --git a/app/policies/follow_recommendation_policy.rb b/app/policies/follow_recommendation_policy.rb
new file mode 100644
index 000000000..68cd0e547
--- /dev/null
+++ b/app/policies/follow_recommendation_policy.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class FollowRecommendationPolicy < ApplicationPolicy
+ def show?
+ staff?
+ end
+
+ def suppress?
+ staff?
+ end
+
+ def unsuppress?
+ staff?
+ end
+end
diff --git a/app/policies/rule_policy.rb b/app/policies/rule_policy.rb
new file mode 100644
index 000000000..6a4def009
--- /dev/null
+++ b/app/policies/rule_policy.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class RulePolicy < ApplicationPolicy
+ def index?
+ staff?
+ end
+
+ def create?
+ admin?
+ end
+
+ def update?
+ admin?
+ end
+
+ def destroy?
+ admin?
+ end
+end
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index d832bff75..6695a0ddf 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -13,6 +13,14 @@ class UserPolicy < ApplicationPolicy
admin? && !record.staff?
end
+ def disable_sign_in_token_auth?
+ staff?
+ end
+
+ def enable_sign_in_token_auth?
+ staff?
+ end
+
def confirm?
staff? && !record.confirmed?
end
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index a37d904dc..345a5e5e9 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -16,6 +16,10 @@ class InstancePresenter
Account.find_local(Setting.site_contact_username.strip.gsub(/\A@/, ''))
end
+ def rules
+ Rule.ordered
+ end
+
def user_count
Rails.cache.fetch('user_count') { User.confirmed.joins(:account).merge(Account.without_suspended).count }
end
diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb
index 3cc905a75..70fb2ba90 100644
--- a/app/presenters/status_relationships_presenter.rb
+++ b/app/presenters/status_relationships_presenter.rb
@@ -14,8 +14,8 @@ class StatusRelationshipsPresenter
else
statuses = statuses.compact
status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact
- conversation_ids = statuses.map(&:conversation_id).compact.uniq
- pinnable_status_ids = statuses.map(&:proper).select { |s| s.account_id == current_account_id && %w(public unlisted).include?(s.visibility) }.map(&:id)
+ conversation_ids = statuses.filter_map(&:conversation_id).uniq
+ pinnable_status_ids = statuses.map(&:proper).filter_map { |s| s.id if s.account_id == current_account_id && %w(public unlisted).include?(s.visibility) }
@reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {})
@favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {})
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 759ef30f9..a7d948976 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -13,7 +13,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
:inbox, :outbox, :featured, :featured_tags,
:preferred_username, :name, :summary,
:url, :manually_approves_followers,
- :discoverable
+ :discoverable, :published
has_one :public_key, serializer: ActivityPub::PublicKeySerializer
@@ -158,6 +158,10 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
!object.suspended? && !object.also_known_as.empty?
end
+ def published
+ object.created_at.midnight.iso8601
+ end
+
class CustomEmojiSerializer < ActivityPub::EmojiSerializer
end
@@ -173,7 +177,7 @@ class ActivityPub::ActorSerializer < ActivityPub::Serializer
end
def href
- explore_hashtag_url(object)
+ tag_url(object)
end
def name
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index c4f8f5c3f..e08c537b0 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -181,6 +181,8 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
attributes :type, :media_type, :url, :name, :blurhash
attribute :focal_point, if: :focal_point?
+ attribute :width, if: :width?
+ attribute :height, if: :height?
has_one :icon, serializer: ActivityPub::ImageSerializer, if: :thumbnail?
@@ -215,6 +217,22 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
def thumbnail?
object.thumbnail.present?
end
+
+ def width?
+ object.file.meta&.dig('original', 'width').present?
+ end
+
+ def height?
+ object.file.meta&.dig('original', 'height').present?
+ end
+
+ def width
+ object.file.meta.dig('original', 'width')
+ end
+
+ def height
+ object.file.meta.dig('original', 'height')
+ end
end
class MentionSerializer < ActivityPub::Serializer
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 470cec8a1..a05164641 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -33,6 +33,7 @@ class InitialStateSerializer < ActiveModel::Serializer
source_url: Mastodon::Version.source_url,
version: Mastodon::Version.to_s,
invites_enabled: Setting.min_invite_role == 'user',
+ limited_federation_mode: Rails.configuration.x.whitelist_mode,
mascot: instance_presenter.mascot&.file&.url,
profile_directory: Setting.profile_directory,
trends: Setting.trends,
diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index dafe8f55b..4786aa760 100644
--- a/app/serializers/manifest_serializer.rb
+++ b/app/serializers/manifest_serializer.rb
@@ -48,7 +48,7 @@ class ManifestSerializer < ActiveModel::Serializer
end
def scope
- root_url
+ '/'
end
def share_target
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index 5cc42c7cf..36886181f 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -55,6 +55,10 @@ class REST::AccountSerializer < ActiveModel::Serializer
full_asset_url(object.suspended? ? object.header.default_url : object.header_static_url)
end
+ def created_at
+ object.created_at.midnight.as_json
+ end
+
def last_status_at
object.last_status_at&.to_date&.iso8601
end
diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb
index 54e7c450c..48bbb55c8 100644
--- a/app/serializers/rest/instance_serializer.rb
+++ b/app/serializers/rest/instance_serializer.rb
@@ -5,11 +5,14 @@ class REST::InstanceSerializer < ActiveModel::Serializer
attributes :uri, :title, :short_description, :description, :email,
:version, :urls, :stats, :thumbnail, :max_toot_chars, :poll_limits,
- :languages, :registrations, :approval_required, :invites_enabled
+ :languages, :registrations, :approval_required, :invites_enabled,
+ :configuration
has_one :contact_account, serializer: REST::AccountSerializer
- delegate :contact_account, to: :instance_presenter
+ has_many :rules, serializer: REST::RuleSerializer
+
+ delegate :contact_account, :rules, to: :instance_presenter
def uri
Rails.configuration.x.local_domain
@@ -64,6 +67,32 @@ class REST::InstanceSerializer < ActiveModel::Serializer
{ streaming_api: Rails.configuration.x.streaming_api_base_url }
end
+ def configuration
+ {
+ statuses: {
+ max_characters: StatusLengthValidator::MAX_CHARS,
+ max_media_attachments: 4,
+ characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS,
+ },
+
+ media_attachments: {
+ supported_mime_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES + MediaAttachment::AUDIO_MIME_TYPES,
+ image_size_limit: MediaAttachment::IMAGE_LIMIT,
+ image_matrix_limit: Attachmentable::MAX_MATRIX_LIMIT,
+ video_size_limit: MediaAttachment::VIDEO_LIMIT,
+ video_frame_rate_limit: MediaAttachment::MAX_VIDEO_FRAME_RATE,
+ video_matrix_limit: MediaAttachment::MAX_VIDEO_MATRIX_LIMIT,
+ },
+
+ polls: {
+ max_options: PollValidator::MAX_OPTIONS,
+ max_characters_per_option: PollValidator::MAX_OPTION_CHARS,
+ min_expiration: PollValidator::MIN_EXPIRATION,
+ max_expiration: PollValidator::MAX_EXPIRATION,
+ },
+ }
+ end
+
def languages
[I18n.default_locale]
end
diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb
index a24f95315..f27dda832 100644
--- a/app/serializers/rest/media_attachment_serializer.rb
+++ b/app/serializers/rest/media_attachment_serializer.rb
@@ -40,7 +40,7 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
end
def text_url
- object.local? ? medium_url(object) : nil
+ object.local? && object.shortcode.present? ? medium_url(object) : nil
end
def meta
diff --git a/app/serializers/rest/rule_serializer.rb b/app/serializers/rest/rule_serializer.rb
new file mode 100644
index 000000000..fc925925a
--- /dev/null
+++ b/app/serializers/rest/rule_serializer.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class REST::RuleSerializer < ActiveModel::Serializer
+ attributes :id, :text
+
+ def id
+ object.id.to_s
+ end
+end
diff --git a/app/serializers/rest/suggestion_serializer.rb b/app/serializers/rest/suggestion_serializer.rb
new file mode 100644
index 000000000..3d697fd9f
--- /dev/null
+++ b/app/serializers/rest/suggestion_serializer.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class REST::SuggestionSerializer < ActiveModel::Serializer
+ attributes :source
+
+ has_one :account, serializer: REST::AccountSerializer
+end
diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb
index 43e596040..6fe4b6593 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -175,7 +175,7 @@ class AccountSearchService < BaseService
end
def username_complete?
- query.include?('@') && "@#{query}" =~ /\A#{Account::MENTION_RE}\Z/
+ query.include?('@') && "@#{query}".match?(/\A#{Account::MENTION_RE}\Z/)
end
def likely_acct?
diff --git a/app/services/account_statuses_cleanup_service.rb b/app/services/account_statuses_cleanup_service.rb
new file mode 100644
index 000000000..cbadecc63
--- /dev/null
+++ b/app/services/account_statuses_cleanup_service.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class AccountStatusesCleanupService < BaseService
+ # @param [AccountStatusesCleanupPolicy] account_policy
+ # @param [Integer] budget
+ # @return [Integer]
+ def call(account_policy, budget = 50)
+ return 0 unless account_policy.enabled?
+
+ cutoff_id = account_policy.compute_cutoff_id
+ return 0 if cutoff_id.blank?
+
+ num_deleted = 0
+ last_deleted = nil
+
+ account_policy.statuses_to_delete(budget, cutoff_id, account_policy.last_inspected).reorder(nil).find_each(order: :asc) do |status|
+ status.discard
+ RemovalWorker.perform_async(status.id, redraft: false)
+ num_deleted += 1
+ last_deleted = status.id
+ end
+
+ account_policy.record_last_inspected(last_deleted.presence || cutoff_id)
+
+ num_deleted
+ end
+end
diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb
index 2c2770466..72352aca6 100644
--- a/app/services/activitypub/fetch_featured_collection_service.rb
+++ b/app/services/activitypub/fetch_featured_collection_service.rb
@@ -23,12 +23,8 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService
def process_items(items)
status_ids = items.map { |item| value_or_id(item) }
- .reject { |uri| ActivityPub::TagManager.instance.local_uri?(uri) }
- .map { |uri| ActivityPub::FetchRemoteStatusService.new.call(uri) }
- .compact
- .select { |status| status.account_id == @account.id }
- .map(&:id)
-
+ .filter_map { |uri| ActivityPub::FetchRemoteStatusService.new.call(uri) unless ActivityPub::TagManager.instance.local_uri?(uri) }
+ .filter_map { |status| status.id if status.account_id == @account.id }
to_remove = []
to_add = status_ids
diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb
index df17d9079..c48288b3b 100644
--- a/app/services/activitypub/fetch_remote_key_service.rb
+++ b/app/services/activitypub/fetch_remote_key_service.rb
@@ -5,6 +5,8 @@ class ActivityPub::FetchRemoteKeyService < BaseService
# Returns account that owns the key
def call(uri, id: true, prefetched_body: nil)
+ return if uri.blank?
+
if prefetched_body.nil?
if id
@json = fetch_resource_without_id_validation(uri)
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 6afeb92d6..4ab6912e5 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -87,6 +87,7 @@ class ActivityPub::ProcessAccountService < BaseService
@account.url = url || @uri
@account.uri = @uri
@account.actor_type = actor_type
+ @account.created_at = @json['published'] if @json['published'].present?
end
def set_immediate_attributes!
@@ -101,12 +102,20 @@ class ActivityPub::ProcessAccountService < BaseService
end
def set_fetchable_key!
- @account.public_key = public_key || ''
+ @account.public_key = public_key || ''
end
def set_fetchable_attributes!
- @account.avatar_remote_url = image_url('icon') || '' unless skip_download?
- @account.header_remote_url = image_url('image') || '' unless skip_download?
+ begin
+ @account.avatar_remote_url = image_url('icon') || '' unless skip_download?
+ rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
+ RedownloadAvatarWorker.perform_in(rand(30..600).seconds, @account.id)
+ end
+ begin
+ @account.header_remote_url = image_url('image') || '' unless skip_download?
+ rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
+ RedownloadHeaderWorker.perform_in(rand(30..600).seconds, @account.id)
+ end
@account.statuses_count = outbox_total_items if outbox_total_items.present?
@account.following_count = following_total_items if following_total_items.present?
@account.followers_count = followers_total_items if followers_total_items.present?
@@ -281,7 +290,7 @@ class ActivityPub::ProcessAccountService < BaseService
end
def lock_options
- { redis: Redis.current, key: "process_account:#{@uri}" }
+ { redis: Redis.current, key: "process_account:#{@uri}", autorelease: 15.minutes.seconds }
end
def process_tags
diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb
index f1d175dac..170e6709c 100644
--- a/app/services/activitypub/process_collection_service.rb
+++ b/app/services/activitypub/process_collection_service.rb
@@ -37,7 +37,7 @@ class ActivityPub::ProcessCollectionService < BaseService
end
def process_items(items)
- items.reverse_each.map { |item| process_item(item) }.compact
+ items.reverse_each.filter_map { |item| process_item(item) }
end
def supported_context?
diff --git a/app/services/activitypub/process_poll_service.rb b/app/services/activitypub/process_poll_service.rb
index 903b6a78a..d83e614d8 100644
--- a/app/services/activitypub/process_poll_service.rb
+++ b/app/services/activitypub/process_poll_service.rb
@@ -30,7 +30,7 @@ class ActivityPub::ProcessPollService < BaseService
voters_count = @json['votersCount']
- latest_options = items.map { |item| item['name'].presence || item['content'] }.compact
+ latest_options = items.filter_map { |item| item['name'].presence || item['content'] }
# If for some reasons the options were changed, it invalidates all previous
# votes, so we need to remove them
diff --git a/app/services/activitypub/synchronize_followers_service.rb b/app/services/activitypub/synchronize_followers_service.rb
index d83fcf55e..93cd60253 100644
--- a/app/services/activitypub/synchronize_followers_service.rb
+++ b/app/services/activitypub/synchronize_followers_service.rb
@@ -14,7 +14,7 @@ class ActivityPub::SynchronizeFollowersService < BaseService
# should never happen in practice, since in almost all cases we keep an
# Account record, and should we not do that, we should have sent a Delete.
# In any case there is not much we can do if that occurs.
- @expected_followers = items.map { |uri| ActivityPub::TagManager.instance.uri_to_resource(uri, Account) }.compact
+ @expected_followers = items.filter_map { |uri| ActivityPub::TagManager.instance.uri_to_resource(uri, Account) }
remove_unexpected_local_followers!
handle_unexpected_outgoing_follows!
diff --git a/app/services/after_block_service.rb b/app/services/after_block_service.rb
index 314919df8..899e84be4 100644
--- a/app/services/after_block_service.rb
+++ b/app/services/after_block_service.rb
@@ -6,6 +6,7 @@ class AfterBlockService < BaseService
@target_account = target_account
clear_home_feed!
+ clear_list_feeds!
clear_notifications!
clear_conversations!
end
@@ -16,6 +17,10 @@ class AfterBlockService < BaseService
FeedManager.instance.clear_from_home(@account, @target_account)
end
+ def clear_list_feeds!
+ FeedManager.instance.clear_from_lists(@account, @target_account)
+ end
+
def clear_conversations!
AccountConversation.where(account: @account).where('? = ANY(participant_account_ids)', @target_account.id).in_batches.destroy_all
end
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index 749c84736..f07f407d8 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -168,7 +168,7 @@ class BackupService < BaseService
io.write(buffer)
end
end
- rescue Errno::ENOENT, Seahorse::Client::NetworkingError
- Rails.logger.warn "Could not backup file #{filename}: file not found"
+ rescue Errno::ENOENT, Seahorse::Client::NetworkingError => e
+ Rails.logger.warn "Could not backup file #{filename}: #{e}"
end
end
diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb
index 8412aa7e7..e1a1b98c3 100644
--- a/app/services/bootstrap_timeline_service.rb
+++ b/app/services/bootstrap_timeline_service.rb
@@ -5,48 +5,13 @@ class BootstrapTimelineService < BaseService
@source_account = source_account
autofollow_inviter!
- autofollow_bootstrap_timeline_accounts! if Setting.enable_bootstrap_timeline_accounts
end
private
def autofollow_inviter!
return unless @source_account&.user&.invite&.autofollow?
+
FollowService.new.call(@source_account, @source_account.user.invite.user.account)
end
-
- def autofollow_bootstrap_timeline_accounts!
- bootstrap_timeline_accounts.each do |target_account|
- begin
- FollowService.new.call(@source_account, target_account)
- rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
- nil
- end
- end
- end
-
- def bootstrap_timeline_accounts
- return @bootstrap_timeline_accounts if defined?(@bootstrap_timeline_accounts)
-
- @bootstrap_timeline_accounts = bootstrap_timeline_accounts_usernames.empty? ? admin_accounts : local_unlocked_accounts(bootstrap_timeline_accounts_usernames)
- end
-
- def bootstrap_timeline_accounts_usernames
- @bootstrap_timeline_accounts_usernames ||= (Setting.bootstrap_timeline_accounts || '').split(',').map { |str| str.strip.gsub(/\A@/, '') }.reject(&:blank?)
- end
-
- def admin_accounts
- User.admins
- .includes(:account)
- .where(accounts: { locked: false })
- .map(&:account)
- end
-
- def local_unlocked_accounts(usernames)
- Account.local
- .without_suspended
- .where(username: usernames)
- .where(locked: false)
- .where(moved_to_account_id: nil)
- end
end
diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb
index 802799ccd..d8270498a 100644
--- a/app/services/delete_account_service.rb
+++ b/app/services/delete_account_service.rb
@@ -4,6 +4,7 @@ class DeleteAccountService < BaseService
include Payloadable
ASSOCIATIONS_ON_SUSPEND = %w(
+ account_notes
account_pins
active_relationships
aliases
@@ -34,6 +35,7 @@ class DeleteAccountService < BaseService
# by foreign keys, making them safe to delete without loading
# into memory
ASSOCIATIONS_WITHOUT_SIDE_EFFECTS = %w(
+ account_notes
account_pins
aliases
conversation_mutes
@@ -188,8 +190,7 @@ class DeleteAccountService < BaseService
ids = favourites.pluck(:status_id)
StatusStat.where(status_id: ids).update_all('favourites_count = GREATEST(0, favourites_count - 1)')
Chewy.strategy.current.update(StatusesIndex::Status, ids) if Chewy.enabled?
- # Rails.cache.delete_multi would be better, but we don't have it yet
- ids.each { |id| Rails.cache.delete("statuses/#{id}") }
+ Rails.cache.delete_multi(ids.map { |id| "statuses/#{id}" })
favourites.delete_all
end
end
diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index 7efa31054..5732ce8ac 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -2,12 +2,13 @@
class FetchLinkCardService < BaseService
URL_PATTERN = %r{
- ( # $1 URL
- (https?:\/\/) # $2 Protocol (required)
- (#{Twitter::Regex[:valid_domain]}) # $3 Domain(s)
- (?::(#{Twitter::Regex[:valid_port_number]}))? # $4 Port number (optional)
- (/#{Twitter::Regex[:valid_url_path]}*)? # $5 URL Path and anchor
- (\?#{Twitter::Regex[:valid_url_query_chars]}*#{Twitter::Regex[:valid_url_query_ending_chars]})? # $6 Query String
+ (#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceeding chars
+ ( # $2 URL
+ (https?:\/\/) # $3 Protocol (required)
+ (#{Twitter::TwitterText::Regex[:valid_domain]}) # $4 Domain(s)
+ (?::(#{Twitter::TwitterText::Regex[:valid_port_number]}))? # $5 Port number (optional)
+ (/#{Twitter::TwitterText::Regex[:valid_url_path]}*)? # $6 URL Path and anchor
+ (\?#{Twitter::TwitterText::Regex[:valid_url_query_chars]}*#{Twitter::TwitterText::Regex[:valid_url_query_ending_chars]})? # $7 Query String
)
}iox
@@ -47,11 +48,11 @@ class FetchLinkCardService < BaseService
Request.new(:get, @url).add_headers('Accept' => 'text/html', 'User-Agent' => Mastodon::Version.user_agent + ' Bot').perform do |res|
if res.code == 200 && res.mime_type == 'text/html'
- @html = res.body_with_limit
@html_charset = res.charset
+ @html = res.body_with_limit
else
- @html = nil
@html_charset = nil
+ @html = nil
end
end
end
@@ -63,11 +64,11 @@ class FetchLinkCardService < BaseService
def parse_urls
if @status.local?
- urls = @status.text.scan(URL_PATTERN).map { |array| Addressable::URI.parse(array[0]).normalize }
+ urls = @status.text.scan(URL_PATTERN).map { |array| Addressable::URI.parse(array[1]).normalize }
else
html = Nokogiri::HTML(@status.text)
links = html.css('a')
- urls = links.map { |a| Addressable::URI.parse(a['href']) unless skip_link?(a) }.compact.map(&:normalize).compact
+ urls = links.filter_map { |a| Addressable::URI.parse(a['href']) unless skip_link?(a) }.filter_map(&:normalize)
end
urls.reject { |uri| bad_url?(uri) }.first
@@ -174,6 +175,6 @@ class FetchLinkCardService < BaseService
end
def lock_options
- { redis: Redis.current, key: "fetch:#{@url}" }
+ { redis: Redis.current, key: "fetch:#{@url}", autorelease: 15.minutes.seconds }
end
end
diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb
index 67e33875c..60be9b9dc 100644
--- a/app/services/fetch_oembed_service.rb
+++ b/app/services/fetch_oembed_service.rb
@@ -38,7 +38,17 @@ class FetchOEmbedService
return if @endpoint_url.blank?
- @endpoint_url = (Addressable::URI.parse(@url) + @endpoint_url).to_s
+ @endpoint_url = begin
+ base_url = Addressable::URI.parse(@url)
+
+ # If the OEmbed endpoint is given as http but the URL we opened
+ # was served over https, we can assume OEmbed will be available
+ # through https as well
+
+ (base_url + @endpoint_url).tap do |absolute_url|
+ absolute_url.scheme = base_url.scheme if base_url.scheme == 'https'
+ end.to_s
+ end
cache_endpoint!
rescue Addressable::URI::InvalidURIError
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index b98f7011d..329262cca 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -3,10 +3,11 @@
class FollowService < BaseService
include Redisable
include Payloadable
+ include DomainControlHelper
# Follow a remote user, notify remote user about the follow
# @param [Account] source_account From which to follow
- # @param [String, Account] uri User URI to follow in the form of username@domain (or account record)
+ # @param [Account] target_account Account to follow
# @param [Hash] options
# @option [Boolean] :reblogs Whether or not to show reblogs, defaults to true
# @option [Boolean] :notify Whether to create notifications about new posts, defaults to false
@@ -15,7 +16,7 @@ class FollowService < BaseService
# @option [Boolean] :with_rate_limit
def call(source_account, target_account, options = {})
@source_account = source_account
- @target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true)
+ @target_account = target_account
@options = { bypass_locked: false, bypass_limit: false, with_rate_limit: false }.merge(options)
raise ActiveRecord::RecordNotFound if following_not_possible?
@@ -29,6 +30,11 @@ class FollowService < BaseService
ActivityTracker.increment('activity:interactions')
+ # When an account follows someone for the first time, avoid showing
+ # an empty home feed while the follow request is being processed
+ # and the feeds are being merged
+ mark_home_feed_as_partial! if @source_account.not_following_anyone?
+
if (@target_account.locked? && !@options[:bypass_locked]) || @source_account.silenced? || @target_account.activitypub?
request_follow!
elsif @target_account.local?
@@ -38,12 +44,16 @@ class FollowService < BaseService
private
+ def mark_home_feed_as_partial!
+ redis.set("account:#{@source_account.id}:regeneration", true, nx: true, ex: 1.day.seconds)
+ end
+
def following_not_possible?
@target_account.nil? || @target_account.id == @source_account.id || @target_account.suspended?
end
def following_not_allowed?
- @target_account.blocking?(@source_account) || @source_account.blocking?(@target_account) || @target_account.moved? || (!@target_account.local? && @target_account.ostatus?) || @source_account.domain_blocking?(@target_account.domain)
+ domain_not_allowed?(@target_account.domain) || @target_account.blocking?(@source_account) || @source_account.blocking?(@target_account) || @target_account.moved? || (!@target_account.local? && @target_account.ostatus?) || @source_account.domain_blocking?(@target_account.domain)
end
def change_follow_options!
diff --git a/app/services/import_service.rb b/app/services/import_service.rb
index 0c6ef2238..74ad5b79f 100644
--- a/app/services/import_service.rb
+++ b/app/services/import_service.rb
@@ -45,7 +45,7 @@ class ImportService < BaseService
items = @data.take(ROWS_PROCESSING_LIMIT).map { |row| row['#domain'].strip }
if @import.overwrite?
- presence_hash = items.each_with_object({}) { |id, mapping| mapping[id] = true }
+ presence_hash = items.index_with(true)
@account.domain_blocks.find_each do |domain_block|
if presence_hash[domain_block.domain]
@@ -96,7 +96,7 @@ class ImportService < BaseService
items = @data.take(ROWS_PROCESSING_LIMIT).map { |row| row['#uri'].strip }
if @import.overwrite?
- presence_hash = items.each_with_object({}) { |id, mapping| mapping[id] = true }
+ presence_hash = items.index_with(true)
@account.bookmarks.find_each do |bookmark|
if presence_hash[bookmark.status.uri]
@@ -107,12 +107,12 @@ class ImportService < BaseService
end
end
- statuses = items.map do |uri|
+ statuses = items.filter_map do |uri|
status = ActivityPub::TagManager.instance.uri_to_resource(uri, Status)
next if status.nil? && ActivityPub::TagManager.instance.local_uri?(uri)
status || ActivityPub::FetchRemoteStatusService.new.call(uri)
- end.compact
+ end
account_ids = statuses.map(&:account_id)
preloaded_relations = relations_map_for_account(@account, account_ids)
diff --git a/app/services/keys/claim_service.rb b/app/services/keys/claim_service.rb
index 672119130..69568a0d1 100644
--- a/app/services/keys/claim_service.rb
+++ b/app/services/keys/claim_service.rb
@@ -8,11 +8,13 @@ class Keys::ClaimService < BaseService
:key, :signature
def initialize(account, device_id, key_attributes = {})
- @account = account
- @device_id = device_id
- @key_id = key_attributes[:key_id]
- @key = key_attributes[:key]
- @signature = key_attributes[:signature]
+ super(
+ account: account,
+ device_id: device_id,
+ key_id: key_attributes[:key_id],
+ key: key_attributes[:key],
+ signature: key_attributes[:signature],
+ )
end
end
diff --git a/app/services/keys/query_service.rb b/app/services/keys/query_service.rb
index 286fbd834..ac3388bdc 100644
--- a/app/services/keys/query_service.rb
+++ b/app/services/keys/query_service.rb
@@ -7,8 +7,10 @@ class Keys::QueryService < BaseService
attributes :account, :devices
def initialize(account, devices)
- @account = account
- @devices = devices || []
+ super(
+ account: account,
+ devices: devices || [],
+ )
end
def find(device_id)
@@ -20,11 +22,13 @@ class Keys::QueryService < BaseService
attributes :device_id, :name, :identity_key, :fingerprint_key
def initialize(attributes = {})
- @device_id = attributes[:device_id]
- @name = attributes[:name]
- @identity_key = attributes[:identity_key]
- @fingerprint_key = attributes[:fingerprint_key]
- @claim_url = attributes[:claim_url]
+ super(
+ device_id: attributes[:device_id],
+ name: attributes[:name],
+ identity_key: attributes[:identity_key],
+ fingerprint_key: attributes[:fingerprint_key],
+ )
+ @claim_url = attributes[:claim_url]
end
def valid_claim_url?
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index fc187db40..a1b5ca1e3 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -127,7 +127,7 @@ class NotifyService < BaseService
def push_notification!
return if @notification.activity.nil?
- Redis.current.publish("timeline:#{@recipient.id}", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification)))
+ Redis.current.publish("timeline:#{@recipient.id}:notifications", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification)))
send_push_notifications!
end
diff --git a/app/services/process_hashtags_service.rb b/app/services/process_hashtags_service.rb
index e8e139b05..c42b79db8 100644
--- a/app/services/process_hashtags_service.rb
+++ b/app/services/process_hashtags_service.rb
@@ -8,8 +8,7 @@ class ProcessHashtagsService < BaseService
Tag.find_or_create_by_names(tags) do |tag|
status.tags << tag
records << tag
-
- TrendingTags.record_use!(tag, status.account, status.created_at) if status.public_visibility?
+ tag.use!(status.account, status: status, at_time: status.created_at) if status.public_visibility?
end
return unless status.distributable?
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index 570cd8272..ec4cb11f9 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -43,7 +43,6 @@ class ProcessMentionsService < BaseService
end
status.save!
- check_for_spam(status)
mentions.each { |mention| create_notification(mention) }
end
@@ -72,8 +71,4 @@ class ProcessMentionsService < BaseService
def resolve_account_service
ResolveAccountService.new
end
-
- def check_for_spam(status)
- SpamCheck.perform(status)
- end
end
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 6f018e24b..f41276de0 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -35,6 +35,7 @@ class ReblogService < BaseService
create_notification(reblog)
bump_potential_friendship(account, reblog)
+ record_use(account, reblog)
reblog
end
@@ -59,6 +60,16 @@ class ReblogService < BaseService
PotentialFriendshipTracker.record(account.id, reblog.reblog.account_id, :reblog)
end
+ def record_use(account, reblog)
+ return unless reblog.public_visibility?
+
+ original_status = reblog.reblog
+
+ original_status.tags.each do |tag|
+ tag.use!(account)
+ end
+ end
+
def build_json(reblog)
Oj.dump(serialize_payload(ActivityPub::ActivityPresenter.from_status(reblog), ActivityPub::ActivitySerializer, signer: reblog.account))
end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 764ed288d..9259c69d9 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -16,6 +16,8 @@ class RemoveStatusService < BaseService
@account = status.account
@options = options
+ @status.discard
+
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
remove_from_self if @account.local?
@@ -27,10 +29,7 @@ class RemoveStatusService < BaseService
# original object being removed implicitly removes reblogs
# of it. The Delete activity of the original is forwarded
# separately.
- if @account.local? && !@options[:original_removed]
- remove_from_remote_followers
- remove_from_remote_reach
- end
+ remove_from_remote_reach if @account.local? && !@options[:original_removed]
# Since reblogs don't mention anyone, don't get reblogged,
# favourited and don't contain their own media attachments
@@ -42,7 +41,6 @@ class RemoveStatusService < BaseService
remove_from_public
remove_from_media if @status.media_attachments.any?
remove_from_direct if status.direct_visibility?
- remove_from_spam_check
remove_media
end
@@ -85,13 +83,10 @@ class RemoveStatusService < BaseService
end
def remove_from_remote_reach
- return if @status.reblog?
-
- # People who got mentioned in the status, or who
- # reblogged it from someone else might not follow
- # the author and wouldn't normally receive the
- # delete notification - so here, we explicitly
- # send it to them
+ # Followers, relays, people who got mentioned in the status,
+ # or who reblogged it from someone else might not follow
+ # the author and wouldn't normally receive the delete
+ # notification - so here, we explicitly send it to them
status_reach_finder = StatusReachFinder.new(@status)
@@ -100,24 +95,6 @@ class RemoveStatusService < BaseService
end
end
- def remove_from_remote_followers
- ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url|
- [signed_activity_json, @account.id, inbox_url]
- end
-
- relay! if relayable?
- end
-
- def relayable?
- @status.public_visibility?
- end
-
- def relay!
- ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url|
- [signed_activity_json, @account.id, inbox_url]
- end
- end
-
def signed_activity_json
@signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account))
end
@@ -127,7 +104,7 @@ class RemoveStatusService < BaseService
# because once original status is gone, reblogs will disappear
# without us being able to do all the fancy stuff
- @status.reblogs.includes(:account).find_each do |reblog|
+ @status.reblogs.includes(:account).reorder(nil).find_each do |reblog|
RemoveStatusService.new.call(reblog, original_removed: true)
end
end
@@ -171,11 +148,7 @@ class RemoveStatusService < BaseService
@status.media_attachments.destroy_all
end
- def remove_from_spam_check
- redis.zremrangebyscore("spam_check:#{@status.account_id}", @status.id, @status.id)
- end
-
def lock_options
- { redis: Redis.current, key: "distribute:#{@status.id}" }
+ { redis: Redis.current, key: "distribute:#{@status.id}", autorelease: 5.minutes.seconds }
end
end
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index 9d9c7d6c9..bc0a8b464 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -10,6 +10,8 @@ class ReportService < BaseService
@comment = options.delete(:comment) || ''
@options = options
+ raise ActiveRecord::RecordNotFound if @target_account.suspended?
+
create_report!
notify_staff!
forward_to_origin! if !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward])
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index 3301aaf51..b266c019e 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -10,7 +10,7 @@ class ResolveAccountService < BaseService
# @param [String, Account] uri URI in the username@domain format or account record
# @param [Hash] options
# @option options [Boolean] :redirected Do not follow further Webfinger redirects
- # @option options [Boolean] :skip_webfinger Do not attempt to refresh account data
+ # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data
# @return [Account]
def call(uri, options = {})
return if uri.blank?
@@ -120,8 +120,9 @@ class ResolveAccountService < BaseService
def webfinger_update_due?
return false if @options[:check_delivery_availability] && !DeliveryFailureTracker.available?(@domain)
+ return false if @options[:skip_webfinger]
- @account.nil? || ((!@options[:skip_webfinger] || @account.ostatus?) && @account.possibly_stale?)
+ @account.nil? || @account.possibly_stale?
end
def activitypub_ready?
@@ -141,10 +142,11 @@ class ResolveAccountService < BaseService
end
def queue_deletion!
+ @account.suspend!(origin: :remote)
AccountDeletionWorker.perform_async(@account.id, reserve_username: false, skip_activitypub: true)
end
def lock_options
- { redis: Redis.current, key: "resolve:#{@username}@#{@domain}" }
+ { redis: Redis.current, key: "resolve:#{@username}@#{@domain}", autorelease: 15.minutes.seconds }
end
end
diff --git a/app/services/search_service.rb b/app/services/search_service.rb
index 19500a8d4..1a76cbb38 100644
--- a/app/services/search_service.rb
+++ b/app/services/search_service.rb
@@ -72,7 +72,7 @@ class SearchService < BaseService
end
def url_query?
- @resolve && @query =~ /\Ahttps?:\/\//
+ @resolve && /\Ahttps?:\/\//.match?(@query)
end
def url_resource_results
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb
index 9f4da91d4..b8dc8d5e0 100644
--- a/app/services/suspend_account_service.rb
+++ b/app/services/suspend_account_service.rb
@@ -42,7 +42,13 @@ class SuspendAccountService < BaseService
end
def distribute_update_actor!
- ActivityPub::UpdateDistributionWorker.perform_async(@account.id) if @account.local?
+ return unless @account.local?
+
+ account_reach_finder = AccountReachFinder.new(@account)
+
+ ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url|
+ [signed_activity_json, @account.id, inbox_url]
+ end
end
def unmerge_from_home_timelines!
@@ -90,4 +96,8 @@ class SuspendAccountService < BaseService
end
end
end
+
+ def signed_activity_json
+ @signed_activity_json ||= Oj.dump(serialize_payload(@account, ActivityPub::UpdateSerializer, signer: @account))
+ end
end
diff --git a/app/services/unsuspend_account_service.rb b/app/services/unsuspend_account_service.rb
index ce9ee48ed..39d8a6ba7 100644
--- a/app/services/unsuspend_account_service.rb
+++ b/app/services/unsuspend_account_service.rb
@@ -1,17 +1,19 @@
# frozen_string_literal: true
class UnsuspendAccountService < BaseService
+ include Payloadable
def call(account)
@account = account
unsuspend!
refresh_remote_account!
- return if @account.nil?
+ return if @account.nil? || @account.suspended?
merge_into_home_timelines!
merge_into_list_timelines!
publish_media_attachments!
+ distribute_update_actor!
end
private
@@ -36,6 +38,16 @@ class UnsuspendAccountService < BaseService
# @account would now be nil.
end
+ def distribute_update_actor!
+ return unless @account.local?
+
+ account_reach_finder = AccountReachFinder.new(@account)
+
+ ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url|
+ [signed_activity_json, @account.id, inbox_url]
+ end
+ end
+
def merge_into_home_timelines!
@account.followers_for_local_distribution.find_each do |follower|
FeedManager.instance.merge_into_home(@account, follower)
@@ -81,4 +93,8 @@ class UnsuspendAccountService < BaseService
end
end
end
+
+ def signed_activity_json
+ @signed_activity_json ||= Oj.dump(serialize_payload(@account, ActivityPub::UpdateSerializer, signer: @account))
+ end
end
diff --git a/app/validators/blacklisted_email_validator.rb b/app/validators/blacklisted_email_validator.rb
index 16e3abf12..eb66ad93d 100644
--- a/app/validators/blacklisted_email_validator.rb
+++ b/app/validators/blacklisted_email_validator.rb
@@ -2,30 +2,29 @@
class BlacklistedEmailValidator < ActiveModel::Validator
def validate(user)
- return if user.valid_invitation?
+ return if user.valid_invitation? || user.email.blank?
@email = user.email
- user.errors.add(:email, I18n.t('users.blocked_email_provider')) if blocked_email?
+ user.errors.add(:email, :blocked) if blocked_email_provider?
+ user.errors.add(:email, :taken) if blocked_canonical_email?
end
private
- def blocked_email?
- on_blacklist? || not_on_whitelist?
+ def blocked_email_provider?
+ disallowed_through_email_domain_block? || disallowed_through_configuration? || not_allowed_through_configuration?
end
- def on_blacklist?
- return true if EmailDomainBlock.block?(@email)
- return false if Rails.configuration.x.email_domains_blacklist.blank?
-
- domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
- regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
-
- @email =~ regexp
+ def blocked_canonical_email?
+ CanonicalEmailBlock.block?(@email)
end
- def not_on_whitelist?
+ def disallowed_through_email_domain_block?
+ EmailDomainBlock.block?(@email)
+ end
+
+ def not_allowed_through_configuration?
return false if Rails.configuration.x.email_domains_whitelist.blank?
domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.')
@@ -33,4 +32,13 @@ class BlacklistedEmailValidator < ActiveModel::Validator
@email !~ regexp
end
+
+ def disallowed_through_configuration?
+ return false if Rails.configuration.x.email_domains_blacklist.blank?
+
+ domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
+ regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
+
+ regexp.match?(@email)
+ end
end
diff --git a/app/validators/email_mx_validator.rb b/app/validators/email_mx_validator.rb
index ef1554494..dceef5029 100644
--- a/app/validators/email_mx_validator.rb
+++ b/app/validators/email_mx_validator.rb
@@ -4,16 +4,19 @@ require 'resolv'
class EmailMxValidator < ActiveModel::Validator
def validate(user)
+ return if user.email.blank?
+
domain = get_domain(user.email)
- if domain.nil?
- user.errors.add(:email, I18n.t('users.invalid_email'))
- else
+ if domain.blank?
+ user.errors.add(:email, :invalid)
+ elsif !on_allowlist?(domain)
ips, hostnames = resolve_mx(domain)
+
if ips.empty?
- user.errors.add(:email, I18n.t('users.invalid_email_mx'))
+ user.errors.add(:email, :unreachable)
elsif on_blacklist?(hostnames + ips)
- user.errors.add(:email, I18n.t('users.blocked_email_provider'))
+ user.errors.add(:email, :blocked)
end
end
end
@@ -30,6 +33,12 @@ class EmailMxValidator < ActiveModel::Validator
nil
end
+ def on_allowlist?(domain)
+ return false if Rails.configuration.x.email_domains_whitelist.blank?
+
+ Rails.configuration.x.email_domains_whitelist.include?(domain)
+ end
+
def resolve_mx(domain)
hostnames = []
ips = []
diff --git a/app/validators/existing_username_validator.rb b/app/validators/existing_username_validator.rb
index b31d09827..8f7d96b8e 100644
--- a/app/validators/existing_username_validator.rb
+++ b/app/validators/existing_username_validator.rb
@@ -4,11 +4,25 @@ class ExistingUsernameValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
return if value.blank?
+ usernames_and_domains = begin
+ value.split(',').map do |str|
+ username, domain = str.strip.gsub(/\A@/, '').split('@')
+ domain = nil if TagManager.instance.local_domain?(domain)
+
+ next if username.blank?
+
+ [str, username, domain]
+ end.compact
+ end
+
+ usernames_with_no_accounts = usernames_and_domains.filter_map do |(str, username, domain)|
+ str unless Account.find_remote(username, domain)
+ end
+
if options[:multiple]
- missing_usernames = value.split(',').map { |username| username.strip.gsub(/\A@/, '') }.map { |username| username unless Account.find_local(username) }.compact
- record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: missing_usernames.join(', '))) if missing_usernames.any?
+ record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: usernames_with_no_accounts.join(', '))) if usernames_with_no_accounts.any?
else
- record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) unless Account.find_local(value.strip.gsub(/\A@/, ''))
+ record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) if usernames_with_no_accounts.any? || usernames_and_domains.size > 1
end
end
end
diff --git a/app/validators/html_validator.rb b/app/validators/html_validator.rb
index 1c9cd303c..b85b9769f 100644
--- a/app/validators/html_validator.rb
+++ b/app/validators/html_validator.rb
@@ -15,6 +15,6 @@ class HtmlValidator < ActiveModel::EachValidator
def html_errors(str)
fragment = Nokogiri::HTML.fragment(options[:wrap_with] ? "<#{options[:wrap_with]}>#{str}#{options[:wrap_with]}>" : str)
- fragment.errors.select { |error| ERROR_RE =~ error.message }
+ fragment.errors.select { |error| ERROR_RE.match?(error.message) }
end
end
diff --git a/app/validators/note_length_validator.rb b/app/validators/note_length_validator.rb
index 5ff6df6df..554ad49ce 100644
--- a/app/validators/note_length_validator.rb
+++ b/app/validators/note_length_validator.rb
@@ -2,7 +2,7 @@
class NoteLengthValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
- record.errors.add(attribute, I18n.t('statuses.over_character_limit', max: options[:maximum])) if too_long?(value)
+ record.errors.add(attribute, :too_long, message: I18n.t('statuses.over_character_limit', max: options[:maximum]), count: options[:maximum]) if too_long?(value)
end
private
@@ -15,7 +15,7 @@ class NoteLengthValidator < ActiveModel::EachValidator
return '' if value.nil?
value.dup.tap do |new_text|
- new_text.gsub!(FetchLinkCardService::URL_PATTERN, 'x' * 23)
+ new_text.gsub!(FetchLinkCardService::URL_PATTERN, StatusLengthValidator::URL_PLACEHOLDER)
new_text.gsub!(Account::MENTION_RE, '@\2')
end
end
diff --git a/app/validators/poll_validator.rb b/app/validators/poll_validator.rb
index 8259a62e5..1aaf5a5d0 100644
--- a/app/validators/poll_validator.rb
+++ b/app/validators/poll_validator.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
class PollValidator < ActiveModel::Validator
- MAX_OPTIONS = 5
- MAX_OPTION_CHARS = 100
+ MAX_OPTIONS = (ENV['MAX_POLL_OPTIONS'] || 5).to_i
+ MAX_OPTION_CHARS = (ENV['MAX_POLL_OPTION_CHARS'] || 100).to_i
MAX_EXPIRATION = 1.month.freeze
MIN_EXPIRATION = 5.minutes.freeze
diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb
index 92ee5e643..2a3ac8862 100644
--- a/app/validators/status_length_validator.rb
+++ b/app/validators/status_length_validator.rb
@@ -2,6 +2,8 @@
class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = (ENV['MAX_TOOT_CHARS'] || 500).to_i
+ URL_PLACEHOLDER_CHARS = 23
+ URL_PLACEHOLDER = "\1#{'x' * URL_PLACEHOLDER_CHARS}"
def validate(status)
return unless status.local? && !status.reblog?
@@ -28,7 +30,7 @@ class StatusLengthValidator < ActiveModel::Validator
return '' if @status.text.nil?
@status.text.dup.tap do |new_text|
- new_text.gsub!(FetchLinkCardService::URL_PATTERN, 'x' * 23)
+ new_text.gsub!(FetchLinkCardService::URL_PATTERN, URL_PLACEHOLDER)
new_text.gsub!(Account::MENTION_RE, '@\2')
end
end
diff --git a/app/validators/unique_username_validator.rb b/app/validators/unique_username_validator.rb
index f87eb06ba..09c8fadb5 100644
--- a/app/validators/unique_username_validator.rb
+++ b/app/validators/unique_username_validator.rb
@@ -4,7 +4,7 @@
class UniqueUsernameValidator < ActiveModel::Validator
def validate(account)
- return if account.username.nil?
+ return if account.username.blank?
normalized_username = account.username.downcase
normalized_domain = account.domain&.downcase
diff --git a/app/validators/unreserved_username_validator.rb b/app/validators/unreserved_username_validator.rb
index 634ceb06e..974f3ba62 100644
--- a/app/validators/unreserved_username_validator.rb
+++ b/app/validators/unreserved_username_validator.rb
@@ -3,9 +3,10 @@
class UnreservedUsernameValidator < ActiveModel::Validator
def validate(account)
@username = account.username
- return if @username.nil?
- account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?
+ return if @username.blank?
+
+ account.errors.add(:username, :reserved) if reserved_username?
end
private
diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb
index d95a03fbf..f50abbe24 100644
--- a/app/validators/url_validator.rb
+++ b/app/validators/url_validator.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class UrlValidator < ActiveModel::EachValidator
+class URLValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors.add(attribute, I18n.t('applications.invalid_url')) unless compliant?(value)
end
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index 78f54ec5a..a4a79c4e7 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -16,11 +16,11 @@
.row__information-board
.information-board__section
%span= t 'about.user_count_before'
- %strong= number_to_human @instance_presenter.user_count, strip_insignificant_zeros: true
+ %strong= friendly_number_to_human @instance_presenter.user_count
%span= t 'about.user_count_after', count: @instance_presenter.user_count
.information-board__section
%span= t 'about.status_count_before'
- %strong= number_to_human @instance_presenter.status_count, strip_insignificant_zeros: true
+ %strong= friendly_number_to_human @instance_presenter.status_count
%span= t 'about.status_count_after', count: @instance_presenter.status_count
.row__mascot
.landing-page__mascot
@@ -42,11 +42,21 @@
.column-3
= render 'application/flashes'
- - if @contents.blank? && (!display_blocks? || @blocks&.empty?)
+ - if @contents.blank? && @rules.empty? && (!display_blocks? || @blocks&.empty?)
= nothing_here
- else
.box-widget
.rich-formatting
+ - unless @rules.empty?
+ %h2#rules= t('about.rules')
+
+ %p= t('about.rules_html')
+
+ %ol.rules-list
+ - @rules.each do |rule|
+ %li
+ .rules-list__text= rule.text
+
= @contents.html_safe
- if display_blocks? && !@blocks.empty?
@@ -69,6 +79,9 @@
.column-4
%ul.table-of-contents
+ - unless @rules.empty?
+ %li= link_to t('about.rules'), '#rules'
+
- @table_of_contents.each do |item|
%li
= link_to item.title, "##{item.anchor}"
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 565c4ed59..6ae9e6ae0 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -70,10 +70,10 @@
.hero-widget__counters__wrapper
.hero-widget__counter
- %strong= number_to_human @instance_presenter.user_count, strip_insignificant_zeros: true
+ %strong= friendly_number_to_human @instance_presenter.user_count
%span= t 'about.user_count_after', count: @instance_presenter.user_count
.hero-widget__counter
- %strong= number_to_human @instance_presenter.active_user_count, strip_insignificant_zeros: true
+ %strong= friendly_number_to_human @instance_presenter.active_user_count
%span
= t 'about.active_count_after'
%abbr{ title: t('about.active_footnote') } *
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 52fb0d946..d583edbd2 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -1,9 +1,9 @@
.public-account-header{:class => ("inactive" if account.moved?)}
.public-account-header__image
- = image_tag (current_account&.user&.setting_auto_play_gif ? account.header_original_url : account.header_static_url), class: 'parallax'
+ = image_tag (prefers_autoplay? ? account.header_original_url : account.header_static_url), class: 'parallax'
.public-account-header__bar
= link_to short_account_url(account), class: 'avatar' do
- = image_tag (current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url), id: 'profile_page_avatar', data: {original: full_asset_url(account.avatar_original_url), static: full_asset_url(account.avatar_static_url), autoplay: current_account&.user&.setting_auto_play_gif}
+ = image_tag (prefers_autoplay? ? account.avatar_original_url : account.avatar_static_url), id: 'profile_page_avatar', data: { original: full_asset_url(account.avatar_original_url), static: full_asset_url(account.avatar_static_url), autoplay: prefers_autoplay? }
.public-account-header__tabs
.public-account-header__tabs__name
%h1
@@ -15,17 +15,17 @@
.details-counters
.counter{ class: active_nav_class(short_account_url(account), short_account_with_replies_url(account), short_account_media_url(account)) }
= link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
- %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
+ %span.counter-number= friendly_number_to_human account.statuses_count
%span.counter-label= t('accounts.posts', count: account.statuses_count)
.counter{ class: active_nav_class(account_following_index_url(account)) }
= link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do
- %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
+ %span.counter-number= friendly_number_to_human account.following_count
%span.counter-label= t('accounts.following', count: account.following_count)
.counter{ class: active_nav_class(account_followers_url(account)) }
= link_to account_followers_url(account), title: hide_followers_count?(account) ? nil : number_with_delimiter(account.followers_count) do
- %span.counter-number= hide_followers_count?(account) ? '-' : (number_to_human account.followers_count, strip_insignificant_zeros: true)
+ %span.counter-number= hide_followers_count?(account) ? '-' : (friendly_number_to_human account.followers_count)
%span.counter-label= t('accounts.followers', count: account.followers_count)
.spacer
.public-account-header__tabs__tabs__buttons
@@ -36,8 +36,8 @@
.public-account-header__extra__links
= link_to account_following_index_url(account) do
- %strong= number_to_human account.following_count, strip_insignificant_zeros: true
+ %strong= friendly_number_to_human account.following_count
= t('accounts.following', count: account.following_count)
= link_to account_followers_url(account) do
- %strong= hide_followers_count?(account) ? '-' : (number_to_human account.followers_count, strip_insignificant_zeros: true)
+ %strong= hide_followers_count?(account) ? '-' : (friendly_number_to_human account.followers_count)
= t('accounts.followers', count: account.followers_count)
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index aa2c83dec..ae76c074f 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -86,6 +86,6 @@
= t('accounts.nothing_here')
- else
%time.formatted{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at
- .trends__item__current= number_to_human featured_tag.statuses_count, strip_insignificant_zeros: true
+ .trends__item__current= friendly_number_to_human featured_tag.statuses_count
= render 'application/sidebar'
diff --git a/app/views/admin/account_actions/new.html.haml b/app/views/admin/account_actions/new.html.haml
index aa88b1448..ca4f9663f 100644
--- a/app/views/admin/account_actions/new.html.haml
+++ b/app/views/admin/account_actions/new.html.haml
@@ -5,7 +5,7 @@
= f.input :report_id, as: :hidden
.fields-group
- = f.input :type, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { I18n.t("simple_form.labels.admin_account_action.types.#{type}")}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.acct)
+ = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')])}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.acct)
- if @account.local?
%hr.spacer/
diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml
index 8eac226e0..398ab4bb4 100644
--- a/app/views/admin/accounts/index.html.haml
+++ b/app/views/admin/accounts/index.html.haml
@@ -51,6 +51,6 @@
%th= t('admin.accounts.most_recent_activity')
%th
%tbody
- = render @accounts
+ = render partial: 'account', collection: @accounts
= paginate @accounts
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index 27e1f80a7..66eb49342 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -129,6 +129,27 @@
- else
= t('admin.accounts.confirming')
%td= table_link_to 'refresh', t('admin.accounts.resend_confirmation.send'), resend_admin_account_confirmation_path(@account.id), method: :post if can?(:confirm, @account.user)
+ %tr
+ %th{ rowspan: can?(:reset_password, @account.user) ? 2 : 1 }= t('admin.accounts.security')
+ %td{ rowspan: can?(:reset_password, @account.user) ? 2 : 1 }
+ - if @account.user&.two_factor_enabled?
+ = t 'admin.accounts.security_measures.password_and_2fa'
+ - elsif @account.user&.skip_sign_in_token?
+ = t 'admin.accounts.security_measures.only_password'
+ - else
+ = t 'admin.accounts.security_measures.password_and_sign_in_token'
+ %td
+ - if @account.user&.two_factor_enabled?
+ = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(@account.user.id), method: :delete if can?(:disable_2fa, @account.user)
+ - elsif @account.user&.skip_sign_in_token?
+ = table_link_to 'lock', t('admin.accounts.enable_sign_in_token_auth'), admin_user_sign_in_token_authentication_path(@account.user.id), method: :post if can?(:enable_sign_in_token_auth, @account.user)
+ - else
+ = table_link_to 'unlock', t('admin.accounts.disable_sign_in_token_auth'), admin_user_sign_in_token_authentication_path(@account.user.id), method: :delete if can?(:disable_sign_in_token_auth, @account.user)
+
+ - if can?(:reset_password, @account.user)
+ %tr
+ %td
+ = table_link_to 'key', t('admin.accounts.reset_password'), admin_account_reset_path(@account.id), method: :create, data: { confirm: t('admin.accounts.are_you_sure') }
%tr
%th= t('simple_form.labels.defaults.locale')
@@ -221,9 +242,6 @@
%div
- if @account.local?
- = link_to t('admin.accounts.reset_password'), admin_account_reset_path(@account.id), method: :create, class: 'button' if can?(:reset_password, @account.user)
- - if @account.user&.otp_required_for_login?
- = link_to t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(@account.user.id), method: :delete, class: 'button' if can?(:disable_2fa, @account.user)
- if !@account.memorial? && @account.user_approved?
= link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:memorialize, @account)
- else
diff --git a/app/views/admin/action_logs/_action_log.html.haml b/app/views/admin/action_logs/_action_log.html.haml
index 59905f341..a2fce2d11 100644
--- a/app/views/admin/action_logs/_action_log.html.haml
+++ b/app/views/admin/action_logs/_action_log.html.haml
@@ -4,6 +4,6 @@
= image_tag action_log.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar'
.log-entry__content
.log-entry__title
- = t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target')).html_safe
+ = t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target'))
.log-entry__timestamp
%time.formatted{ datetime: action_log.created_at.iso8601 }
diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml
index 937664c4b..347eca166 100644
--- a/app/views/admin/action_logs/index.html.haml
+++ b/app/views/admin/action_logs/index.html.haml
@@ -20,6 +20,6 @@
= t 'admin.action_logs.empty'
- else
.announcements-list
- = render @action_logs
+ = render partial: 'action_log', collection: @action_logs
= paginate @action_logs
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index 249e12563..bd36580e6 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -1,46 +1,54 @@
- content_for :page_title do
= t('admin.dashboard.title')
+- unless @system_checks.empty?
+ .flash-message-stack
+ - @system_checks.each do |message|
+ .flash-message.warning
+ = t("admin.system_checks.#{message.key}.message_html", value: message.value ? content_tag(:strong, message.value) : nil)
+ - if message.action
+ = link_to t("admin.system_checks.#{message.key}.action"), message.action
+
.dashboard__counters
%div
= link_to admin_accounts_url(local: 1, recent: 1) do
.dashboard__counters__num{ title: number_with_delimiter(@users_count, strip_insignificant_zeros: true) }
- = number_to_human @users_count, strip_insignificant_zeros: true
+ = friendly_number_to_human @users_count
.dashboard__counters__label= t 'admin.dashboard.total_users'
%div
%div
.dashboard__counters__num{ title: number_with_delimiter(@registrations_week, strip_insignificant_zeros: true) }
- = number_to_human @registrations_week, strip_insignificant_zeros: true
+ = friendly_number_to_human @registrations_week
.dashboard__counters__label= t 'admin.dashboard.week_users_new'
%div
%div
.dashboard__counters__num{ title: number_with_delimiter(@logins_week, strip_insignificant_zeros: true) }
- = number_to_human @logins_week, strip_insignificant_zeros: true
+ = friendly_number_to_human @logins_week
.dashboard__counters__label= t 'admin.dashboard.week_users_active'
%div
= link_to admin_pending_accounts_path do
.dashboard__counters__num{ title: number_with_delimiter(@pending_users_count, strip_insignificant_zeros: true) }
- = number_to_human @pending_users_count, strip_insignificant_zeros: true
+ = friendly_number_to_human @pending_users_count
.dashboard__counters__label= t 'admin.dashboard.pending_users'
%div
= link_to admin_reports_url do
.dashboard__counters__num{ title: number_with_delimiter(@reports_count, strip_insignificant_zeros: true) }
- = number_to_human @reports_count, strip_insignificant_zeros: true
+ = friendly_number_to_human @reports_count
.dashboard__counters__label= t 'admin.dashboard.open_reports'
%div
= link_to admin_tags_path(pending_review: '1') do
.dashboard__counters__num{ title: number_with_delimiter(@pending_tags_count, strip_insignificant_zeros: true) }
- = number_to_human @pending_tags_count, strip_insignificant_zeros: true
+ = friendly_number_to_human @pending_tags_count
.dashboard__counters__label= t 'admin.dashboard.pending_tags'
%div
%div
.dashboard__counters__num{ title: number_with_delimiter(@interactions_week, strip_insignificant_zeros: true) }
- = number_to_human @interactions_week, strip_insignificant_zeros: true
+ = friendly_number_to_human @interactions_week
.dashboard__counters__label= t 'admin.dashboard.week_interactions'
%div
= link_to sidekiq_url do
.dashboard__counters__num{ title: number_with_delimiter(@queue_backlog, strip_insignificant_zeros: true) }
- = number_to_human @queue_backlog, strip_insignificant_zeros: true
+ = friendly_number_to_human @queue_backlog
.dashboard__counters__label= t 'admin.dashboard.backlog'
.dashboard__widgets
@@ -71,8 +79,6 @@
= feature_hint(link_to(t('admin.dashboard.trends'), edit_admin_settings_path), @trends_enabled)
%li
= feature_hint(link_to(t('admin.dashboard.feature_relay'), admin_relays_path), @relay_enabled)
- %li
- = feature_hint(link_to(t('admin.dashboard.feature_spam_check'), edit_admin_settings_path), @spam_check_enabled)
.dashboard__widgets__versions
%div
diff --git a/app/views/admin/email_domain_blocks/index.html.haml b/app/views/admin/email_domain_blocks/index.html.haml
index 6015cfac0..fa5d86b67 100644
--- a/app/views/admin/email_domain_blocks/index.html.haml
+++ b/app/views/admin/email_domain_blocks/index.html.haml
@@ -14,6 +14,6 @@
%th= t('admin.email_domain_blocks.domain')
%th
%tbody
- = render @email_domain_blocks
+ = render partial: 'email_domain_block', collection: @email_domain_blocks
= paginate @email_domain_blocks
diff --git a/app/views/admin/follow_recommendations/_account.html.haml b/app/views/admin/follow_recommendations/_account.html.haml
new file mode 100644
index 000000000..00196dd01
--- /dev/null
+++ b/app/views/admin/follow_recommendations/_account.html.haml
@@ -0,0 +1,20 @@
+.batch-table__row
+ %label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox
+ = f.check_box :account_ids, { multiple: true, include_hidden: false }, account.id
+ .batch-table__row__content.batch-table__row__content--unpadded
+ %table.accounts-table
+ %tbody
+ %tr
+ %td= account_link_to account
+ %td.accounts-table__count.optional
+ = friendly_number_to_human account.statuses_count
+ %small= t('accounts.posts', count: account.statuses_count).downcase
+ %td.accounts-table__count.optional
+ = friendly_number_to_human account.followers_count
+ %small= t('accounts.followers', count: account.followers_count).downcase
+ %td.accounts-table__count
+ - if account.last_status_at.present?
+ %time.time-ago{ datetime: account.last_status_at.to_date.iso8601, title: l(account.last_status_at.to_date) }= l account.last_status_at
+ - else
+ \-
+ %small= t('accounts.last_active')
diff --git a/app/views/admin/follow_recommendations/show.html.haml b/app/views/admin/follow_recommendations/show.html.haml
new file mode 100644
index 000000000..2878f07d7
--- /dev/null
+++ b/app/views/admin/follow_recommendations/show.html.haml
@@ -0,0 +1,38 @@
+- content_for :page_title do
+ = t('admin.follow_recommendations.title')
+
+%p= t('admin.follow_recommendations.description_html')
+
+%hr.spacer/
+
+= form_tag admin_follow_recommendations_path, method: 'GET', class: 'simple_form' do
+ .filters
+ .filter-subset.filter-subset--with-select
+ %strong= t('admin.follow_recommendations.language')
+ .input.select.optional
+ = select_tag :language, options_for_select(I18n.available_locales.map { |key| [human_locale(key), key]}, @language)
+
+ .filter-subset
+ %strong= t('admin.follow_recommendations.status')
+ %ul
+ %li= filter_link_to t('admin.accounts.moderation.active'), status: nil
+ %li= filter_link_to t('admin.follow_recommendations.suppressed'), status: 'suppressed'
+
+= form_for(@form, url: admin_follow_recommendations_path, method: :patch) do |f|
+ - RelationshipFilter::KEYS.each do |key|
+ = hidden_field_tag key, params[key] if params[key].present?
+
+ .batch-table
+ .batch-table__toolbar
+ %label.batch-table__toolbar__select.batch-checkbox-all
+ = check_box_tag :batch_checkbox_all, nil, false
+ .batch-table__toolbar__actions
+ - if params[:status].blank? && can?(:suppress, :follow_recommendation)
+ = f.button safe_join([fa_icon('times'), t('admin.follow_recommendations.suppress')]), name: :suppress, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') }
+ - if params[:status] == 'suppressed' && can?(:unsuppress, :follow_recommendation)
+ = f.button safe_join([fa_icon('plus'), t('admin.follow_recommendations.unsuppress')]), name: :unsuppress, class: 'table-action-link', type: :submit
+ .batch-table__body
+ - if @accounts.empty?
+ = nothing_here 'nothing-here--under-tabs'
+ - else
+ = render partial: 'account', collection: @accounts, locals: { f: f }
diff --git a/app/views/admin/instances/_exhausted_deliveries_days.haml b/app/views/admin/instances/_exhausted_deliveries_days.haml
new file mode 100644
index 000000000..e581f542d
--- /dev/null
+++ b/app/views/admin/instances/_exhausted_deliveries_days.haml
@@ -0,0 +1,2 @@
+%li.negative-hint
+ = l(exhausted_deliveries_days)
diff --git a/app/views/admin/instances/_instance.html.haml b/app/views/admin/instances/_instance.html.haml
index 188d0d984..dc81007ac 100644
--- a/app/views/admin/instances/_instance.html.haml
+++ b/app/views/admin/instances/_instance.html.haml
@@ -22,4 +22,12 @@
= t('admin.accounts.whitelisted')
- else
= t('admin.accounts.no_limits_imposed')
- .trends__item__current{ title: t('admin.instances.known_accounts', count: instance.accounts_count) }= number_to_human instance.accounts_count, strip_insignificant_zeros: true
+ - if instance.failure_days
+ = ' / '
+ %span.negative-hint
+ = t('admin.instances.delivery.warning_message', count: instance.failure_days)
+ - if instance.unavailable_domain
+ = ' / '
+ %span.negative-hint
+ = t('admin.instances.delivery.unavailable_message')
+ .trends__item__current{ title: t('admin.instances.known_accounts', count: instance.accounts_count) }= friendly_number_to_human instance.accounts_count
diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml
index 5f20e7ec0..797948d94 100644
--- a/app/views/admin/instances/index.html.haml
+++ b/app/views/admin/instances/index.html.haml
@@ -16,6 +16,24 @@
- unless whitelist_mode?
%li= filter_link_to t('admin.instances.moderation.limited'), limited: '1'
+ .filter-subset
+ %strong= t('admin.instances.delivery.title')
+ %ul
+ %li= filter_link_to t('admin.instances.delivery.all'), warning: nil, unavailable: nil
+ %li= filter_link_to t('admin.instances.delivery.warning'), warning: '1', unavailable: nil
+ %li= filter_link_to t('admin.instances.delivery.unavailable'), warning: nil, unavailable: '1'
+
+ .back-link
+ = link_to admin_instances_path() do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_all')
+ = link_to admin_instances_path(limited: 1) do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_limited')
+ = link_to admin_instances_path(warning: 1) do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_warning')
+
- unless whitelist_mode?
= form_tag admin_instances_url, method: 'GET', class: 'simple_form' do
.fields-group
@@ -36,6 +54,6 @@
%div.muted-hint.center-text
= t 'admin.instances.empty'
- else
- = render @instances
+ = render partial: 'instance', collection: @instances
= paginate @instances
diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml
index 0b9382771..462529338 100644
--- a/app/views/admin/instances/show.html.haml
+++ b/app/views/admin/instances/show.html.haml
@@ -1,6 +1,18 @@
- content_for :page_title do
= @instance.domain
+.filters
+ .back-link
+ = link_to admin_instances_path() do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_all')
+ = link_to admin_instances_path(limited: 1) do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_limited')
+ = link_to admin_instances_path(warning: 1) do
+ %i.fa.fa-chevron-left.fa-fw
+ = t('admin.instances.back_to_warning')
+
.dashboard__counters
%div
= link_to admin_accounts_path(remote: '1', by_domain: @instance.domain) do
@@ -48,6 +60,13 @@
= simple_format(h(@instance.public_comment))
.speech-bubble__owner= t 'admin.instances.public_comment'
+- unless @exhausted_deliveries_days.empty?
+ %h4= t 'admin.instances.delivery_error_days'
+ %ul
+ = render partial: 'exhausted_deliveries_days', collection: @exhausted_deliveries_days
+ %p.hint
+ = t 'admin.instances.delivery_error_hint', count: DeliveryFailureTracker::FAILURE_DAYS_THRESHOLD
+
%hr.spacer/
%div.action-buttons
@@ -59,3 +78,9 @@
= link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: 'button'
- else
= link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button'
+ - if @instance.delivery_failure_tracker.available?
+ - unless @exhausted_deliveries_days.empty?
+ = link_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
+ = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
+ - else
+ = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
diff --git a/app/views/admin/reports/_action_log.html.haml b/app/views/admin/reports/_action_log.html.haml
index 024078eb9..0f7d05867 100644
--- a/app/views/admin/reports/_action_log.html.haml
+++ b/app/views/admin/reports/_action_log.html.haml
@@ -1,6 +1,6 @@
.speech-bubble.positive
.speech-bubble__bubble
- = t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target')).html_safe
+ = t("admin.action_logs.actions.#{action_log.action}_#{action_log.target_type.underscore}_html", name: content_tag(:span, action_log.account.username, class: 'username'), target: content_tag(:span, log_target(action_log), class: 'target'))
.speech-bubble__owner
= admin_account_link_to(action_log.account)
%time.formatted{ datetime: action_log.created_at.iso8601 }= l action_log.created_at
diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml
index 721c55f71..619173373 100644
--- a/app/views/admin/reports/index.html.haml
+++ b/app/views/admin/reports/index.html.haml
@@ -7,6 +7,12 @@
%ul
%li= filter_link_to t('admin.reports.unresolved'), resolved: nil
%li= filter_link_to t('admin.reports.resolved'), resolved: '1'
+ .filter-subset
+ %strong= t('admin.reports.target_origin')
+ %ul
+ %li= filter_link_to t('admin.accounts.location.all'), target_origin: nil
+ %li= filter_link_to t('admin.accounts.location.local'), target_origin: 'local'
+ %li= filter_link_to t('admin.accounts.location.remote'), target_origin: 'remote'
= form_tag admin_reports_url, method: 'GET', class: 'simple_form' do
.fields-group
diff --git a/app/views/admin/rules/_rule.html.haml b/app/views/admin/rules/_rule.html.haml
new file mode 100644
index 000000000..f8a9ac786
--- /dev/null
+++ b/app/views/admin/rules/_rule.html.haml
@@ -0,0 +1,11 @@
+.announcements-list__item
+ = link_to edit_admin_rule_path(rule), class: 'announcements-list__item__title' do
+ = "#{rule_counter + 1}."
+ = truncate(rule.text)
+
+ .announcements-list__item__action-bar
+ .announcements-list__item__meta
+ = rule.text
+
+ %div
+ = table_link_to 'trash', t('admin.rules.delete'), admin_rule_path(rule), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, rule)
diff --git a/app/views/admin/rules/edit.html.haml b/app/views/admin/rules/edit.html.haml
new file mode 100644
index 000000000..ba7e6451a
--- /dev/null
+++ b/app/views/admin/rules/edit.html.haml
@@ -0,0 +1,11 @@
+- content_for :page_title do
+ = t('admin.rules.edit')
+
+= simple_form_for @rule, url: admin_rule_path(@rule) do |f|
+ = render 'shared/error_messages', object: @rule
+
+ .fields-group
+ = f.input :text, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/rules/index.html.haml b/app/views/admin/rules/index.html.haml
new file mode 100644
index 000000000..4fb993ad0
--- /dev/null
+++ b/app/views/admin/rules/index.html.haml
@@ -0,0 +1,25 @@
+- content_for :page_title do
+ = t('admin.rules.title')
+
+%p= t('admin.rules.description_html')
+
+%hr.spacer/
+
+- if can? :create, :rule
+ = simple_form_for @rule, url: admin_rules_path do |f|
+ = render 'shared/error_messages', object: @rule
+
+ .fields-group
+ = f.input :text, wrapper: :with_block_label
+
+ .actions
+ = f.button :button, t('admin.rules.add_new'), type: :submit
+
+ %hr.spacer/
+
+- if @rules.empty?
+ %div.muted-hint.center-text
+ = t 'admin.rules.empty'
+- else
+ .announcements-list
+ = render partial: 'rule', collection: @rules
diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml
index fa8d8441e..373811ea3 100644
--- a/app/views/admin/settings/edit.html.haml
+++ b/app/views/admin/settings/edit.html.haml
@@ -47,10 +47,7 @@
%hr.spacer/
.fields-group
- = f.input :enable_bootstrap_timeline_accounts, as: :boolean, wrapper: :with_label, label: t('admin.settings.enable_bootstrap_timeline_accounts.title'), hint: t('admin.settings.enable_bootstrap_timeline_accounts.desc_html')
-
- .fields-group
- = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html'), disabled: !Setting.enable_bootstrap_timeline_accounts
+ = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html')
%hr.spacer/
@@ -69,10 +66,10 @@
- unless whitelist_mode?
.fields-group
- = f.input :activity_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.activity_api_enabled.title'), hint: t('admin.settings.activity_api_enabled.desc_html')
+ = f.input :activity_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.activity_api_enabled.title'), hint: t('admin.settings.activity_api_enabled.desc_html'), recommended: true
.fields-group
- = f.input :peers_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.peers_api_enabled.title'), hint: t('admin.settings.peers_api_enabled.desc_html')
+ = f.input :peers_api_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.peers_api_enabled.title'), hint: t('admin.settings.peers_api_enabled.desc_html'), recommended: true
.fields-group
= f.input :preview_sensitive_media, as: :boolean, wrapper: :with_label, label: t('admin.settings.preview_sensitive_media.title'), hint: t('admin.settings.preview_sensitive_media.desc_html')
@@ -101,9 +98,6 @@
.fields-group
= f.input :show_replies_in_public_timelines, as: :boolean, wrapper: :with_label, label: t('admin.settings.show_replies_in_public_timelines.title'), hint: t('admin.settings.show_replies_in_public_timelines.desc_html')
- .fields-group
- = f.input :spam_check_enabled, as: :boolean, wrapper: :with_label, label: t('admin.settings.spam_check_enabled.title'), hint: t('admin.settings.spam_check_enabled.desc_html')
-
%hr.spacer/
.fields-group
diff --git a/app/views/admin/tags/_tag.html.haml b/app/views/admin/tags/_tag.html.haml
index 287d28e53..ac0c72816 100644
--- a/app/views/admin/tags/_tag.html.haml
+++ b/app/views/admin/tags/_tag.html.haml
@@ -10,12 +10,10 @@
= tag.name
%small
- = t('admin.tags.in_directory', count: tag.accounts_count)
- •
= t('admin.tags.unique_uses_today', count: tag.history.first[:accounts])
- if tag.trending?
= fa_icon 'fire fw'
= t('admin.tags.trending_right_now')
- .trends__item__current= number_to_human tag.history.first[:uses], strip_insignificant_zeros: true
+ .trends__item__current= friendly_number_to_human tag.history.first[:uses]
diff --git a/app/views/admin/tags/index.html.haml b/app/views/admin/tags/index.html.haml
index 72eef18a9..e25b0ae84 100644
--- a/app/views/admin/tags/index.html.haml
+++ b/app/views/admin/tags/index.html.haml
@@ -2,12 +2,6 @@
= t('admin.tags.title')
.filters
- .filter-subset
- %strong= t('admin.tags.context')
- %ul
- %li= filter_link_to t('generic.all'), directory: nil
- %li= filter_link_to t('admin.tags.directory'), directory: '1'
-
.filter-subset
%strong= t('admin.tags.review')
%ul
@@ -20,8 +14,9 @@
%strong= t('generic.order_by')
%ul
%li= filter_link_to t('admin.tags.most_recent'), popular: nil, active: nil
- %li= filter_link_to t('admin.tags.most_popular'), popular: '1', active: nil
%li= filter_link_to t('admin.tags.last_active'), active: '1', popular: nil
+ %li= filter_link_to t('admin.tags.most_popular'), popular: '1', active: nil
+
= form_tag admin_tags_url, method: 'GET', class: 'simple_form' do
.fields-group
diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml
index c9a147587..c4caffda1 100644
--- a/app/views/admin/tags/show.html.haml
+++ b/app/views/admin/tags/show.html.haml
@@ -10,15 +10,6 @@
%div
.dashboard__counters__num= number_with_delimiter @accounts_week
.dashboard__counters__label= t 'admin.tags.accounts_week'
- %div
- - if @tag.accounts_count > 0
- = link_to explore_hashtag_path(@tag) do
- .dashboard__counters__num= number_with_delimiter @tag.accounts_count
- .dashboard__counters__label= t 'admin.tags.directory'
- - else
- %div
- .dashboard__counters__num= number_with_delimiter @tag.accounts_count
- .dashboard__counters__label= t 'admin.tags.directory'
%hr.spacer/
@@ -30,8 +21,8 @@
.fields-group
= f.input :usable, as: :boolean, wrapper: :with_label
- = f.input :trendable, as: :boolean, wrapper: :with_label, disabled: !Setting.trends
- = f.input :listable, as: :boolean, wrapper: :with_label, disabled: !Setting.profile_directory
+ = f.input :trendable, as: :boolean, wrapper: :with_label
+ = f.input :listable, as: :boolean, wrapper: :with_label
.actions
= f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/auth/registrations/_sessions.html.haml b/app/views/auth/registrations/_sessions.html.haml
index d3a04c00e..5d993f574 100644
--- a/app/views/auth/registrations/_sessions.html.haml
+++ b/app/views/auth/registrations/_sessions.html.haml
@@ -1,5 +1,7 @@
%h3= t 'sessions.title'
-%p.muted-hint= t 'sessions.explanation'
+%p.muted-hint
+ = t 'sessions.explanation'
+ = link_to t('sessions.view_authentication_history'), settings_login_activities_path
%hr.spacer/
@@ -29,3 +31,4 @@
%td
- if current_session.session_id != session.session_id && !current_account.suspended?
= table_link_to 'times', t('sessions.revoke'), settings_session_path(session), method: :delete
+
diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml
index febfb7d17..d5509f946 100644
--- a/app/views/directories/index.html.haml
+++ b/app/views/directories/index.html.haml
@@ -39,10 +39,10 @@
.directory__card__extra
.accounts-table__count
- = number_to_human account.statuses_count, strip_insignificant_zeros: true
+ = friendly_number_to_human account.statuses_count
%small= t('accounts.posts', count: account.statuses_count).downcase
.accounts-table__count
- = hide_followers_count?(account) ? '-' : (number_to_human account.followers_count, strip_insignificant_zeros: true)
+ = hide_followers_count?(account) ? '-' : (friendly_number_to_human account.followers_count)
%small= t('accounts.followers', count: account.followers_count).downcase
.accounts-table__count
- if account.last_status_at.present?
diff --git a/app/views/filters/_fields.html.haml b/app/views/filters/_fields.html.haml
index fb94a07fc..84dcdcca5 100644
--- a/app/views/filters/_fields.html.haml
+++ b/app/views/filters/_fields.html.haml
@@ -2,7 +2,7 @@
.fields-row__column.fields-row__column-6.fields-group
= f.input :phrase, as: :string, wrapper: :with_label, hint: false
.fields-row__column.fields-row__column-6.fields-group
- = f.input :expires_in, wrapper: :with_label, collection: [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].map(&:to_i), label_method: lambda { |i| I18n.t("invites.expires_in.#{i}") }, prompt: I18n.t('invites.expires_in_prompt')
+ = f.input :expires_in, wrapper: :with_label, collection: [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].map(&:to_i), label_method: lambda { |i| I18n.t("invites.expires_in.#{i}") }, include_blank: I18n.t('invites.expires_in_prompt')
.fields-group
= f.input :context, wrapper: :with_block_label, collection: CustomFilter::VALID_CONTEXTS, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label_method: lambda { |context| I18n.t("filters.contexts.#{context}") }, include_blank: false
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index ce47418d4..568b23eff 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -7,7 +7,7 @@
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
= render_initial_state
-.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
+.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
%noscript
= image_pack_tag 'logo.svg', alt: 'Mastodon'
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 32681773f..09826afb3 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -39,11 +39,11 @@
= render partial: 'layouts/theme', object: @theme
- if Setting.custom_css.present?
- = stylesheet_link_tag custom_css_path, media: 'all'
+ = stylesheet_link_tag custom_css_path, host: request.host, media: 'all'
%body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
.logo-resources
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo_full.svg')
+ = raw render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+ = raw render file: Rails.root.join('app', 'javascript', 'images', 'logo_full.svg')
diff --git a/app/views/layouts/embedded.html.haml b/app/views/layouts/embedded.html.haml
index 431bd260c..2a2996d28 100644
--- a/app/views/layouts/embedded.html.haml
+++ b/app/views/layouts/embedded.html.haml
@@ -25,4 +25,4 @@
= yield
.logo-resources
- = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+ = raw render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml
index b6e33ca91..08b4c852f 100644
--- a/app/views/layouts/modal.html.haml
+++ b/app/views/layouts/modal.html.haml
@@ -11,5 +11,6 @@
.container-alt= yield
.modal-layout__mastodon
%div
+ %img{alt:'', draggable:'false', src:"#{mascot_url}"}
= render template: 'layouts/application'
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index eaa0437c2..57ad5aaf1 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -45,7 +45,8 @@
.column-3
%h4= site_hostname
%ul
- %li= link_to t('about.about_this'), about_more_path
+ - unless whitelist_mode?
+ %li= link_to t('about.about_this'), about_more_path
%li= "v#{Mastodon::Version.to_s}"
.column-4
%h4= t 'footer.more'
diff --git a/app/views/media/player.html.haml b/app/views/media/player.html.haml
index 191586248..c1d630a63 100644
--- a/app/views/media/player.html.haml
+++ b/app/views/media/player.html.haml
@@ -9,8 +9,11 @@
= render partial: 'layouts/theme', object: @core
= render partial: 'layouts/theme', object: @theme
+:ruby
+ meta = @media_attachment.file.meta || {}
+
- if @media_attachment.video?
- = react_component :video, src: @media_attachment.file.url(:original), preview: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.file.url(:small), frameRate: @media_attachment.file.meta.dig('original', 'frame_rate'), blurhash: @media_attachment.blurhash, width: 670, height: 380, editable: true, detailed: true, inline: true, alt: @media_attachment.description, media: [ActiveModelSerializers::SerializableResource.new(@media_attachment, serializer: REST::MediaAttachmentSerializer)].as_json do
+ = react_component :video, src: @media_attachment.file.url(:original), preview: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.file.url(:small), frameRate: meta.dig('original', 'frame_rate'), blurhash: @media_attachment.blurhash, width: 670, height: 380, editable: true, detailed: true, inline: true, alt: @media_attachment.description, media: [ActiveModelSerializers::SerializableResource.new(@media_attachment, serializer: REST::MediaAttachmentSerializer)].as_json do
%video{ controls: 'controls' }
%source{ src: @media_attachment.file.url(:original) }
- elsif @media_attachment.gifv?
@@ -18,6 +21,6 @@
%video{ autoplay: 'autoplay', muted: 'muted', loop: 'loop' }
%source{ src: @media_attachment.file.url(:original) }
- elsif @media_attachment.audio?
- = react_component :audio, src: @media_attachment.file.url(:original), poster: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.account.avatar_static_url, backgroundColor: @media_attachment.file.meta.dig('colors', 'background'), foregroundColor: @media_attachment.file.meta.dig('colors', 'foreground'), accentColor: @media_attachment.file.meta.dig('colors', 'accent'), width: 670, height: 380, fullscreen: true, alt: @media_attachment.description, duration: @media_attachment.file.meta.dig(:original, :duration) do
+ = react_component :audio, src: @media_attachment.file.url(:original), poster: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.account.avatar_static_url, backgroundColor: meta.dig('colors', 'background'), foregroundColor: meta.dig('colors', 'foreground'), accentColor: meta.dig('colors', 'accent'), width: 670, height: 380, fullscreen: true, alt: @media_attachment.description, duration: meta.dig(:original, :duration) do
%audio{ controls: 'controls' }
%source{ src: @media_attachment.file.url(:original) }
diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml
index 9b7e1b65c..31460a76e 100644
--- a/app/views/notification_mailer/_status.html.haml
+++ b/app/views/notification_mailer/_status.html.haml
@@ -37,7 +37,7 @@
%p
- status.media_attachments.each do |a|
- if status.local?
- = link_to medium_url(a), medium_url(a)
+ = link_to full_asset_url(a.file.url(:original)), full_asset_url(a.file.url(:original))
- else
= link_to a.remote_url, a.remote_url
diff --git a/app/views/public_timelines/show.html.haml b/app/views/public_timelines/show.html.haml
index e32bd49ec..71a3d289b 100644
--- a/app/views/public_timelines/show.html.haml
+++ b/app/views/public_timelines/show.html.haml
@@ -13,4 +13,4 @@
%p= t('about.browse_local_posts')
#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(local: !Setting.show_known_fediverse_at_about_page)) }}
-#modal-container
+.notranslate#modal-container
diff --git a/app/views/relationships/_account.html.haml b/app/views/relationships/_account.html.haml
index f521aff22..0fa3cffb5 100644
--- a/app/views/relationships/_account.html.haml
+++ b/app/views/relationships/_account.html.haml
@@ -9,10 +9,10 @@
= interrelationships_icon(@relationships, account.id)
%td= account_link_to account
%td.accounts-table__count.optional
- = number_to_human account.statuses_count, strip_insignificant_zeros: true
+ = friendly_number_to_human account.statuses_count
%small= t('accounts.posts', count: account.statuses_count).downcase
%td.accounts-table__count.optional
- = number_to_human account.followers_count, strip_insignificant_zeros: true
+ = friendly_number_to_human account.followers_count
%small= t('accounts.followers', count: account.followers_count).downcase
%td.accounts-table__count
- if account.last_status_at.present?
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 18b52c0c2..c49613fdc 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -39,7 +39,7 @@
%tr
%th= t('exports.bookmarks')
%td= number_with_delimiter @export.total_bookmarks
- %td= table_link_to 'download', t('bookmarks.csv'), settings_exports_bookmarks_path(format: :csv)
+ %td= table_link_to 'download', t('exports.csv'), settings_exports_bookmarks_path(format: :csv)
%hr.spacer/
diff --git a/app/views/settings/featured_tags/index.html.haml b/app/views/settings/featured_tags/index.html.haml
index 297379893..65de7f8f3 100644
--- a/app/views/settings/featured_tags/index.html.haml
+++ b/app/views/settings/featured_tags/index.html.haml
@@ -28,4 +28,4 @@
- else
%time{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at
= table_link_to 'trash', t('filters.index.delete'), settings_featured_tag_path(featured_tag), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
- .trends__item__current= number_to_human featured_tag.statuses_count, strip_insignificant_zeros: true
+ .trends__item__current= friendly_number_to_human featured_tag.statuses_count
diff --git a/app/views/settings/login_activities/_login_activity.html.haml b/app/views/settings/login_activities/_login_activity.html.haml
new file mode 100644
index 000000000..0c2c7087d
--- /dev/null
+++ b/app/views/settings/login_activities/_login_activity.html.haml
@@ -0,0 +1,17 @@
+- method_str = content_tag(:span, login_activity.omniauth? ? t(login_activity.provider, scope: 'auth.providers') : t(login_activity.authentication_method, scope: 'login_activities.authentication_methods'), class: 'target')
+- ip_str = content_tag(:span, login_activity.ip, class: 'target')
+- browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: "#{login_activity.browser}"), platform: t("sessions.platforms.#{login_activity.platform}", default: "#{login_activity.platform}")), class: 'target', title: login_activity.user_agent)
+
+.log-entry
+ .log-entry__header
+ .log-entry__avatar
+ .indicator-icon{ class: login_activity.success? ? 'success' : 'failure' }
+ = fa_icon login_activity.success? ? 'check' : 'times'
+ .log-entry__content
+ .log-entry__title
+ - if login_activity.success?
+ = t('login_activities.successful_sign_in_html', method: method_str, ip: ip_str, browser: browser_str)
+ - else
+ = t('login_activities.failed_sign_in_html', method: method_str, ip: ip_str, browser: browser_str)
+ .log-entry__timestamp
+ %time.formatted{ datetime: login_activity.created_at.iso8601 }= l(login_activity.created_at)
diff --git a/app/views/settings/login_activities/index.html.haml b/app/views/settings/login_activities/index.html.haml
new file mode 100644
index 000000000..ce524fbef
--- /dev/null
+++ b/app/views/settings/login_activities/index.html.haml
@@ -0,0 +1,15 @@
+- content_for :page_title do
+ = t 'login_activities.title'
+
+%p= t('login_activities.description_html')
+
+%hr.spacer/
+
+- if @login_activities.empty?
+ %div.muted-hint.center-text
+ = t 'login_activities.empty'
+- else
+ .announcements-list
+ = render partial: 'login_activity', collection: @login_activities
+
+= paginate @login_activities
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index 6061e9cfd..21948b200 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -29,9 +29,8 @@
.fields-group
= f.input :bot, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.bot')
- - if Setting.profile_directory
- .fields-group
- = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable'), recommended: true
+ .fields-group
+ = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t(Setting.profile_directory ? 'simple_form.hints.defaults.discoverable' : 'simple_form.hints.defaults.discoverable_no_directory'), recommended: true
%hr.spacer/
diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml
index 93af131e5..6b3b81306 100644
--- a/app/views/statuses/_detailed_status.html.haml
+++ b/app/views/statuses/_detailed_status.html.haml
@@ -2,13 +2,13 @@
.p-author.h-card
= link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'detailed-status__display-name u-url', target: stream_link_target, rel: 'noopener' do
.detailed-status__display-avatar
- - if current_account&.user&.setting_auto_play_gif || autoplay
+ - if prefers_autoplay?
= image_tag status.account.avatar_original_url, alt: '', class: 'account__avatar u-photo'
- else
= image_tag status.account.avatar_static_url, alt: '', class: 'account__avatar u-photo'
%span.display-name
%bdi
- %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay)
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: prefers_autoplay?)
%span.display-name__account
= acct(status.account)
= fa_icon('lock') if status.account.locked?
@@ -18,28 +18,22 @@
.status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
- if status.spoiler_text?
%p<
- %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}
%button.status__content__spoiler-link= t('statuses.show_more')
.e-content
- = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ = Formatter.instance.format(status, custom_emojify: true, autoplay: prefers_autoplay?)
- if status.preloadable_poll
- = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
- = render partial: 'statuses/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
+ = render_poll_component(status)
- if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- - video = status.media_attachments.first
- = react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 670, height: 380, detailed: true, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_video_component(status, width: 670, height: 380, detailed: true)
- elsif status.media_attachments.first.audio?
- - audio = status.media_attachments.first
- = react_component :audio, src: full_asset_url(audio.file.url(:original)), poster: full_asset_url(audio.thumbnail.present? ? audio.thumbnail.url : status.account.avatar_static_url), backgroundColor: audio.file.meta.dig('colors', 'background'), foregroundColor: audio.file.meta.dig('colors', 'foreground'), accentColor: audio.file.meta.dig('colors', 'accent'), width: 670, height: 380, alt: audio.description, duration: audio.file.meta.dig('original', 'duration') do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_audio_component(status, width: 670, height: 380)
- else
- = react_component :media_gallery, height: 380, sensitive: sensitized?(status, current_account), standalone: true, autoplay: autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_media_gallery_component(status, height: 380, standalone: true)
- elsif status.preview_card
- = react_component :card, sensitive: sensitized?(status, current_account), 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json
+ = render_card_component(status)
.detailed-status__meta
%data.dt-published{ value: status.created_at.to_time.iso8601 }
@@ -61,18 +55,18 @@
= fa_icon('reply')
- else
= fa_icon('reply-all')
- %span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true
+ %span.detailed-status__reblogs>= friendly_number_to_human status.replies_count
= " "
·
- if status.public_visibility? || status.unlisted_visibility?
= link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link' do
= fa_icon('retweet')
- %span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true
+ %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count
= " "
·
= link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do
= fa_icon('star')
- %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true
+ %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count
= " "
- if user_signed_in?
diff --git a/app/views/statuses/_poll.html.haml b/app/views/statuses/_poll.html.haml
index 64e62e97c..3546a923e 100644
--- a/app/views/statuses/_poll.html.haml
+++ b/app/views/statuses/_poll.html.haml
@@ -12,7 +12,7 @@
%span.poll__number><
= "#{percent.round}%"
%span.poll__option__text
- = Formatter.instance.format_poll_option(status, option, autoplay: autoplay)
+ = Formatter.instance.format_poll_option(status, option, autoplay: prefers_autoplay?)
- if own_votes.include?(index)
%span.poll__voted
%i.poll__voted__mark.fa.fa-check
@@ -23,7 +23,7 @@
%label.poll__option><
%span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}><
%span.poll__option__text
- = Formatter.instance.format_poll_option(status, option, autoplay: autoplay)
+ = Formatter.instance.format_poll_option(status, option, autoplay: prefers_autoplay?)
.poll__footer
- unless show_results
%button.button.button-secondary{ disabled: true }
diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml
index ab163245d..a7c78b997 100644
--- a/app/views/statuses/_simple_status.html.haml
+++ b/app/views/statuses/_simple_status.html.haml
@@ -13,13 +13,13 @@
= link_to ActivityPub::TagManager.instance.url_for(status.account), class: 'status__display-name u-url', target: stream_link_target, rel: 'noopener noreferrer' do
.status__avatar
%div
- - if current_account&.user&.setting_auto_play_gif || autoplay
+ - if prefers_autoplay?
= image_tag status.account.avatar_original_url, alt: '', class: 'u-photo account__avatar'
- else
= image_tag status.account.avatar_static_url, alt: '', class: 'u-photo account__avatar'
%span.display-name
%bdi
- %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: autoplay)
+ %strong.display-name__html.p-name.emojify= display_name(status.account, custom_emojify: true, autoplay: prefers_autoplay?)
= ' '
%span.display-name__account
= acct(status.account)
@@ -27,28 +27,22 @@
.status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }<
- if status.spoiler_text?
%p<
- %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}
%button.status__content__spoiler-link= t('statuses.show_more')
.e-content<
- = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+ = Formatter.instance.format(status, custom_emojify: true, autoplay: prefers_autoplay?)
- if status.preloadable_poll
- = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
- = render partial: 'statuses/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
+ = render_poll_component(status)
- if !status.media_attachments.empty?
- if status.media_attachments.first.video?
- - video = status.media_attachments.first
- = react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_video_component(status, width: 610, height: 343)
- elsif status.media_attachments.first.audio?
- - audio = status.media_attachments.first
- = react_component :audio, src: full_asset_url(audio.file.url(:original)), poster: full_asset_url(audio.thumbnail.present? ? audio.thumbnail.url : status.account.avatar_static_url), backgroundColor: audio.file.meta.dig('colors', 'background'), foregroundColor: audio.file.meta.dig('colors', 'foreground'), accentColor: audio.file.meta.dig('colors', 'accent'), width: 610, height: 343, alt: audio.description, duration: audio.file.meta.dig('original', 'duration') do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_audio_component(status, width: 610, height: 343)
- else
- = react_component :media_gallery, height: 343, sensitive: sensitized?(status, current_account), autoplay: autoplay, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json } do
- = render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+ = render_media_gallery_component(status, height: 343)
- elsif status.preview_card
- = react_component :card, sensitive: sensitized?(status, current_account), 'maxDescription': 160, card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json
+ = render_card_component(status)
- if !status.in_reply_to_id.nil? && status.in_reply_to_account_id == status.account.id && !hide_show_thread
= link_to ActivityPub::TagManager.instance.url_for(status), class: 'status__content__read-more-button', target: stream_link_target, rel: 'noopener noreferrer' do
diff --git a/app/views/statuses/_status.html.haml b/app/views/statuses/_status.html.haml
index 13a06519c..9f3197d0d 100644
--- a/app/views/statuses/_status.html.haml
+++ b/app/views/statuses/_status.html.haml
@@ -5,7 +5,6 @@
is_successor ||= false
direct_reply_id ||= false
parent_id ||= false
- autoplay ||= current_account&.user&.setting_auto_play_gif
is_direct_parent = direct_reply_id == status.id
is_direct_child = parent_id == status.in_reply_to_id
centered ||= include_threads && !is_predecessor && !is_successor
@@ -19,7 +18,7 @@
.entry{ class: entry_classes }
= link_to_older ActivityPub::TagManager.instance.url_for(@next_ancestor)
- = render partial: 'statuses/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }, autoplay: autoplay
+ = render partial: 'statuses/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id }
.entry{ class: entry_classes }
@@ -39,14 +38,14 @@
%span
= t('stream_entries.pinned')
- = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, autoplay: autoplay, hide_show_thread: is_predecessor || is_successor
+ = render (centered ? 'statuses/detailed_status' : 'statuses/simple_status'), status: status.proper, hide_show_thread: is_predecessor || is_successor
- if include_threads
- if @since_descendant_thread_id
.entry{ class: entry_classes }
= link_to_newer short_account_status_url(status.account.username, status, max_descendant_thread_id: @since_descendant_thread_id + 1)
- @descendant_threads.each do |thread|
- = render partial: 'statuses/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }, autoplay: autoplay
+ = render partial: 'statuses/status', collection: thread[:statuses], as: :status, locals: { is_successor: true, parent_id: status.id }
- if thread[:next_status]
.entry{ class: entry_classes }
diff --git a/app/views/statuses/embed.html.haml b/app/views/statuses/embed.html.haml
index 2f111f53f..18d62fd8e 100644
--- a/app/views/statuses/embed.html.haml
+++ b/app/views/statuses/embed.html.haml
@@ -1,2 +1,2 @@
.activity-stream.activity-stream--headless
- = render 'status', status: @status, centered: true, autoplay: @autoplay
+ = render 'status', status: @status, centered: true
diff --git a/app/views/statuses_cleanup/show.html.haml b/app/views/statuses_cleanup/show.html.haml
new file mode 100644
index 000000000..59de4b5aa
--- /dev/null
+++ b/app/views/statuses_cleanup/show.html.haml
@@ -0,0 +1,45 @@
+- content_for :page_title do
+ = t('settings.statuses_cleanup')
+
+- content_for :heading_actions do
+ = button_tag t('generic.save_changes'), class: 'button', form: 'edit_policy'
+
+= simple_form_for @policy, url: statuses_cleanup_path, method: :put, html: { id: 'edit_policy' } do |f|
+
+ .fields-row
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :enabled, as: :boolean, wrapper: :with_label, label: t('statuses_cleanup.enabled'), hint: t('statuses_cleanup.enabled_hint')
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :min_status_age, wrapper: :with_label, label: t('statuses_cleanup.min_age_label'), collection: AccountStatusesCleanupPolicy::ALLOWED_MIN_STATUS_AGE.map(&:to_i), label_method: lambda { |i| t("statuses_cleanup.min_age.#{i}") }, include_blank: false, hint: false
+
+ .flash-message= t('statuses_cleanup.explanation')
+
+ %h4= t('statuses_cleanup.exceptions')
+
+ .fields-row
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_pinned, wrapper: :with_label, label: t('statuses_cleanup.keep_pinned'), hint: t('statuses_cleanup.keep_pinned_hint')
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_direct, wrapper: :with_label, label: t('statuses_cleanup.keep_direct'), hint: t('statuses_cleanup.keep_direct_hint')
+
+ .fields-row
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_self_fav, wrapper: :with_label, label: t('statuses_cleanup.keep_self_fav'), hint: t('statuses_cleanup.keep_self_fav_hint')
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_self_bookmark, wrapper: :with_label, label: t('statuses_cleanup.keep_self_bookmark'), hint: t('statuses_cleanup.keep_self_bookmark_hint')
+
+ .fields-row
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_polls, wrapper: :with_label, label: t('statuses_cleanup.keep_polls'), hint: t('statuses_cleanup.keep_polls_hint')
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :keep_media, wrapper: :with_label, label: t('statuses_cleanup.keep_media'), hint: t('statuses_cleanup.keep_media_hint')
+
+ %h4= t('statuses_cleanup.interaction_exceptions')
+
+ .fields-row
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :min_favs, wrapper: :with_label, label: t('statuses_cleanup.min_favs'), hint: t('statuses_cleanup.min_favs_hint'), input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_favs') }
+ .fields-row__column.fields-row__column-6.fields-group
+ = f.input :min_reblogs, wrapper: :with_label, label: t('statuses_cleanup.min_reblogs'), hint: t('statuses_cleanup.min_reblogs_hint'), input_html: { min: 1, placeholder: t('statuses_cleanup.ignore_reblogs') }
+
+ .flash-message= t('statuses_cleanup.interaction_exceptions_explanation')
diff --git a/app/views/tags/show.html.haml b/app/views/tags/show.html.haml
index d15f119ed..0e6d4c43d 100644
--- a/app/views/tags/show.html.haml
+++ b/app/views/tags/show.html.haml
@@ -12,4 +12,4 @@
%p= t('about.about_hashtag_html', hashtag: @tag.name)
#mastodon-timeline{ data: { props: Oj.dump(default_props.merge(hashtag: @tag.name, local: @local)) }}
-#modal-container
+.notranslate#modal-container
diff --git a/app/views/user_mailer/webauthn_enabled.text.erb b/app/views/user_mailer/webauthn_enabled.text.erb
index 4c233fefb..d4482a69b 100644
--- a/app/views/user_mailer/webauthn_enabled.text.erb
+++ b/app/views/user_mailer/webauthn_enabled.text.erb
@@ -1,7 +1,7 @@
-<%= t 'devise.mailer.webauthn_credentia.added.title' %>
+<%= t 'devise.mailer.webauthn_credential.added.title' %>
===
-<%= t 'devise.mailer.webauthn_credentia.added.explanation' %>
+<%= t 'devise.mailer.webauthn_credential.added.explanation' %>
=> <%= edit_user_registration_url %>
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index 6c5a576a7..788f2cf80 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -44,11 +44,7 @@ class ActivityPub::DeliveryWorker
end
def synchronization_header
- "collectionId=\"#{account_followers_url(@source_account)}\", digest=\"#{@source_account.remote_followers_hash(inbox_url_prefix)}\", url=\"#{account_followers_synchronization_url(@source_account)}\""
- end
-
- def inbox_url_prefix
- @inbox_url[/http(s?):\/\/[^\/]+\//]
+ "collectionId=\"#{account_followers_url(@source_account)}\", digest=\"#{@source_account.remote_followers_hash(@inbox_url)}\", url=\"#{account_followers_synchronization_url(@source_account)}\""
end
def perform_request
diff --git a/app/workers/activitypub/distribution_worker.rb b/app/workers/activitypub/distribution_worker.rb
index 9b4814644..09898ca49 100644
--- a/app/workers/activitypub/distribution_worker.rb
+++ b/app/workers/activitypub/distribution_worker.rb
@@ -35,7 +35,7 @@ class ActivityPub::DistributionWorker
# Deliver the status to all followers.
# If the status is a reply to another local status, also forward it to that
# status' authors' followers.
- @inboxes ||= if @status.reply? && @status.thread.account.local? && @status.distributable?
+ @inboxes ||= if @status.in_reply_to_local_account? && @status.distributable?
@account.followers.or(@status.thread.account.followers).inboxes
else
@account.followers.inboxes
diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb
index 4e20ef31b..e85cd7e95 100644
--- a/app/workers/distribution_worker.rb
+++ b/app/workers/distribution_worker.rb
@@ -4,7 +4,7 @@ class DistributionWorker
include Sidekiq::Worker
def perform(status_id)
- RedisLock.acquire(redis: Redis.current, key: "distribute:#{status_id}") do |lock|
+ RedisLock.acquire(redis: Redis.current, key: "distribute:#{status_id}", autorelease: 5.minutes.seconds) do |lock|
if lock.acquired?
FanOutOnWriteService.new.call(Status.find(status_id))
else
diff --git a/app/workers/import/relationship_worker.rb b/app/workers/import/relationship_worker.rb
index 4a7100435..6791b15c3 100644
--- a/app/workers/import/relationship_worker.rb
+++ b/app/workers/import/relationship_worker.rb
@@ -5,7 +5,7 @@ class Import::RelationshipWorker
sidekiq_options queue: 'pull', retry: 8, dead: false
- def perform(account_id, target_account_uri, relationship, options = {})
+ def perform(account_id, target_account_uri, relationship, options)
from_account = Account.find(account_id)
target_domain = domain(target_account_uri)
target_account = stoplight_wrap_request(target_domain) { ResolveAccountService.new.call(target_account_uri, { check_delivery_availability: true }) }
@@ -16,7 +16,7 @@ class Import::RelationshipWorker
case relationship
when 'follow'
begin
- FollowService.new.call(from_account, target_account, options)
+ FollowService.new.call(from_account, target_account, **options)
rescue ActiveRecord::RecordInvalid
raise if FollowLimitValidator.limit_for_account(from_account) < from_account.following_count
end
@@ -27,7 +27,7 @@ class Import::RelationshipWorker
when 'unblock'
UnblockService.new.call(from_account, target_account)
when 'mute'
- MuteService.new.call(from_account, target_account, options)
+ MuteService.new.call(from_account, target_account, **options)
when 'unmute'
UnmuteService.new.call(from_account, target_account)
end
diff --git a/app/workers/merge_worker.rb b/app/workers/merge_worker.rb
index 74ef7d4da..6ebb9a400 100644
--- a/app/workers/merge_worker.rb
+++ b/app/workers/merge_worker.rb
@@ -3,11 +3,11 @@
class MergeWorker
include Sidekiq::Worker
- sidekiq_options queue: 'pull'
-
def perform(from_account_id, into_account_id)
FeedManager.instance.merge_into_home(Account.find(from_account_id), Account.find(into_account_id))
rescue ActiveRecord::RecordNotFound
true
+ ensure
+ Redis.current.del("account:#{into_account_id}:regeneration")
end
end
diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb
index 39e321316..cc2c17d32 100644
--- a/app/workers/move_worker.rb
+++ b/app/workers/move_worker.rb
@@ -13,9 +13,13 @@ class MoveWorker
queue_follow_unfollows!
end
+ @deferred_error = nil
+
copy_account_notes!
carry_blocks_over!
carry_mutes_over!
+
+ raise @deferred_error unless @deferred_error.nil?
rescue ActiveRecord::RecordNotFound
true
end
@@ -36,21 +40,25 @@ class MoveWorker
@source_account.followers.local.select(:id).find_in_batches do |accounts|
UnfollowFollowWorker.push_bulk(accounts.map(&:id)) { |follower_id| [follower_id, @source_account.id, @target_account.id, bypass_locked] }
+ rescue => e
+ @deferred_error = e
end
end
def copy_account_notes!
AccountNote.where(target_account: @source_account).find_each do |note|
- text = I18n.with_locale(note.account.user.locale || I18n.default_locale) do
+ text = I18n.with_locale(note.account.user&.locale || I18n.default_locale) do
I18n.t('move_handler.copy_account_note_text', acct: @source_account.acct)
end
new_note = AccountNote.find_by(account: note.account, target_account: @target_account)
if new_note.nil?
- AccountNote.create!(account: note.account, target_account: @target_account, comment: [text, note.comment].join('\n'))
+ AccountNote.create!(account: note.account, target_account: @target_account, comment: [text, note.comment].join("\n"))
else
- new_note.update!(comment: [text, note.comment, '\n', new_note.comment].join('\n'))
+ new_note.update!(comment: [text, note.comment, "\n", new_note.comment].join("\n"))
end
+ rescue => e
+ @deferred_error = e
end
end
@@ -60,6 +68,8 @@ class MoveWorker
BlockService.new.call(block.account, @target_account)
add_account_note_if_needed!(block.account, 'move_handler.carry_blocks_over_text')
end
+ rescue => e
+ @deferred_error = e
end
end
@@ -67,12 +77,14 @@ class MoveWorker
@source_account.muted_by_relationships.where(account: Account.local).find_each do |mute|
MuteService.new.call(mute.account, @target_account, notifications: mute.hide_notifications) unless mute.account.muting?(@target_account) || mute.account.following?(@target_account)
add_account_note_if_needed!(mute.account, 'move_handler.carry_mutes_over_text')
+ rescue => e
+ @deferred_error = e
end
end
def add_account_note_if_needed!(account, id)
unless AccountNote.where(account: account, target_account: @target_account).exists?
- text = I18n.with_locale(account.user.locale || I18n.default_locale) do
+ text = I18n.with_locale(account.user&.locale || I18n.default_locale) do
I18n.t(id, acct: @source_account.acct)
end
AccountNote.create!(account: account, target_account: @target_account, comment: text)
diff --git a/app/workers/redownload_avatar_worker.rb b/app/workers/redownload_avatar_worker.rb
new file mode 100644
index 000000000..df17b7718
--- /dev/null
+++ b/app/workers/redownload_avatar_worker.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class RedownloadAvatarWorker
+ include Sidekiq::Worker
+ include ExponentialBackoff
+ include JsonLdHelper
+
+ sidekiq_options queue: 'pull', retry: 7
+
+ def perform(id)
+ account = Account.find(id)
+
+ return if account.suspended? || DomainBlock.rule_for(account.domain)&.reject_media?
+ return if account.avatar_remote_url.blank? || account.avatar_file_name.present?
+
+ account.reset_avatar!
+ account.save!
+ rescue ActiveRecord::RecordNotFound
+ # Do nothing
+ rescue Mastodon::UnexpectedResponseError => e
+ response = e.response
+
+ if response_error_unsalvageable?(response)
+ # Give up
+ else
+ raise e
+ end
+ end
+end
diff --git a/app/workers/redownload_header_worker.rb b/app/workers/redownload_header_worker.rb
new file mode 100644
index 000000000..3b142ec5f
--- /dev/null
+++ b/app/workers/redownload_header_worker.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class RedownloadHeaderWorker
+ include Sidekiq::Worker
+ include ExponentialBackoff
+ include JsonLdHelper
+
+ sidekiq_options queue: 'pull', retry: 7
+
+ def perform(id)
+ account = Account.find(id)
+
+ return if account.suspended? || DomainBlock.rule_for(account.domain)&.reject_media?
+ return if account.header_remote_url.blank? || account.header_file_name.present?
+
+ account.reset_header!
+ account.save!
+ rescue ActiveRecord::RecordNotFound
+ # Do nothing
+ rescue Mastodon::UnexpectedResponseError => e
+ response = e.response
+
+ if response_error_unsalvageable?(response)
+ # Give up
+ else
+ raise e
+ end
+ end
+end
diff --git a/app/workers/redownload_media_worker.rb b/app/workers/redownload_media_worker.rb
index 0638cd0f0..343caa32c 100644
--- a/app/workers/redownload_media_worker.rb
+++ b/app/workers/redownload_media_worker.rb
@@ -3,6 +3,7 @@
class RedownloadMediaWorker
include Sidekiq::Worker
include ExponentialBackoff
+ include JsonLdHelper
sidekiq_options queue: 'pull', retry: 3
@@ -15,6 +16,14 @@ class RedownloadMediaWorker
media_attachment.download_thumbnail!
media_attachment.save
rescue ActiveRecord::RecordNotFound
- true
+ # Do nothing
+ rescue Mastodon::UnexpectedResponseError => e
+ response = e.response
+
+ if response_error_unsalvageable?(response)
+ # Give up
+ else
+ raise e
+ end
end
end
diff --git a/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb
new file mode 100644
index 000000000..f42d4bca6
--- /dev/null
+++ b/app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb
@@ -0,0 +1,96 @@
+# frozen_string_literal: true
+
+class Scheduler::AccountsStatusesCleanupScheduler
+ include Sidekiq::Worker
+
+ # This limit is mostly to be nice to the fediverse at large and not
+ # generate too much traffic.
+ # This also helps limiting the running time of the scheduler itself.
+ MAX_BUDGET = 50
+
+ # This is an attempt to spread the load across instances, as various
+ # accounts are likely to have various followers.
+ PER_ACCOUNT_BUDGET = 5
+
+ # This is an attempt to limit the workload generated by status removal
+ # jobs to something the particular instance can handle.
+ PER_THREAD_BUDGET = 5
+
+ # Those avoid loading an instance that is already under load
+ MAX_DEFAULT_SIZE = 2
+ MAX_DEFAULT_LATENCY = 5
+ MAX_PUSH_SIZE = 5
+ MAX_PUSH_LATENCY = 10
+ # 'pull' queue has lower priority jobs, and it's unlikely that pushing
+ # deletes would cause much issues with this queue if it didn't cause issues
+ # with default and push. Yet, do not enqueue deletes if the instance is
+ # lagging behind too much.
+ MAX_PULL_SIZE = 500
+ MAX_PULL_LATENCY = 300
+
+ # This is less of an issue in general, but deleting old statuses is likely
+ # to cause delivery errors, and thus increase the number of jobs to be retried.
+ # This doesn't directly translate to load, but connection errors and a high
+ # number of dead instances may lead to this spiraling out of control if
+ # unchecked.
+ MAX_RETRY_SIZE = 50_000
+
+ sidekiq_options retry: 0, lock: :until_executed
+
+ def perform
+ return if under_load?
+
+ budget = compute_budget
+ first_policy_id = last_processed_id
+
+ loop do
+ num_processed_accounts = 0
+
+ scope = AccountStatusesCleanupPolicy.where(enabled: true)
+ scope.where(Account.arel_table[:id].gt(first_policy_id)) if first_policy_id.present?
+ scope.find_each(order: :asc) do |policy|
+ num_deleted = AccountStatusesCleanupService.new.call(policy, [budget, PER_ACCOUNT_BUDGET].min)
+ num_processed_accounts += 1 unless num_deleted.zero?
+ budget -= num_deleted
+ if budget.zero?
+ save_last_processed_id(policy.id)
+ break
+ end
+ end
+
+ # The idea here is to loop through all policies at least once until the budget is exhausted
+ # and start back after the last processed account otherwise
+ break if budget.zero? || (num_processed_accounts.zero? && first_policy_id.nil?)
+ first_policy_id = nil
+ end
+ end
+
+ def compute_budget
+ threads = Sidekiq::ProcessSet.new.filter { |x| x['queues'].include?('push') }.map { |x| x['concurrency'] }.sum
+ [PER_THREAD_BUDGET * threads, MAX_BUDGET].min
+ end
+
+ def under_load?
+ return true if Sidekiq::Stats.new.retry_size > MAX_RETRY_SIZE
+ queue_under_load?('default', MAX_DEFAULT_SIZE, MAX_DEFAULT_LATENCY) || queue_under_load?('push', MAX_PUSH_SIZE, MAX_PUSH_LATENCY) || queue_under_load?('pull', MAX_PULL_SIZE, MAX_PULL_LATENCY)
+ end
+
+ private
+
+ def queue_under_load?(name, max_size, max_latency)
+ queue = Sidekiq::Queue.new(name)
+ queue.size > max_size || queue.latency > max_latency
+ end
+
+ def last_processed_id
+ Redis.current.get('account_statuses_cleanup_scheduler:last_account_id')
+ end
+
+ def save_last_processed_id(id)
+ if id.nil?
+ Redis.current.del('account_statuses_cleanup_scheduler:last_account_id')
+ else
+ Redis.current.set('account_statuses_cleanup_scheduler:last_account_id', id, ex: 1.hour.seconds)
+ end
+ end
+end
diff --git a/app/workers/scheduler/backup_cleanup_scheduler.rb b/app/workers/scheduler/backup_cleanup_scheduler.rb
index d69ca2556..85d5312c0 100644
--- a/app/workers/scheduler/backup_cleanup_scheduler.rb
+++ b/app/workers/scheduler/backup_cleanup_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::BackupCleanupScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
old_backups.reorder(nil).find_each(&:destroy!)
diff --git a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
index bb9dd49ca..9303a352f 100644
--- a/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
+++ b/app/workers/scheduler/doorkeeper_cleanup_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::DoorkeeperCleanupScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb
index 9a7355524..c052f2fce 100644
--- a/app/workers/scheduler/email_scheduler.rb
+++ b/app/workers/scheduler/email_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::EmailScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
FREQUENCY = 7.days.freeze
SIGN_IN_OFFSET = 1.day.freeze
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb
index 96c17c578..78adc97e2 100644
--- a/app/workers/scheduler/feed_cleanup_scheduler.rb
+++ b/app/workers/scheduler/feed_cleanup_scheduler.rb
@@ -4,7 +4,7 @@ class Scheduler::FeedCleanupScheduler
include Sidekiq::Worker
include Redisable
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
clean_home_feeds!
diff --git a/app/workers/scheduler/follow_recommendations_scheduler.rb b/app/workers/scheduler/follow_recommendations_scheduler.rb
new file mode 100644
index 000000000..cb1e15961
--- /dev/null
+++ b/app/workers/scheduler/follow_recommendations_scheduler.rb
@@ -0,0 +1,62 @@
+# frozen_string_literal: true
+
+class Scheduler::FollowRecommendationsScheduler
+ include Sidekiq::Worker
+ include Redisable
+
+ sidekiq_options retry: 0
+
+ # The maximum number of accounts that can be requested in one page from the
+ # API is 80, and the suggestions API does not allow pagination. This number
+ # leaves some room for accounts being filtered during live access
+ SET_SIZE = 100
+
+ def perform
+ # Maintaining a materialized view speeds-up subsequent queries significantly
+ AccountSummary.refresh
+ FollowRecommendation.refresh
+
+ fallback_recommendations = FollowRecommendation.limit(SET_SIZE).index_by(&:account_id)
+
+ I18n.available_locales.each do |locale|
+ recommendations = begin
+ if AccountSummary.safe.filtered.localized(locale).exists? # We can skip the work if no accounts with that language exist
+ FollowRecommendation.localized(locale).limit(SET_SIZE).index_by(&:account_id)
+ else
+ {}
+ end
+ end
+
+ # Use language-agnostic results if there are not enough language-specific ones
+ missing = SET_SIZE - recommendations.keys.size
+
+ if missing.positive?
+ added = 0
+
+ # Avoid duplicate results
+ fallback_recommendations.each_value do |recommendation|
+ next if recommendations.key?(recommendation.account_id)
+
+ recommendations[recommendation.account_id] = recommendation
+ added += 1
+
+ break if added >= missing
+ end
+ end
+
+ redis.pipelined do
+ redis.del(key(locale))
+
+ recommendations.each_value do |recommendation|
+ redis.zadd(key(locale), recommendation.rank, recommendation.account_id)
+ end
+ end
+ end
+ end
+
+ private
+
+ def key(locale)
+ "follow_recommendations:#{locale}"
+ end
+end
diff --git a/app/workers/scheduler/instance_refresh_scheduler.rb b/app/workers/scheduler/instance_refresh_scheduler.rb
index 917404bec..2af5f3855 100644
--- a/app/workers/scheduler/instance_refresh_scheduler.rb
+++ b/app/workers/scheduler/instance_refresh_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::InstanceRefreshScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
Instance.refresh
diff --git a/app/workers/scheduler/ip_cleanup_scheduler.rb b/app/workers/scheduler/ip_cleanup_scheduler.rb
index 853f20e25..918c10ac9 100644
--- a/app/workers/scheduler/ip_cleanup_scheduler.rb
+++ b/app/workers/scheduler/ip_cleanup_scheduler.rb
@@ -5,7 +5,7 @@ class Scheduler::IpCleanupScheduler
IP_RETENTION_PERIOD = 1.year.freeze
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
clean_ip_columns!
@@ -17,6 +17,7 @@ class Scheduler::IpCleanupScheduler
def clean_ip_columns!
SessionActivation.where('updated_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all
User.where('current_sign_in_at < ?', IP_RETENTION_PERIOD.ago).in_batches.update_all(last_sign_in_ip: nil, current_sign_in_ip: nil, sign_up_ip: nil)
+ LoginActivity.where('created_at < ?', IP_RETENTION_PERIOD.ago).in_batches.destroy_all
end
def clean_expired_ip_blocks!
diff --git a/app/workers/scheduler/media_cleanup_scheduler.rb b/app/workers/scheduler/media_cleanup_scheduler.rb
index 671ebf6e0..24d30a6be 100644
--- a/app/workers/scheduler/media_cleanup_scheduler.rb
+++ b/app/workers/scheduler/media_cleanup_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::MediaCleanupScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
unattached_media.find_each(&:destroy)
diff --git a/app/workers/scheduler/pghero_scheduler.rb b/app/workers/scheduler/pghero_scheduler.rb
index cf5570048..a756b13b9 100644
--- a/app/workers/scheduler/pghero_scheduler.rb
+++ b/app/workers/scheduler/pghero_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::PgheroScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
PgHero.capture_space_stats
diff --git a/app/workers/scheduler/scheduled_statuses_scheduler.rb b/app/workers/scheduler/scheduled_statuses_scheduler.rb
index 25df3c07d..3bf6300b3 100644
--- a/app/workers/scheduler/scheduled_statuses_scheduler.rb
+++ b/app/workers/scheduler/scheduled_statuses_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::ScheduledStatusesScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
publish_scheduled_statuses!
diff --git a/app/workers/scheduler/trending_tags_scheduler.rb b/app/workers/scheduler/trending_tags_scheduler.rb
index e9891424e..94d76d010 100644
--- a/app/workers/scheduler/trending_tags_scheduler.rb
+++ b/app/workers/scheduler/trending_tags_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::TrendingTagsScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
TrendingTags.update! if Setting.trends
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 8571b59e1..be0c4277d 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -3,7 +3,7 @@
class Scheduler::UserCleanupScheduler
include Sidekiq::Worker
- sidekiq_options lock: :until_executed, retry: 0
+ sidekiq_options retry: 0
def perform
clean_unconfirmed_accounts!
diff --git a/app/workers/thread_resolve_worker.rb b/app/workers/thread_resolve_worker.rb
index 8bba9ca75..1b77dfdd9 100644
--- a/app/workers/thread_resolve_worker.rb
+++ b/app/workers/thread_resolve_worker.rb
@@ -14,5 +14,7 @@ class ThreadResolveWorker
child_status.thread = parent_status
child_status.save!
+ rescue ActiveRecord::RecordNotFound
+ true
end
end
diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb
index 46aeaa30b..57f5b5c22 100644
--- a/app/workers/web/push_notification_worker.rb
+++ b/app/workers/web/push_notification_worker.rb
@@ -3,22 +3,67 @@
class Web::PushNotificationWorker
include Sidekiq::Worker
- sidekiq_options backtrace: true, retry: 5
+ sidekiq_options queue: 'push', retry: 5
+
+ TTL = 48.hours.to_s
+ URGENCY = 'normal'
def perform(subscription_id, notification_id)
- subscription = ::Web::PushSubscription.find(subscription_id)
- notification = Notification.find(notification_id)
+ @subscription = Web::PushSubscription.find(subscription_id)
+ @notification = Notification.find(notification_id)
- subscription.push(notification) unless notification.activity.nil?
- rescue Webpush::ResponseError => e
- code = e.response.code.to_i
+ # Polymorphically associated activity could have been deleted
+ # in the meantime, so we have to double-check before proceeding
+ return unless @notification.activity.present? && @subscription.pushable?(@notification)
- if (400..499).cover?(code) && ![408, 429].include?(code)
- subscription.destroy!
- else
- raise e
+ payload = @subscription.encrypt(push_notification_json)
+
+ request_pool.with(@subscription.audience) do |http_client|
+ request = Request.new(:post, @subscription.endpoint, body: payload.fetch(:ciphertext), http_client: http_client)
+
+ request.add_headers(
+ 'Content-Type' => 'application/octet-stream',
+ 'Ttl' => TTL,
+ 'Urgency' => URGENCY,
+ 'Content-Encoding' => 'aesgcm',
+ 'Encryption' => "salt=#{Webpush.encode64(payload.fetch(:salt)).delete('=')}",
+ 'Crypto-Key' => "dh=#{Webpush.encode64(payload.fetch(:server_public_key)).delete('=')};#{@subscription.crypto_key_header}",
+ 'Authorization' => @subscription.authorization_header
+ )
+
+ request.perform do |response|
+ # If the server responds with an error in the 4xx range
+ # that isn't about rate-limiting or timeouts, we can
+ # assume that the subscription is invalid or expired
+ # and must be removed
+
+ if (400..499).cover?(response.code) && ![408, 429].include?(response.code)
+ @subscription.destroy!
+ elsif !(200...300).cover?(response.code)
+ raise Mastodon::UnexpectedResponseError, response
+ end
+ end
end
rescue ActiveRecord::RecordNotFound
true
end
+
+ private
+
+ def push_notification_json
+ json = I18n.with_locale(@subscription.locale || I18n.default_locale) do
+ ActiveModelSerializers::SerializableResource.new(
+ @notification,
+ serializer: Web::NotificationSerializer,
+ scope: @subscription,
+ scope_name: :current_push_subscription
+ ).as_json
+ end
+
+ Oj.dump(json)
+ end
+
+ def request_pool
+ RequestPool.current
+ end
end
diff --git a/babel.config.js b/babel.config.js
index 9be5b547a..b040cc159 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -18,7 +18,6 @@ module.exports = (api) => {
],
plugins: [
['@babel/proposal-decorators', { legacy: true }],
- '@babel/proposal-class-properties',
['react-intl', { messagesDir: './build/messages' }],
'preval',
],
diff --git a/bin/setup b/bin/setup
index fc77b0809..90700ac4f 100755
--- a/bin/setup
+++ b/bin/setup
@@ -1,6 +1,5 @@
#!/usr/bin/env ruby
-require 'fileutils'
-include FileUtils
+require "fileutils"
# path to your application root.
APP_ROOT = File.expand_path('..', __dir__)
@@ -9,22 +8,25 @@ def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
-chdir APP_ROOT do
- # This script is a starting point to setup your application.
+FileUtils.chdir APP_ROOT do
+ # This script is a way to set up or update your development environment automatically.
+ # This script is idempotent, so that you can run it at any time and get an expectable outcome.
# Add necessary setup steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
- system!('yarn install')
+
+ # Install JavaScript dependencies
+ system! 'bin/yarn'
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
- # cp 'config/database.yml.sample', 'config/database.yml'
+ # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
# end
puts "\n== Preparing database =="
- system! 'bin/rails db:setup'
+ system! 'bin/rails db:prepare'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
diff --git a/bin/yarn b/bin/yarn
index 460dd565b..9fab2c350 100755
--- a/bin/yarn
+++ b/bin/yarn
@@ -1,9 +1,15 @@
#!/usr/bin/env ruby
APP_ROOT = File.expand_path('..', __dir__)
Dir.chdir(APP_ROOT) do
- begin
- exec "yarnpkg", *ARGV
- rescue Errno::ENOENT
+ yarn = ENV["PATH"].split(File::PATH_SEPARATOR).
+ select { |dir| File.expand_path(dir) != __dir__ }.
+ product(["yarn", "yarn.cmd", "yarn.ps1"]).
+ map { |dir, file| File.expand_path(file, dir) }.
+ find { |file| File.executable?(file) }
+
+ if yarn
+ exec yarn, *ARGV
+ else
$stderr.puts "Yarn executable was not detected in the system."
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
exit 1
diff --git a/chart/Chart.lock b/chart/Chart.lock
new file mode 100644
index 000000000..7b68a2ed2
--- /dev/null
+++ b/chart/Chart.lock
@@ -0,0 +1,12 @@
+dependencies:
+- name: elasticsearch
+ repository: https://charts.bitnami.com/bitnami
+ version: 14.2.3
+- name: postgresql
+ repository: https://charts.bitnami.com/bitnami
+ version: 8.10.14
+- name: redis
+ repository: https://charts.bitnami.com/bitnami
+ version: 10.9.0
+digest: sha256:9e3e7b987c6ffba9295a30b7fae2613fe680c2b1a1832ff5afb185414ce1898e
+generated: "2021-02-27T01:01:12.776919968Z"
diff --git a/chart/Chart.yaml b/chart/Chart.yaml
index 19f9c64c7..8f1976cf7 100644
--- a/chart/Chart.yaml
+++ b/chart/Chart.yaml
@@ -15,7 +15,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 0.1.2
+version: 1.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
@@ -24,12 +24,13 @@ appVersion: 3.3.0
dependencies:
- name: elasticsearch
- version: "12.x.x"
+ version: 14.2.3
repository: https://charts.bitnami.com/bitnami
condition: elasticsearch.enabled
- name: postgresql
- version: "8.x.x"
+ version: 8.10.14
repository: https://charts.bitnami.com/bitnami
+ condition: postgresql.enabled
- name: redis
- version: "10.x.x"
+ version: 10.9.0
repository: https://charts.bitnami.com/bitnami
diff --git a/chart/readme.md b/chart/readme.md
index 804e98094..9f7a88958 100644
--- a/chart/readme.md
+++ b/chart/readme.md
@@ -3,12 +3,9 @@
This is a [Helm](https://helm.sh/) chart for installing Mastodon into a
Kubernetes cluster. The basic usage is:
-```
-cp values.yaml.template values.yaml
-edit values.yaml # configure required settings
-helm dep update
-helm upgrade --install my-mastodon ./
-```
+1. edit `values.yaml` or create a separate yaml file for custom values
+1. `helm dep update`
+1. `helm install --namespace mastodon --create-namespace my-mastodon ./ -f path/to/additional/values.yaml`
This chart has been tested on Helm 3.0.1 and above.
@@ -16,21 +13,17 @@ This chart has been tested on Helm 3.0.1 and above.
The variables that _must_ be configured are:
-- `ingress.hostname`; even if you aren’t using an Ingress, this value is used to
- set `LOCAL_DOMAIN`.
-
-- password and keys in the `secrets`, `postgresql`, and `redis` groups; if
+- password and keys in the `mastodon.secrets`, `postgresql`, and `redis` groups; if
left blank, some of those values will be autogenerated, but will not persist
across upgrades.
-- SMTP settings for your mailer in the `smtp` group.
+- SMTP settings for your mailer in the `mastodon.smtp` group.
# Missing features
Currently this chart does _not_ support:
- Hidden services
-- S3/Minio/GCS
- Single Sign-On
- Swift
- configurations using `WEB_DOMAIN`
diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt
index 36cced67a..b09c40bec 100644
--- a/chart/templates/NOTES.txt
+++ b/chart/templates/NOTES.txt
@@ -2,7 +2,7 @@
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
- http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
+ http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
@@ -16,6 +16,7 @@
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "mastodon.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
- kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
+ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
{{- end }}
diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml
index 27351e97e..701368e49 100644
--- a/chart/templates/configmap-env.yaml
+++ b/chart/templates/configmap-env.yaml
@@ -5,61 +5,75 @@ metadata:
labels:
{{- include "mastodon.labels" . | nindent 4 }}
data:
+ {{- if .Values.postgresql.enabled }}
DB_HOST: {{ template "mastodon.postgresql.fullname" . }}
+ {{- else }}
+ DB_HOST: {{ .Values.postgresql.postgresqlHostname }}
+ {{- end }}
DB_NAME: {{ .Values.postgresql.postgresqlDatabase }}
- DB_POOL: {{ .Values.application.sidekiq.concurrency | quote }}
+ DB_POOL: {{ .Values.mastodon.sidekiq.concurrency | quote }}
DB_PORT: "5432"
DB_USER: {{ .Values.postgresql.postgresqlUsername }}
- DEFAULT_LOCALE: {{ .Values.locale }}
+ DEFAULT_LOCALE: {{ .Values.mastodon.locale }}
{{- if .Values.elasticsearch.enabled }}
ES_ENABLED: "true"
ES_HOST: {{ template "mastodon.elasticsearch.fullname" . }}-master
ES_PORT: "9200"
{{- end }}
- LOCAL_DOMAIN: {{ .Values.ingress.hostname }}
+ LOCAL_DOMAIN: {{ .Values.mastodon.local_domain }}
# https://devcenter.heroku.com/articles/tuning-glibc-memory-behavior
MALLOC_ARENA_MAX: "2"
NODE_ENV: "production"
RAILS_ENV: "production"
REDIS_HOST: {{ template "mastodon.redis.fullname" . }}-master
REDIS_PORT: "6379"
- {{- if .Values.smtp.auth_method }}
- SMTP_AUTH_METHOD: {{ .Values.smtp.auth_method }}
+ {{- if .Values.mastodon.s3.enabled }}
+ S3_BUCKET: {{ .Values.mastodon.s3.bucket }}
+ S3_ENABLED: "true"
+ S3_ENDPOINT: {{ .Values.mastodon.s3.endpoint }}
+ S3_HOSTNAME: {{ .Values.mastodon.s3.hostname }}
+ S3_PROTOCOL: "https"
+ {{- if .Values.mastodon.s3.region }}
+ S3_REGION: {{ .Values.mastodon.s3.region }}
{{- end }}
- {{- if .Values.smtp.ca_file }}
- SMTP_CA_FILE: {{ .Values.smtp.ca_file }}
{{- end }}
- {{- if .Values.smtp.delivery_method }}
- SMTP_DELIVERY_METHOD: {{ .Values.smtp.delivery_method }}
+ {{- if .Values.mastodon.smtp.auth_method }}
+ SMTP_AUTH_METHOD: {{ .Values.mastodon.smtp.auth_method }}
{{- end }}
- {{- if .Values.smtp.domain }}
- SMTP_DOMAIN: {{ .Values.smtp.domain }}
+ {{- if .Values.mastodon.smtp.ca_file }}
+ SMTP_CA_FILE: {{ .Values.mastodon.smtp.ca_file }}
{{- end }}
- {{- if .Values.smtp.enable_starttls_auto }}
- SMTP_ENABLE_STARTTLS_AUTO: {{ .Values.smtp.enable_starttls_auto | quote }}
+ {{- if .Values.mastodon.smtp.delivery_method }}
+ SMTP_DELIVERY_METHOD: {{ .Values.mastodon.smtp.delivery_method }}
{{- end }}
- {{- if .Values.smtp.from_address }}
- SMTP_FROM_ADDRESS: {{ .Values.smtp.from_address }}
+ {{- if .Values.mastodon.smtp.domain }}
+ SMTP_DOMAIN: {{ .Values.mastodon.smtp.domain }}
{{- end }}
- {{- if .Values.smtp.login }}
- SMTP_LOGIN: {{ .Values.smtp.login }}
+ {{- if .Values.mastodon.smtp.enable_starttls_auto }}
+ SMTP_ENABLE_STARTTLS_AUTO: {{ .Values.mastodon.smtp.enable_starttls_auto | quote }}
{{- end }}
- {{- if .Values.smtp.openssl_verify_mode }}
- SMTP_OPENSSL_VERIFY_MODE: {{ .Values.smtp.openssl_verify_mode }}
+ {{- if .Values.mastodon.smtp.from_address }}
+ SMTP_FROM_ADDRESS: {{ .Values.mastodon.smtp.from_address }}
{{- end }}
- {{- if .Values.smtp.password }}
- SMTP_PASSWORD: {{ .Values.smtp.password }}
+ {{- if .Values.mastodon.smtp.login }}
+ SMTP_LOGIN: {{ .Values.mastodon.smtp.login }}
{{- end }}
- {{- if .Values.smtp.port }}
- SMTP_PORT: {{ .Values.smtp.port | quote }}
+ {{- if .Values.mastodon.smtp.openssl_verify_mode }}
+ SMTP_OPENSSL_VERIFY_MODE: {{ .Values.mastodon.smtp.openssl_verify_mode }}
{{- end }}
- {{- if .Values.smtp.reply_to }}
- SMTP_REPLY_TO: {{ .Values.smtp.reply_to }}
+ {{- if .Values.mastodon.smtp.password }}
+ SMTP_PASSWORD: {{ .Values.mastodon.smtp.password }}
{{- end }}
- {{- if .Values.smtp.server }}
- SMTP_SERVER: {{ .Values.smtp.server }}
+ {{- if .Values.mastodon.smtp.port }}
+ SMTP_PORT: {{ .Values.mastodon.smtp.port | quote }}
{{- end }}
- {{- if .Values.smtp.tls }}
- SMTP_TLS: {{ .Values.smtp.tls | quote }}
+ {{- if .Values.mastodon.smtp.reply_to }}
+ SMTP_REPLY_TO: {{ .Values.mastodon.smtp.reply_to }}
{{- end }}
- STREAMING_CLUSTER_NUM: {{ .Values.application.streaming.workers | quote }}
+ {{- if .Values.mastodon.smtp.server }}
+ SMTP_SERVER: {{ .Values.mastodon.smtp.server }}
+ {{- end }}
+ {{- if .Values.mastodon.smtp.tls }}
+ SMTP_TLS: {{ .Values.mastodon.smtp.tls | quote }}
+ {{- end }}
+ STREAMING_CLUSTER_NUM: {{ .Values.mastodon.streaming.workers | quote }}
diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml
index 8a01a2551..3d6e25cc6 100644
--- a/chart/templates/cronjob-media-remove.yaml
+++ b/chart/templates/cronjob-media-remove.yaml
@@ -1,4 +1,4 @@
-{{ if .Values.cron.removeMedia.enabled }}
+{{ if .Values.mastodon.cron.removeMedia.enabled }}
apiVersion: batch/v1beta1
kind: CronJob
metadata:
@@ -6,7 +6,7 @@ metadata:
labels:
{{- include "mastodon.labels" . | nindent 4 }}
spec:
- schedule: {{ .Values.cron.removeMedia.schedule }}
+ schedule: {{ .Values.mastodon.cron.removeMedia.schedule }}
jobTemplate:
spec:
template:
@@ -14,9 +14,10 @@ spec:
name: {{ include "mastodon.fullname" . }}-media-remove
spec:
restartPolicy: OnFailure
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -35,6 +36,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ include "mastodon.fullname" . }}-media-remove
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -55,7 +57,7 @@ spec:
{{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
{{- else }}
- name: {{ template "mastodon.fullname" . }}-postgresql
+ name: {{ template "mastodon.fullname" . }}
{{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
@@ -64,10 +66,12 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
{{- end }}
diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml
index 5457183a3..baf6c2b2d 100644
--- a/chart/templates/deployment-sidekiq.yaml
+++ b/chart/templates/deployment-sidekiq.yaml
@@ -31,9 +31,10 @@ spec:
serviceAccountName: {{ include "mastodon.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -52,6 +53,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ .Chart.Name }}
securityContext:
@@ -63,7 +65,7 @@ spec:
- exec
- sidekiq
- -c
- - {{ .Values.application.sidekiq.concurrency | quote }}
+ - {{ .Values.mastodon.sidekiq.concurrency | quote }}
envFrom:
- configMapRef:
name: {{ include "mastodon.fullname" . }}-env
@@ -73,18 +75,24 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-redis
key: redis-password
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml
index 5d642d72c..b332b686a 100644
--- a/chart/templates/deployment-streaming.yaml
+++ b/chart/templates/deployment-streaming.yaml
@@ -43,7 +43,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -51,10 +55,10 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.streaming.port | quote }}
+ value: {{ .Values.mastodon.streaming.port | quote }}
ports:
- name: streaming
- containerPort: {{ .Values.application.streaming.port }}
+ containerPort: {{ .Values.mastodon.streaming.port }}
protocol: TCP
livenessProbe:
httpGet:
diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml
index 5010e567a..8b8bb4f29 100644
--- a/chart/templates/deployment-web.yaml
+++ b/chart/templates/deployment-web.yaml
@@ -31,6 +31,7 @@ spec:
serviceAccountName: {{ include "mastodon.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumes:
- name: assets
persistentVolumeClaim:
@@ -38,6 +39,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ .Chart.Name }}
securityContext:
@@ -59,7 +61,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -67,15 +73,17 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
ports:
- name: http
- containerPort: {{ .Values.application.web.port }}
+ containerPort: {{ .Values.mastodon.web.port }}
protocol: TCP
livenessProbe:
httpGet:
diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml
index 947bf5b70..8930d2c10 100644
--- a/chart/templates/ingress.yaml
+++ b/chart/templates/ingress.yaml
@@ -1,6 +1,7 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "mastodon.fullname" . -}}
-{{- $svcPort := .Values.service.port -}}
+{{- $webPort := .Values.mastodon.web.port -}}
+{{- $streamingPort := .Values.mastodon.streaming.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
@@ -27,15 +28,19 @@ spec:
{{- end }}
{{- end }}
rules:
- - host: {{ .Values.ingress.hostname | quote }}
+ {{- range .Values.ingress.hosts }}
+ - host: {{ .host | quote }}
http:
paths:
- - path: '/'
+ {{- range .paths }}
+ - path: {{ .path }}
backend:
serviceName: {{ $fullName }}-web
- servicePort: {{ $svcPort }}
- - path: '/api/v1/streaming'
+ servicePort: {{ $webPort }}
+ - path: {{ .path }}api/v1/streaming
backend:
serviceName: {{ $fullName }}-streaming
- servicePort: {{ .Values.application.streaming.port }}
+ servicePort: {{ $streamingPort }}
+ {{- end }}
+ {{- end }}
{{- end }}
diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml
index 5472e06d6..825a7e916 100644
--- a/chart/templates/job-assets-precompile.yaml
+++ b/chart/templates/job-assets-precompile.yaml
@@ -14,9 +14,10 @@ spec:
name: {{ include "mastodon.fullname" . }}-assets-precompile
spec:
restartPolicy: Never
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -35,6 +36,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ include "mastodon.fullname" . }}-assets-precompile
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -53,7 +55,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -61,9 +67,11 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml
index 789fcff83..cc68a3385 100644
--- a/chart/templates/job-chewy-upgrade.yaml
+++ b/chart/templates/job-chewy-upgrade.yaml
@@ -15,9 +15,10 @@ spec:
name: {{ include "mastodon.fullname" . }}-chewy-upgrade
spec:
restartPolicy: Never
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -36,6 +37,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ include "mastodon.fullname" . }}-chewy-setup
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -54,7 +56,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -62,10 +68,12 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
{{- end }}
diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml
index 3c5bdd6eb..ffb8bb059 100644
--- a/chart/templates/job-create-admin.yaml
+++ b/chart/templates/job-create-admin.yaml
@@ -1,4 +1,4 @@
-{{- if .Values.createAdmin.enabled }}
+{{- if .Values.mastodon.createAdmin.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
@@ -15,9 +15,10 @@ spec:
name: {{ include "mastodon.fullname" . }}-create-admin
spec:
restartPolicy: Never
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -36,6 +37,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ include "mastodon.fullname" . }}-create-admin
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -44,9 +46,9 @@ spec:
- bin/tootctl
- accounts
- create
- - {{ .Values.createAdmin.username }}
+ - {{ .Values.mastodon.createAdmin.username }}
- --email
- - {{ .Values.createAdmin.email }}
+ - {{ .Values.mastodon.createAdmin.email }}
- --confirmed
- --role
- admin
@@ -59,7 +61,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -67,10 +73,12 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
{{- end }}
diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml
index e07832386..72f910e3b 100644
--- a/chart/templates/job-db-migrate.yaml
+++ b/chart/templates/job-db-migrate.yaml
@@ -14,9 +14,10 @@ spec:
name: {{ include "mastodon.fullname" . }}-db-migrate
spec:
restartPolicy: Never
+ {{- if (not .Values.mastodon.s3.enabled) }}
# ensure we run on the same node as the other rails components; only
# required when using PVCs that are ReadWriteOnce
- {{- if or (eq "ReadWriteOnce" .Values.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.persistence.system.accessMode) }}
+ {{- if or (eq "ReadWriteOnce" .Values.mastodon.persistence.assets.accessMode) (eq "ReadWriteOnce" .Values.mastodon.persistence.system.accessMode) }}
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
@@ -35,6 +36,7 @@ spec:
- name: system
persistentVolumeClaim:
claimName: {{ template "mastodon.fullname" . }}-system
+ {{- end }}
containers:
- name: {{ include "mastodon.fullname" . }}-db-migrate
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -53,7 +55,11 @@ spec:
- name: "DB_PASS"
valueFrom:
secretKeyRef:
+ {{- if .Values.postgresql.enabled }}
name: {{ .Release.Name }}-postgresql
+ {{- else }}
+ name: {{ template "mastodon.fullname" . }}
+ {{- end }}
key: postgresql-password
- name: "REDIS_PASSWORD"
valueFrom:
@@ -61,9 +67,11 @@ spec:
name: {{ .Release.Name }}-redis
key: redis-password
- name: "PORT"
- value: {{ .Values.application.web.port | quote }}
+ value: {{ .Values.mastodon.web.port | quote }}
+ {{- if (not .Values.mastodon.s3.enabled) }}
volumeMounts:
- name: assets
mountPath: /opt/mastodon/public/assets
- name: system
mountPath: /opt/mastodon/public/system
+ {{- end }}
diff --git a/chart/templates/pvc-assets.yaml b/chart/templates/pvc-assets.yaml
index 5c5315100..58b2179df 100644
--- a/chart/templates/pvc-assets.yaml
+++ b/chart/templates/pvc-assets.yaml
@@ -1,4 +1,4 @@
----
+{{- if (not .Values.mastodon.s3.enabled) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
@@ -7,7 +7,8 @@ metadata:
{{- include "mastodon.labels" . | nindent 4 }}
spec:
accessModes:
- - {{ .Values.persistence.system.accessMode }}
+ - {{ .Values.mastodon.persistence.system.accessMode }}
resources:
- {{- toYaml .Values.persistence.assets.resources | nindent 4}}
- storageClassName: {{ .Values.persistence.assets.storageClassName }}
+ {{- toYaml .Values.mastodon.persistence.assets.resources | nindent 4}}
+ storageClassName: {{ .Values.mastodon.persistence.assets.storageClassName }}
+{{- end }}
diff --git a/chart/templates/pvc-system.yaml b/chart/templates/pvc-system.yaml
index 028551151..52398f0da 100644
--- a/chart/templates/pvc-system.yaml
+++ b/chart/templates/pvc-system.yaml
@@ -1,4 +1,4 @@
----
+{{- if (not .Values.mastodon.s3.enabled) }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
@@ -7,7 +7,8 @@ metadata:
{{- include "mastodon.labels" . | nindent 4 }}
spec:
accessModes:
- - {{ .Values.persistence.system.accessMode }}
+ - {{ .Values.mastodon.persistence.system.accessMode }}
resources:
- {{- toYaml .Values.persistence.system.resources | nindent 4}}
- storageClassName: {{ .Values.persistence.system.storageClassName }}
+ {{- toYaml .Values.mastodon.persistence.system.resources | nindent 4}}
+ storageClassName: {{ .Values.mastodon.persistence.system.storageClassName }}
+{{- end }}
diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml
index 74f4b1516..0452a8ae1 100644
--- a/chart/templates/secrets.yaml
+++ b/chart/templates/secrets.yaml
@@ -6,23 +6,30 @@ metadata:
{{- include "mastodon.labels" . | nindent 4 }}
type: Opaque
data:
- {{- if not (empty .Values.secrets.secret_key_base) }}
- SECRET_KEY_BASE: "{{ .Values.secrets.secret_key_base | b64enc }}"
- {{- else }}
- SECRET_KEY_BASE: {{ required "secret_key_base is required" .Values.secrets.secret_key_base }}
+ {{- if .Values.mastodon.s3.enabled }}
+ AWS_ACCESS_KEY_ID: "{{ .Values.mastodon.s3.access_key | b64enc }}"
+ AWS_SECRET_ACCESS_KEY: "{{ .Values.mastodon.s3.access_secret | b64enc }}"
{{- end }}
- {{- if not (empty .Values.secrets.otp_secret) }}
- OTP_SECRET: "{{ .Values.secrets.otp_secret | b64enc }}"
+ {{- if not (empty .Values.mastodon.secrets.secret_key_base) }}
+ SECRET_KEY_BASE: "{{ .Values.mastodon.secrets.secret_key_base | b64enc }}"
{{- else }}
- OTP_SECRET: {{ required "otp_secret is required" .Values.secrets.otp_secret }}
+ SECRET_KEY_BASE: {{ required "secret_key_base is required" .Values.mastodon.secrets.secret_key_base }}
{{- end }}
- {{- if not (empty .Values.secrets.vapid.private_key) }}
- VAPID_PRIVATE_KEY: "{{ .Values.secrets.vapid.private_key | b64enc }}"
+ {{- if not (empty .Values.mastodon.secrets.otp_secret) }}
+ OTP_SECRET: "{{ .Values.mastodon.secrets.otp_secret | b64enc }}"
{{- else }}
- VAPID_PRIVATE_KEY: {{ required "vapid.private_key is required" .Values.secrets.vapid.private_key }}
+ OTP_SECRET: {{ required "otp_secret is required" .Values.mastodon.secrets.otp_secret }}
{{- end }}
- {{- if not (empty .Values.secrets.vapid.public_key) }}
- VAPID_PUBLIC_KEY: "{{ .Values.secrets.vapid.public_key | b64enc }}"
+ {{- if not (empty .Values.mastodon.secrets.vapid.private_key) }}
+ VAPID_PRIVATE_KEY: "{{ .Values.mastodon.secrets.vapid.private_key | b64enc }}"
{{- else }}
- VAPID_PUBLIC_KEY: {{ required "vapid.public_key is required" .Values.secrets.vapid.public_key }}
+ VAPID_PRIVATE_KEY: {{ required "vapid.private_key is required" .Values.mastodon.secrets.vapid.private_key }}
+ {{- end }}
+ {{- if not (empty .Values.mastodon.secrets.vapid.public_key) }}
+ VAPID_PUBLIC_KEY: "{{ .Values.mastodon.secrets.vapid.public_key | b64enc }}"
+ {{- else }}
+ VAPID_PUBLIC_KEY: {{ required "vapid.public_key is required" .Values.mastodon.secrets.vapid.public_key }}
+ {{- end }}
+ {{- if not .Values.postgresql.enabled }}
+ postgresql-password: "{{ .Values.postgresql.postgresqlPassword | b64enc }}"
{{- end }}
diff --git a/chart/templates/service-streaming.yaml b/chart/templates/service-streaming.yaml
index ff5dc13ea..a005e617c 100644
--- a/chart/templates/service-streaming.yaml
+++ b/chart/templates/service-streaming.yaml
@@ -7,7 +7,7 @@ metadata:
spec:
type: {{ .Values.service.type }}
ports:
- - port: {{ .Values.application.streaming.port }}
+ - port: {{ .Values.mastodon.streaming.port }}
targetPort: streaming
protocol: TCP
name: streaming
diff --git a/chart/templates/service-web.yaml b/chart/templates/service-web.yaml
index e0df35b25..3563fde70 100644
--- a/chart/templates/service-web.yaml
+++ b/chart/templates/service-web.yaml
@@ -7,7 +7,7 @@ metadata:
spec:
type: {{ .Values.service.type }}
ports:
- - port: {{ .Values.service.port }}
+ - port: {{ .Values.mastodon.web.port }}
targetPort: http
protocol: TCP
name: http
diff --git a/chart/values.yaml.template b/chart/values.yaml
similarity index 63%
rename from chart/values.yaml.template
rename to chart/values.yaml
index 9e50c6dac..ff45a7b61 100644
--- a/chart/values.yaml.template
+++ b/chart/values.yaml
@@ -2,16 +2,87 @@ replicaCount: 1
image:
repository: tootsuite/mastodon
- pullPolicy: Always
# https://hub.docker.com/r/tootsuite/mastodon/tags
- tag: v3.3.0
+ #
# alternatively, use `latest` for the latest release or `edge` for the image
# built from the most recent commit
#
# tag: latest
+ tag: v3.3.0
+ # use `Always` when using `latest` tag
+ pullPolicy: IfNotPresent
+
+mastodon:
+ # create an initial administrator user; the password is autogenerated and will
+ # have to be reset
+ createAdmin:
+ enabled: false
+ username: not_gargron
+ email: not@example.com
+ cron:
+ # run `tootctl media remove` every week
+ removeMedia:
+ enabled: true
+ schedule: "0 0 * * 0"
+ # available locales: https://github.com/tootsuite/mastodon/blob/master/config/application.rb#L43
+ locale: en
+ local_domain: mastodon.local
+ persistence:
+ assets:
+ # ReadWriteOnce is more widely supported than ReadWriteMany, but limits
+ # scalability, since it requires the Rails and Sidekiq pods to run on the
+ # same node.
+ accessMode: ReadWriteOnce
+ resources:
+ requests:
+ storage: 10Gi
+ system:
+ accessMode: ReadWriteOnce
+ resources:
+ requests:
+ storage: 100Gi
+ s3:
+ enabled: false
+ access_key: ""
+ access_secret: ""
+ bucket: ""
+ endpoint: https://us-east-1.linodeobjects.com
+ hostname: us-east-1.linodeobjects.com
+ region: ""
+ # these must be set manually; autogenerated keys are rotated on each upgrade
+ secrets:
+ secret_key_base: ""
+ otp_secret: ""
+ vapid:
+ private_key: ""
+ public_key: ""
+ sidekiq:
+ concurrency: 25
+ smtp:
+ auth_method: plain
+ ca_file: /etc/ssl/certs/ca-certificates.crt
+ delivery_method: smtp
+ domain:
+ enable_starttls_auto: true
+ from_address: notifications@example.com
+ login:
+ openssl_verify_mode: peer
+ password:
+ port: 587
+ reply_to:
+ server: smtp.mailgun.org
+ tls: false
+ streaming:
+ port: 4000
+ # this should be set manually since os.cpus() returns the number of CPUs on
+ # the node running the pod, which is unrelated to the resources allocated to
+ # the pod by k8s
+ workers: 1
+ web:
+ port: 3000
ingress:
- enabled: false
+ enabled: true
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
@@ -22,64 +93,15 @@ ingress:
# nginx.ingress.kubernetes.io/proxy-body-size: 40m
# for the NGINX ingress controller:
# nginx.org/client-max-body-size: 40m
- # this value is used for LOCAL_DOMAIN
- hostname: mastodon.local
+ hosts:
+ - host: mastodon.local
+ paths:
+ - path: '/'
tls:
- secretName: mastodon-tls
hosts:
- mastodon.local
-# create an initial administrator user; the password is autogenerated and will
-# have to be reset
-createAdmin:
- enabled: false
- username: not_gargron
- email: not@example.com
-
-# available locales: https://github.com/tootsuite/mastodon/blob/master/config/application.rb#L43
-locale: en
-
-cron:
- # run `tootctl media remove` every week
- removeMedia:
- enabled: true
- schedule: "0 0 * * 0"
-
-application:
- web:
- port: 3000
- streaming:
- port: 4000
- # this should be set manually since os.cpus() returns the number of CPUs on
- # the node running the pod, which is unrelated to the resources allocated to
- # the pod by k8s
- workers: 1
- sidekiq:
- concurrency: 25
-
-# these must be set manually; autogenerated keys are rotated on each upgrade
-secrets:
- secret_key_base: ""
- otp_secret: ""
- vapid:
- private_key: ""
- public_key: ""
-
-smtp:
- auth_method: plain
- ca_file:
- delivery_method: smtp
- domain:
- enable_starttls_auto: true
- from_address: notifications@example.com
- login:
- openssl_verify_mode: peer
- password:
- port: 587
- reply_to:
- server: smtp.mailgun.org
- tls: false
-
# https://github.com/bitnami/charts/tree/master/bitnami/elasticsearch#parameters
elasticsearch:
# `false` will disable full-text search
@@ -95,6 +117,10 @@ elasticsearch:
# https://github.com/bitnami/charts/tree/master/bitnami/postgresql#parameters
postgresql:
+ # disable if you want to use an existing db; in which case the values below
+ # must match those of that external postgres instance
+ enabled: true
+ # postgresqlHostname: preexisting-postgresql
postgresqlDatabase: mastodon_production
# you must set a password; the password generated by the postgresql chart will
# be rotated on each upgrade:
@@ -108,21 +134,6 @@ redis:
# rotated on each upgrade:
password: ""
-persistence:
- assets:
- # ReadWriteOnce is more widely supported than ReadWriteMany, but limits
- # scalability, since it requires the Rails and Sidekiq pods to run on the
- # same node.
- accessMode: ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
- system:
- accessMode: ReadWriteOnce
- resources:
- requests:
- storage: 100Gi
-
service:
type: ClusterIP
port: 80
diff --git a/config/application.rb b/config/application.rb
index af7735221..68855a567 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -1,22 +1,38 @@
require_relative 'boot'
-require 'rails/all'
+require 'rails'
+
+require 'active_record/railtie'
+#require 'active_storage/engine'
+require 'action_controller/railtie'
+require 'action_view/railtie'
+require 'action_mailer/railtie'
+require 'active_job/railtie'
+#require 'action_cable/engine'
+#require 'action_mailbox/engine'
+#require 'action_text/engine'
+#require 'rails/test_unit/railtie'
+require 'sprockets/railtie'
+
+# Used to be implicitly required in action_mailbox/engine
+require 'mail'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
-require_relative '../app/lib/exceptions'
+require_relative '../lib/exceptions'
+require_relative '../lib/enumerable'
+require_relative '../lib/sanitize_ext/sanitize_config'
require_relative '../lib/redis/namespace_extensions'
require_relative '../lib/paperclip/url_generator_extensions'
require_relative '../lib/paperclip/attachment_extensions'
-require_relative '../lib/paperclip/media_type_spoof_detector_extensions'
-require_relative '../lib/paperclip/transcoder_extensions'
require_relative '../lib/paperclip/lazy_thumbnail'
require_relative '../lib/paperclip/gif_transcoder'
-require_relative '../lib/paperclip/video_transcoder'
+require_relative '../lib/paperclip/transcoder'
require_relative '../lib/paperclip/type_corrector'
require_relative '../lib/paperclip/response_with_limit_adapter'
+require_relative '../lib/terrapin/multi_pipe_extensions'
require_relative '../lib/mastodon/snowflake'
require_relative '../lib/mastodon/version'
require_relative '../lib/devise/two_factor_ldap_authenticatable'
@@ -24,6 +40,10 @@ require_relative '../lib/devise/two_factor_pam_authenticatable'
require_relative '../lib/chewy/strategy/custom_sidekiq'
require_relative '../lib/webpacker/manifest_extensions'
require_relative '../lib/webpacker/helper_extensions'
+require_relative '../lib/action_dispatch/cookie_jar_extensions'
+require_relative '../lib/rails/engine_extensions'
+require_relative '../lib/active_record/database_tasks_extensions'
+require_relative '../lib/active_record/batches'
Dotenv::Railtie.load
@@ -34,7 +54,8 @@ require_relative '../lib/mastodon/redis_config'
module Mastodon
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 5.2
+ config.load_defaults 6.1
+ config.add_autoload_paths_to_load_path = false
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
@@ -47,6 +68,7 @@ module Mastodon
# All translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.available_locales = [
+ :af,
:ar,
:ast,
:bg,
@@ -63,12 +85,14 @@ module Mastodon
:eo,
:es,
:'es-AR',
+ :'es-MX',
:et,
:eu,
:fa,
:fi,
:fr,
:ga,
+ :gd,
:gl,
:he,
:hi,
@@ -103,6 +127,7 @@ module Mastodon
:ru,
:sa,
:sc,
+ :si,
:sk,
:sl,
:sq,
diff --git a/config/boot.rb b/config/boot.rb
index 6cde5319d..4e379e7db 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -12,8 +12,6 @@ Bootsnap.setup(
cache_dir: File.expand_path('../tmp/cache', __dir__),
development_mode: ENV.fetch('RAILS_ENV', 'development') == 'development',
load_path_cache: true,
- autoload_paths_cache: true,
- disable_trace: false,
compile_cache_iseq: false,
compile_cache_yaml: false
)
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
index dcbfd02b4..35f2c3178 100644
--- a/config/brakeman.ignore
+++ b/config/brakeman.ignore
@@ -7,7 +7,7 @@
"check_name": "SQL",
"message": "Possible SQL injection",
"file": "app/models/report.rb",
- "line": 112,
+ "line": 113,
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "Admin::ActionLog.from(\"(#{[Admin::ActionLog.where(:target_type => \"Report\", :target_id => id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Account\", :target_id => target_account_id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)].map do\n \"(#{query.to_sql})\"\n end.join(\" UNION ALL \")}) AS admin_action_logs\")",
"render_path": null,
@@ -40,99 +40,6 @@
"confidence": "Weak",
"note": ""
},
- {
- "warning_type": "Dynamic Render Path",
- "warning_code": 15,
- "fingerprint": "20a660939f2bbf8c665e69f2844031c0564524689a9570a0091ed94846212020",
- "check_name": "Render",
- "message": "Render path contains parameter value",
- "file": "app/views/admin/action_logs/index.html.haml",
- "line": 26,
- "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
- "code": "render(action => Admin::ActionLogFilter.new(filter_params).results.page(params[:page]), {})",
- "render_path": [
- {
- "type": "controller",
- "class": "Admin::ActionLogsController",
- "method": "index",
- "line": 8,
- "file": "app/controllers/admin/action_logs_controller.rb",
- "rendered": {
- "name": "admin/action_logs/index",
- "file": "app/views/admin/action_logs/index.html.haml"
- }
- }
- ],
- "location": {
- "type": "template",
- "template": "admin/action_logs/index"
- },
- "user_input": "params[:page]",
- "confidence": "Weak",
- "note": ""
- },
- {
- "warning_type": "Dynamic Render Path",
- "warning_code": 15,
- "fingerprint": "371fe16dc4c9d6ab08a20437d65be4825776107a67c38f6d4780a9c703cd44a5",
- "check_name": "Render",
- "message": "Render path contains parameter value",
- "file": "app/views/admin/email_domain_blocks/index.html.haml",
- "line": 17,
- "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
- "code": "render(action => EmailDomainBlock.where(:parent_id => nil).includes(:children).order(:id => :desc).page(params[:page]), {})",
- "render_path": [
- {
- "type": "controller",
- "class": "Admin::EmailDomainBlocksController",
- "method": "index",
- "line": 10,
- "file": "app/controllers/admin/email_domain_blocks_controller.rb",
- "rendered": {
- "name": "admin/email_domain_blocks/index",
- "file": "app/views/admin/email_domain_blocks/index.html.haml"
- }
- }
- ],
- "location": {
- "type": "template",
- "template": "admin/email_domain_blocks/index"
- },
- "user_input": "params[:page]",
- "confidence": "Weak",
- "note": ""
- },
- {
- "warning_type": "Dynamic Render Path",
- "warning_code": 15,
- "fingerprint": "4704e8093e3e0561bf705f892e8fc6780419f8255f4440b1c0afd09339bd6446",
- "check_name": "Render",
- "message": "Render path contains parameter value",
- "file": "app/views/admin/instances/index.html.haml",
- "line": 39,
- "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
- "code": "render(action => filtered_instances.page(params[:page]), {})",
- "render_path": [
- {
- "type": "controller",
- "class": "Admin::InstancesController",
- "method": "index",
- "line": 10,
- "file": "app/controllers/admin/instances_controller.rb",
- "rendered": {
- "name": "admin/instances/index",
- "file": "app/views/admin/instances/index.html.haml"
- }
- }
- ],
- "location": {
- "type": "template",
- "template": "admin/instances/index"
- },
- "user_input": "params[:page]",
- "confidence": "Weak",
- "note": ""
- },
{
"warning_type": "Redirect",
"warning_code": 18,
@@ -160,7 +67,7 @@
"check_name": "SQL",
"message": "Possible SQL injection",
"file": "app/models/account.rb",
- "line": 491,
+ "line": 479,
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "find_by_sql([\" WITH first_degree AS (\\n SELECT target_account_id\\n FROM follows\\n WHERE account_id = ?\\n UNION ALL\\n SELECT ?\\n )\\n SELECT\\n accounts.*,\\n (count(f.id) + 1) * ts_rank_cd(#{textsearch}, #{query}, 32) AS rank\\n FROM accounts\\n LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?)\\n WHERE accounts.id IN (SELECT * FROM first_degree)\\n AND #{query} @@ #{textsearch}\\n AND accounts.suspended_at IS NULL\\n AND accounts.moved_to_account_id IS NULL\\n GROUP BY accounts.id\\n ORDER BY rank DESC\\n LIMIT ? OFFSET ?\\n\".squish, account.id, account.id, account.id, limit, offset])",
"render_path": null,
@@ -213,6 +120,26 @@
"confidence": "High",
"note": ""
},
+ {
+ "warning_type": "Mass Assignment",
+ "warning_code": 105,
+ "fingerprint": "874be88fedf4c680926845e9a588d3197765a6ccbfdd76466b44cc00151c612e",
+ "check_name": "PermitAttributes",
+ "message": "Potentially dangerous key allowed for mass assignment",
+ "file": "app/controllers/api/v1/admin/reports_controller.rb",
+ "line": 78,
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
+ "code": "params.permit(:resolved, :account_id, :target_account_id)",
+ "render_path": null,
+ "location": {
+ "type": "method",
+ "class": "Api::V1::Admin::ReportsController",
+ "method": "filter_params"
+ },
+ "user_input": ":account_id",
+ "confidence": "High",
+ "note": ""
+ },
{
"warning_type": "SQL Injection",
"warning_code": 0,
@@ -220,7 +147,7 @@
"check_name": "SQL",
"message": "Possible SQL injection",
"file": "app/models/account.rb",
- "line": 460,
+ "line": 448,
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "find_by_sql([\" SELECT\\n accounts.*,\\n ts_rank_cd(#{textsearch}, #{query}, 32) AS rank\\n FROM accounts\\n WHERE #{query} @@ #{textsearch}\\n AND accounts.suspended_at IS NULL\\n AND accounts.moved_to_account_id IS NULL\\n ORDER BY rank DESC\\n LIMIT ? OFFSET ?\\n\".squish, limit, offset])",
"render_path": null,
@@ -253,37 +180,6 @@
"confidence": "Medium",
"note": ""
},
- {
- "warning_type": "Dynamic Render Path",
- "warning_code": 15,
- "fingerprint": "9f31d941f3910dba2e9bfcd81aef4513249bd24c02d0f98e13ad44fdeeccd0e8",
- "check_name": "Render",
- "message": "Render path contains parameter value",
- "file": "app/views/admin/accounts/index.html.haml",
- "line": 54,
- "link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
- "code": "render(action => filtered_accounts.page(params[:page]), {})",
- "render_path": [
- {
- "type": "controller",
- "class": "Admin::AccountsController",
- "method": "index",
- "line": 12,
- "file": "app/controllers/admin/accounts_controller.rb",
- "rendered": {
- "name": "admin/accounts/index",
- "file": "app/views/admin/accounts/index.html.haml"
- }
- }
- ],
- "location": {
- "type": "template",
- "template": "admin/accounts/index"
- },
- "user_input": "params[:page]",
- "confidence": "Weak",
- "note": ""
- },
{
"warning_type": "Redirect",
"warning_code": 18,
@@ -331,7 +227,7 @@
"check_name": "SQL",
"message": "Possible SQL injection",
"file": "app/models/account.rb",
- "line": 507,
+ "line": 495,
"link": "https://brakemanscanner.org/docs/warning_types/sql_injection/",
"code": "find_by_sql([\" SELECT\\n accounts.*,\\n (count(f.id) + 1) * ts_rank_cd(#{textsearch}, #{query}, 32) AS rank\\n FROM accounts\\n LEFT OUTER JOIN follows AS f ON (accounts.id = f.account_id AND f.target_account_id = ?) OR (accounts.id = f.target_account_id AND f.account_id = ?)\\n WHERE #{query} @@ #{textsearch}\\n AND accounts.suspended_at IS NULL\\n AND accounts.moved_to_account_id IS NULL\\n GROUP BY accounts.id\\n ORDER BY rank DESC\\n LIMIT ? OFFSET ?\\n\".squish, account.id, account.id, limit, offset])",
"render_path": null,
@@ -365,6 +261,6 @@
"note": ""
}
],
- "updated": "2020-12-07 01:17:13 +0100",
- "brakeman_version": "4.10.0"
+ "updated": "2021-05-11 20:22:27 +0900",
+ "brakeman_version": "5.0.1"
}
diff --git a/config/deploy.rb b/config/deploy.rb
index 5d6873588..f642e6e59 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -1,8 +1,8 @@
# frozen_string_literal: true
-lock '3.14.1'
+lock '3.16.0'
-set :repo_url, ENV.fetch('REPO', 'https://github.com/tootsuite/mastodon.git')
+set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git')
set :branch, ENV.fetch('BRANCH', 'master')
set :application, 'mastodon'
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 0791b82ab..d76361c60 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -17,7 +17,7 @@ Rails.application.configure do
if Rails.root.join('tmp/caching-dev.txt').exist?
config.action_controller.perform_caching = true
- config.cache_store = :redis_store, ENV['REDIS_URL'], REDIS_CACHE_PARAMS
+ config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
config.public_file_server.headers = {
'Cache-Control' => "public, max-age=#{2.days.to_i}",
diff --git a/config/environments/production.rb b/config/environments/production.rb
index fdc9a3c34..5c15553d8 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -44,6 +44,13 @@ Rails.application.configure do
# Allow to specify public IP of reverse proxy if it's needed
config.action_dispatch.trusted_proxies = ENV['TRUSTED_PROXY_IP'].split.map { |item| IPAddr.new(item) } if ENV['TRUSTED_PROXY_IP'].present?
+ config.force_ssl = true
+ config.ssl_options = {
+ redirect: {
+ exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') }
+ }
+ }
+
# Use the lowest log level to ensure availability of diagnostic information
# when problems arise.
config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym
@@ -52,7 +59,7 @@ Rails.application.configure do
config.log_tags = [:request_id]
# Use a different cache store in production.
- config.cache_store = :redis_store, ENV['CACHE_REDIS_URL'], REDIS_CACHE_PARAMS
+ config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
@@ -83,9 +90,12 @@ Rails.application.configure do
config.action_mailer.perform_caching = false
# E-mails
+ outgoing_email_address = ENV.fetch('SMTP_FROM_ADDRESS', 'notifications@localhost')
+ outgoing_mail_domain = Mail::Address.new(outgoing_email_address).domain
config.action_mailer.default_options = {
- from: ENV.fetch('SMTP_FROM_ADDRESS', 'notifications@localhost'),
- reply_to: ENV['SMTP_REPLY_TO']
+ from: outgoing_email_address,
+ reply_to: ENV['SMTP_REPLY_TO'],
+ 'Message-ID': -> { "<#{Mail.random_tag}@#{outgoing_mail_domain}>" },
}
config.action_mailer.smtp_settings = {
@@ -109,6 +119,7 @@ Rails.application.configure do
'X-Frame-Options' => 'DENY',
'X-Content-Type-Options' => 'nosniff',
'X-XSS-Protection' => '1; mode=block',
+ 'Permissions-Policy' => 'interest-cohort=()',
'Referrer-Policy' => 'same-origin',
'Strict-Transport-Security' => 'max-age=63072000; includeSubDomains; preload',
'X-Clacks-Overhead' => 'GNU Natalie Nguyen, Terry Pratchett, Chloe Sagal, Aaron Swartz, George Buzinkai, Aimee Australia Stephens'
diff --git a/config/initializers/0_duplicate_migrations.rb b/config/initializers/0_duplicate_migrations.rb
index 194aff70c..6c45e4bd2 100644
--- a/config/initializers/0_duplicate_migrations.rb
+++ b/config/initializers/0_duplicate_migrations.rb
@@ -16,7 +16,7 @@ ALLOWED_DUPLICATES = [20180410220657, 20180831171112].freeze
module ActiveRecord
class Migrator
- def self.new(direction, migrations, target_version = nil)
+ def self.new(direction, migrations, schema_migration, target_version = nil)
migrated = Set.new(Base.connection.migration_context.get_all_versions)
migrations.group_by(&:name).each do |name, duplicates|
@@ -34,7 +34,7 @@ module ActiveRecord
end
end
- super(direction, migrations, target_version)
+ super(direction, migrations, schema_migration, target_version)
end
end
diff --git a/config/initializers/1_hosts.rb b/config/initializers/1_hosts.rb
index 757f1f735..6ff0845c4 100644
--- a/config/initializers/1_hosts.rb
+++ b/config/initializers/1_hosts.rb
@@ -4,7 +4,7 @@ port = ENV.fetch('PORT') { 3000 }
host = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" }
web_host = ENV.fetch('WEB_DOMAIN') { host }
-alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' }
+alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' }.split(/\s*,\s*/)
Rails.application.configure do
https = Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'
@@ -15,7 +15,7 @@ Rails.application.configure do
config.x.use_s3 = ENV['S3_ENABLED'] == 'true'
config.x.use_swift = ENV['SWIFT_ENABLED'] == 'true'
- config.x.alternate_domains = alternate_domains.split(/\s*,\s*/)
+ config.x.alternate_domains = alternate_domains
config.action_mailer.default_url_options = { host: web_host, protocol: https ? 'https://' : 'http://', trailing_slash: false }
@@ -26,4 +26,11 @@ Rails.application.configure do
"ws://#{ENV['REMOTE_DEV'] == 'true' ? host.split(':').first : 'localhost'}:4000"
end
end
+
+ unless Rails.env.test?
+ config.hosts << host if host.present?
+ config.hosts << web_host if web_host.present?
+ config.hosts.concat(alternate_domains) if alternate_domains.present?
+ config.host_authorization = { exclude: ->(request) { request.path == '/health' } }
+ end
end
diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb
index 51639b67a..89d2efab2 100644
--- a/config/initializers/application_controller_renderer.rb
+++ b/config/initializers/application_controller_renderer.rb
@@ -1,6 +1,8 @@
# Be sure to restart your server when you modify this file.
-# ApplicationController.renderer.defaults.merge!(
-# http_host: 'example.org',
-# https: false
-# )
+# ActiveSupport::Reloader.to_prepare do
+# ApplicationController.renderer.defaults.merge!(
+# http_host: 'example.org',
+# https: false
+# )
+# end
diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
index 59385cdf3..33699c309 100644
--- a/config/initializers/backtrace_silencers.rb
+++ b/config/initializers/backtrace_silencers.rb
@@ -1,7 +1,8 @@
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) }
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
-# Rails.backtrace_cleaner.remove_silencers!
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
+# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
+Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 68d3751fc..549ac3568 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -51,23 +51,15 @@ end
Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
-# Monkey-patching Rails 5
-module ActionDispatch
- class ContentSecurityPolicy
- def nonce_directive?(directive)
- directive == 'style-src'
- end
+Rails.application.config.content_security_policy_nonce_directives = %w(style-src)
+
+Rails.application.reloader.to_prepare do
+ PgHero::HomeController.content_security_policy do |p|
+ p.script_src :self, :unsafe_inline, assets_host
+ p.style_src :self, :unsafe_inline, assets_host
+ end
+
+ PgHero::HomeController.after_action do
+ request.content_security_policy_nonce_generator = nil
end
end
-
-# Rails 6 would require the following instead:
-# Rails.application.config.content_security_policy_nonce_directives = %w(style-src)
-
-PgHero::HomeController.content_security_policy do |p|
- p.script_src :self, :unsafe_inline, assets_host
- p.style_src :self, :unsafe_inline, assets_host
-end
-
-PgHero::HomeController.after_action do
- request.content_security_policy_nonce_generator = nil
-end
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index 63cff7c59..f78db8653 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -52,6 +52,11 @@ Doorkeeper.configure do
# Issue access tokens with refresh token (disabled by default)
# use_refresh_token
+ # Forbids creating/updating applications with arbitrary scopes that are
+ # not in configuration, i.e. `default_scopes` or `optional_scopes`.
+ # (Disabled by default)
+ enforce_configured_scopes
+
# Provide support for an owner to be assigned to each registered application (disabled by default)
# Optional parameter :confirmation => true (default false) if you want to enforce ownership of
# a registered application
diff --git a/config/initializers/fast_blank.rb b/config/initializers/fast_blank.rb
index 174ea7664..f0b7cac78 100644
--- a/config/initializers/fast_blank.rb
+++ b/config/initializers/fast_blank.rb
@@ -1,5 +1,5 @@
if String.method_defined?(:blank_as?)
class String
- alias_method :blank?, :blank_as?
+ alias blank? blank_as?
end
end
diff --git a/config/initializers/health_check.rb b/config/initializers/health_check.rb
deleted file mode 100644
index 6f1e78fed..000000000
--- a/config/initializers/health_check.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-HealthCheck.setup do |config|
- config.uri = 'health'
-
- config.standard_checks = %w(database migrations cache)
- config.full_checks = %w(database migrations cache)
-
- config.include_error_in_response_body = false
-end
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index ebb7541eb..9bc9a54b2 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -20,6 +20,10 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'JsonLd'
inflect.acronym 'NodeInfo'
inflect.acronym 'Ed25519'
+ inflect.acronym 'TOC'
+ inflect.acronym 'RSS'
+ inflect.acronym 'REST'
+ inflect.acronym 'URL'
inflect.singular 'data', 'data'
end
diff --git a/config/initializers/delivery_job.rb b/config/initializers/mail_delivery_job.rb
similarity index 52%
rename from config/initializers/delivery_job.rb
rename to config/initializers/mail_delivery_job.rb
index cc2927272..327817396 100644
--- a/config/initializers/delivery_job.rb
+++ b/config/initializers/mail_delivery_job.rb
@@ -1,3 +1,3 @@
-ActionMailer::DeliveryJob.class_eval do
+ActionMailer::MailDeliveryJob.class_eval do
discard_on ActiveJob::DeserializationError
end
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
index e8d7697a1..5039b4c1f 100644
--- a/config/initializers/omniauth.rb
+++ b/config/initializers/omniauth.rb
@@ -30,6 +30,8 @@ Devise.setup do |config|
cas_options[:location_key] = ENV['CAS_LOCATION_KEY'] || 'location'
cas_options[:image_key] = ENV['CAS_IMAGE_KEY'] || 'image'
cas_options[:phone_key] = ENV['CAS_PHONE_KEY'] || 'phone'
+ cas_options[:security] = {}
+ cas_options[:security][:assume_email_is_verified] = ENV['CAS_SECURITY_ASSUME_EMAIL_IS_VERIFIED'] == 'true'
config.omniauth :cas, cas_options
end
@@ -60,6 +62,7 @@ Devise.setup do |config|
saml_options[:attribute_statements][:verified] = [ENV['SAML_ATTRIBUTES_STATEMENTS_VERIFIED']] if ENV['SAML_ATTRIBUTES_STATEMENTS_VERIFIED']
saml_options[:attribute_statements][:verified_email] = [ENV['SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL']] if ENV['SAML_ATTRIBUTES_STATEMENTS_VERIFIED_EMAIL']
saml_options[:uid_attribute] = ENV['SAML_UID_ATTRIBUTE'] if ENV['SAML_UID_ATTRIBUTE']
+ saml_options[:allowed_clock_drift] = ENV['SAML_ALLOWED_CLOCK_DRIFT'] if ENV['SAML_ALLOWED_CLOCK_DRIFT']
config.omniauth :saml, saml_options
end
end
diff --git a/config/initializers/open_uri_redirection.rb b/config/initializers/open_uri_redirection.rb
index e9de85bdc..0e57c53c6 100644
--- a/config/initializers/open_uri_redirection.rb
+++ b/config/initializers/open_uri_redirection.rb
@@ -3,6 +3,6 @@ require 'open-uri'
module OpenURI
def self.redirectable?(uri1, uri2) # :nodoc:
uri1.scheme.casecmp(uri2.scheme).zero? ||
- (/\A(?:http|https|ftp)\z/i =~ uri1.scheme && /\A(?:http|https|ftp)\z/i =~ uri2.scheme)
+ (/\A(?:http|https|ftp)\z/i.match?(uri1.scheme) && /\A(?:http|https|ftp)\z/i.match?(uri2.scheme))
end
end
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index 9ad7fd814..e2a045647 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -112,7 +112,9 @@ else
)
end
-Paperclip.options[:content_type_mappings] = { csv: Import::FILE_TYPES }
+Rails.application.reloader.to_prepare do
+ Paperclip.options[:content_type_mappings] = { csv: Import::FILE_TYPES }
+end
# In some places in the code, we rescue this exception, but we don't always
# load the S3 library, so it may be an undefined constant:
diff --git a/config/initializers/permissions_policy.rb b/config/initializers/permissions_policy.rb
new file mode 100644
index 000000000..00f64d71b
--- /dev/null
+++ b/config/initializers/permissions_policy.rb
@@ -0,0 +1,11 @@
+# Define an application-wide HTTP permissions policy. For further
+# information see https://developers.google.com/web/updates/2018/06/feature-policy
+#
+# Rails.application.config.permissions_policy do |f|
+# f.camera :none
+# f.gyroscope :none
+# f.microphone :none
+# f.usb :none
+# f.fullscreen :self
+# f.payment :self, "https://secure.example.com"
+# end
diff --git a/config/initializers/preload_link_headers.rb b/config/initializers/preload_link_headers.rb
new file mode 100644
index 000000000..9f21c45ec
--- /dev/null
+++ b/config/initializers/preload_link_headers.rb
@@ -0,0 +1,8 @@
+# Since Rails 6.1, ActionView adds preload links for javascript files
+# in the Links header per default.
+
+# In our case, that will bloat headers too much and potentially cause
+# issues with reverse proxies. Furhermore, we don't need those links,
+# as we already output them as HTML link tags.
+
+Rails.application.config.action_view.preload_links_header = false
diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb
index 6662ef40b..2a6cca7dc 100644
--- a/config/initializers/rack_attack.rb
+++ b/config/initializers/rack_attack.rb
@@ -78,7 +78,7 @@ class Rack::Attack
API_DELETE_STATUS_REGEX = /\A\/api\/v1\/statuses\/[\d]+/.freeze
throttle('throttle_api_delete', limit: 30, period: 30.minutes) do |req|
- req.authenticated_user_id if (req.post? && req.path =~ API_DELETE_REBLOG_REGEX) || (req.delete? && req.path =~ API_DELETE_STATUS_REGEX)
+ req.authenticated_user_id if (req.post? && req.path.match?(API_DELETE_REBLOG_REGEX)) || (req.delete? && req.path.match?(API_DELETE_STATUS_REGEX))
end
throttle('throttle_sign_up_attempts/ip', limit: 25, period: 5.minutes) do |req|
@@ -94,11 +94,15 @@ class Rack::Attack
end
throttle('throttle_email_confirmations/ip', limit: 25, period: 5.minutes) do |req|
- req.remote_ip if req.post? && req.path == '/auth/confirmation'
+ req.remote_ip if req.post? && %w(/auth/confirmation /api/v1/emails/confirmations).include?(req.path)
end
throttle('throttle_email_confirmations/email', limit: 5, period: 30.minutes) do |req|
- req.params.dig('user', 'email').presence if req.post? && req.path == '/auth/password'
+ if req.post? && req.path == '/auth/password'
+ req.params.dig('user', 'email').presence
+ elsif req.post? && req.path == '/api/v1/emails/confirmations'
+ req.authenticated_user_id
+ end
end
throttle('throttle_login_attempts/ip', limit: 25, period: 5.minutes) do |req|
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index e5d1be4c6..3d9bf96fd 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -1,7 +1,6 @@
# Be sure to restart your server when you modify this file.
-Rails.application.config.session_store :cookie_store, {
+Rails.application.config.session_store :cookie_store,
key: '_mastodon_session',
secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
- same_site: :lax,
-}
+ same_site: :lax
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index f2733562f..219554df4 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -1,27 +1,36 @@
# frozen_string_literal: true
-namespace = ENV.fetch('REDIS_NAMESPACE') { nil }
-redis_params = { url: ENV['REDIS_URL'] }
-
-if namespace
- redis_params[:namespace] = namespace
-end
-
Sidekiq.configure_server do |config|
- config.redis = redis_params
+ config.redis = REDIS_SIDEKIQ_PARAMS
config.server_middleware do |chain|
chain.add SidekiqErrorHandler
end
- config.death_handlers << lambda do |job, _ex|
- digest = job['lock_digest']
- SidekiqUniqueJobs::Digests.delete_by_digest(digest) if digest
+ config.server_middleware do |chain|
+ chain.add SidekiqUniqueJobs::Middleware::Server
end
+
+ config.client_middleware do |chain|
+ chain.add SidekiqUniqueJobs::Middleware::Client
+ end
+
+ SidekiqUniqueJobs::Server.configure(config)
end
Sidekiq.configure_client do |config|
- config.redis = redis_params
+ config.redis = REDIS_SIDEKIQ_PARAMS
+
+ config.client_middleware do |chain|
+ chain.add SidekiqUniqueJobs::Middleware::Client
+ end
end
Sidekiq.logger.level = ::Logger.const_get(ENV.fetch('RAILS_LOG_LEVEL', 'info').upcase.to_s)
+
+SidekiqUniqueJobs.configure do |config|
+ config.reaper = :ruby
+ config.reaper_count = 1000
+ config.reaper_interval = 600
+ config.reaper_timeout = 150
+end
diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb
index 3dc48ef08..3a2097d2f 100644
--- a/config/initializers/simple_form.rb
+++ b/config/initializers/simple_form.rb
@@ -1,7 +1,7 @@
# Use this setup block to configure all options available in SimpleForm.
module AppendComponent
- def append(wrapper_options = nil)
+ def append(_wrapper_options = nil)
@append ||= begin
options[:append].to_s.html_safe if options[:append].present?
end
@@ -9,7 +9,7 @@ module AppendComponent
end
module RecommendedComponent
- def recommended(wrapper_options = nil)
+ def recommended(_wrapper_options = nil)
return unless options[:recommended]
options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) }
nil
diff --git a/config/initializers/suppress_csrf_warnings.rb b/config/initializers/suppress_csrf_warnings.rb
index 410ab585b..b86adc6f1 100644
--- a/config/initializers/suppress_csrf_warnings.rb
+++ b/config/initializers/suppress_csrf_warnings.rb
@@ -1,3 +1,5 @@
# frozen_string_literal: true
-ActionController::Base.log_warning_on_csrf_failure = false
+Rails.application.reloader.to_prepare do
+ ActionController::Base.log_warning_on_csrf_failure = false
+end
diff --git a/config/initializers/twitter_regex.rb b/config/initializers/twitter_regex.rb
index 7f99a0005..84c09ff35 100644
--- a/config/initializers/twitter_regex.rb
+++ b/config/initializers/twitter_regex.rb
@@ -1,4 +1,10 @@
-module Twitter
+module Twitter::TwitterText
+ class Configuration
+ def emoji_parsing_enabled
+ false
+ end
+ end
+
class Regex
REGEXEN[:valid_general_url_path_chars] = /[^\p{White_Space}<>\(\)\?]/iou
REGEXEN[:valid_url_path_ending_chars] = /[^\p{White_Space}\(\)\?!\*"'「」<>;:=\,\.\$%\[\]~&\|@]|(?:#{REGEXEN[:valid_url_balanced_parens]})/iou
@@ -18,6 +24,10 @@ module Twitter
)
\)
/iox
+ REGEXEN[:valid_iri_ucschar] = /[\u{A0}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFEF}\u{10000}-\u{1FFFD}\u{20000}-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}\u{50000}-\u{5FFFD}\u{60000}-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}\u{90000}-\u{9FFFD}\u{A0000}-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}\u{D0000}-\u{DFFFD}\u{E1000}-\u{EFFFD}]/iou
+ REGEXEN[:valid_iri_iprivate] = /[\u{E000}-\u{F8FF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/iou
+ REGEXEN[:valid_url_query_chars] = /(?:#{REGEXEN[:valid_iri_ucschar]})|(?:#{REGEXEN[:valid_iri_iprivate]})|[a-z0-9!?\*'\(\);:&=\+\$\/%#\[\]\-_\.,~|@]/iou
+ REGEXEN[:valid_url_query_ending_chars] = /(?:#{REGEXEN[:valid_iri_ucschar]})|(?:#{REGEXEN[:valid_iri_iprivate]})|[a-z0-9_&=#\/\-]/iou
REGEXEN[:valid_url_path] = /(?:
(?:
#{REGEXEN[:valid_general_url_path_chars]}*
@@ -75,11 +85,11 @@ module Twitter
# XMPP or magnet URIs an empty array will be returned.
#
# If a block is given then it will be called for each XMPP URI.
- def extract_extra_uris_with_indices(text, options = {}) # :yields: uri, start, end
+ def extract_extra_uris_with_indices(text, _options = {}) # :yields: uri, start, end
return [] unless text && text.index(":")
urls = []
- text.to_s.scan(Twitter::Regex[:valid_extended_uri]) do
+ text.to_s.scan(Twitter::TwitterText::Regex[:valid_extended_uri]) do
valid_uri_match_data = $~
start_position = valid_uri_match_data.char_begin(3)
diff --git a/config/locales-glitch/ko.yml b/config/locales-glitch/ko.yml
new file mode 100644
index 000000000..ae7f091bb
--- /dev/null
+++ b/config/locales-glitch/ko.yml
@@ -0,0 +1,25 @@
+---
+ko:
+ admin:
+ dashboard:
+ keybase: 키베이스 연동
+ settings:
+ enable_keybase:
+ desc_html: 사용자들이 키베이스를 통해 개인 신원을 증명할 수 있도록 허용
+ title: 키베이스 연동 활성화
+ outgoing_spoilers:
+ desc_html: 게시물들을 연합할 때, 열람주의가 달려있지 않다면 이 열람주의를 추가합니다. 다른 서버들이 열람주의를 하길 원하는 콘텐츠들에 특화된 서버에서 유용합니다. 미디어 또한 민감함으로 설정 됩니다.
+ title: 나가는 게시물에 대한 열람주의
+ hide_followers_count:
+ desc_html: 사용자 프로필에 팔로워 수를 표시하지 않습니다
+ title: 팔로워 수 숨기기
+ show_reblogs_in_public_timelines:
+ desc_html: 공개글의 공개적인 부스트를 로컬과 공개 타임라인에 표시합니다.
+ title: 부스트를 공개 타임라인에 표시
+ show_replies_in_public_timelines:
+ desc_html: 자기자신에 대한 답글(글타래)와 마찬가지로, 공개적인 답글을 로컬과 공개 타임라인에 표시합니다.
+ title: 답글을 공개 타임라인에 표시
+ generic:
+ use_this: 사용하기
+ settings:
+ flavours: 풍미
diff --git a/config/locales-glitch/simple_form.ko.yml b/config/locales-glitch/simple_form.ko.yml
new file mode 100644
index 000000000..cd9910337
--- /dev/null
+++ b/config/locales-glitch/simple_form.ko.yml
@@ -0,0 +1,20 @@
+---
+ko:
+ simple_form:
+ hints:
+ defaults:
+ setting_default_content_type_html: 게시물을 작성할 때, 형식을 지정하지 않았다면, 생 HTML이라고 가정합니다
+ setting_default_content_type_markdown: 게시물을 작성할 때, 형식을 지정하지 않았다면, 마크다운이라고 가정합니다
+ setting_default_content_type_plain: 게시물을 작성할 때, 형식을 지정하지 않았다면, 일반적인 텍스트라고 가정합니다. (마스토돈의 기본 동작)
+ setting_default_language: 작성하는 게시물의 언어는 자동으로 설정될 수 있습니다, 하지만 언제나 정확하지는 않습니다
+ setting_skin: 선택한 마스토돈 풍미의 스킨을 바꿉니다
+ labels:
+ defaults:
+ setting_default_content_type: 게시물의 기본 포맷
+ setting_default_content_type_html: HTML
+ setting_default_content_type_markdown: 마크다운
+ setting_default_content_type_plain: 일반 텍스트
+ setting_favourite_modal: 관심글을 지정할 때 확인 창을 띄웁니다(글리치 풍미에만 적용됨)
+ setting_hide_followers_count: 내 팔로워 수 숨기기
+ setting_skin: 스킨
+ setting_system_emoji_font: 에모지에 시스템 기본 폰트 적용하기 (글리치 풍미에만 적용됨)
diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml
new file mode 100644
index 000000000..252f9fd5a
--- /dev/null
+++ b/config/locales/activerecord.af.yml
@@ -0,0 +1 @@
+af:
diff --git a/config/locales/activerecord.ar.yml b/config/locales/activerecord.ar.yml
index 2b39ee156..3f89ea6fa 100644
--- a/config/locales/activerecord.ar.yml
+++ b/config/locales/activerecord.ar.yml
@@ -5,13 +5,28 @@ ar:
poll:
expires_at: آخر أجل
options: الخيارات
+ user:
+ agreement: اتفاقية الخدمة
+ email: عنوان البريد الإلكتروني
+ locale: محلي
+ password: كلمة المرور
+ user/account:
+ username: اسم المستخدم
+ user/invite_request:
+ text: السبب
errors:
models:
account:
attributes:
username:
- invalid: فقط حروف و أرقام و سطور سفلية
+ invalid: يجب فقط أن يحتوي على حروف، وأرقام، وخطوط سفلية
+ reserved: محجوز
status:
attributes:
reblog:
taken: المنشور موجود مِن قبل
+ user:
+ attributes:
+ email:
+ blocked: يستخدم مزوّد بريد إلكتروني غير مسموح به
+ unreachable: يبدو أنه لا وجود
diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml
index a1f60b45a..601d6dcd9 100644
--- a/config/locales/activerecord.bg.yml
+++ b/config/locales/activerecord.bg.yml
@@ -5,3 +5,24 @@ bg:
poll:
expires_at: Краен срок
options: Избори
+ user:
+ agreement: Споразумение за обслужване
+ email: Имейл адрес
+ locale: Локално
+ password: Парола
+ user/account:
+ username: Потребителско име
+ user/invite_request:
+ text: Причина
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: само букви, цифри и долни черти
+ reserved: е запазено
+ user:
+ attributes:
+ email:
+ blocked: използва се непозволен имейл доставчик
+ unreachable: изглежда, че не съществува
diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml
index 67dd9a094..e74146645 100644
--- a/config/locales/activerecord.ca.yml
+++ b/config/locales/activerecord.ca.yml
@@ -5,13 +5,28 @@ ca:
poll:
expires_at: Data límit
options: Opcions
+ user:
+ agreement: Acord de servei
+ email: Adreça de correu electrònic
+ locale: Idioma
+ password: Contrasenya
+ user/account:
+ username: Nom d'usuari
+ user/invite_request:
+ text: Motiu
errors:
models:
account:
attributes:
username:
invalid: només lletres, números i subratllats
+ reserved: està reservat
status:
attributes:
reblog:
taken: del tut ja existeix
+ user:
+ attributes:
+ email:
+ blocked: utilitza un proveïdor de correu electrònic no autoritzat
+ unreachable: sembla que no existeix
diff --git a/config/locales/activerecord.co.yml b/config/locales/activerecord.co.yml
index 0a9a936dd..6bd3d4976 100644
--- a/config/locales/activerecord.co.yml
+++ b/config/locales/activerecord.co.yml
@@ -5,13 +5,28 @@ co:
poll:
expires_at: Fine
options: Scelte
+ user:
+ agreement: Accordu di serviziu
+ email: Indirizzu e-mail
+ locale: Lingua
+ password: Chjave d’accessu
+ user/account:
+ username: Cugnome
+ user/invite_request:
+ text: Ragione
errors:
models:
account:
attributes:
username:
invalid: solu lettere, numeri è liniette basse
+ reserved: hè riservatu
status:
attributes:
reblog:
taken: di u statutu esista digià
+ user:
+ attributes:
+ email:
+ blocked: usa un purghjidore d'e-mail pruibitu
+ unreachable: ùn sembra micca esiste
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index 57240a19e..bd0b28efb 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -5,13 +5,28 @@ cs:
poll:
expires_at: Uzávěrka
options: Volby
+ user:
+ agreement: Souhlas s podmínkami
+ email: E-mailová adresa
+ locale: Lokalizace
+ password: Heslo
+ user/account:
+ username: Uživatel
+ user/invite_request:
+ text: Zdůvodnění
errors:
models:
account:
attributes:
username:
- invalid: pouze písmena, číslice a podtržítka
+ invalid: musí obsahovat pouze písmena, číslice a podtržítka
+ reserved: je vyhrazeno
status:
attributes:
reblog:
taken: příspěvku již existuje
+ user:
+ attributes:
+ email:
+ blocked: používá zakázanou e-mailovou službu
+ unreachable: pravděpodobně neexistuje
diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml
index e7367a4af..513cb2a8f 100644
--- a/config/locales/activerecord.da.yml
+++ b/config/locales/activerecord.da.yml
@@ -3,15 +3,30 @@ da:
activerecord:
attributes:
poll:
- expires_at: Deadline
+ expires_at: Tidsfrist
options: Valgmuligheder
+ user:
+ agreement: Tjenesteaftale
+ email: E-mailadresse
+ locale: Landestandard
+ password: Adgangskode
+ user/account:
+ username: Brugernavn
+ user/invite_request:
+ text: Årsag
errors:
models:
account:
attributes:
username:
- invalid: kun tal, bogstaver og understreger
+ invalid: må kun indeholde cifre, bogstaver og understreger
+ reserved: er reserveret
status:
attributes:
reblog:
taken: af allerede eksisterende status
+ user:
+ attributes:
+ email:
+ blocked: bruger en ikke-tilladt e-mailudbyder
+ unreachable: synes ikke at findes
diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml
index 46a48d234..31c410fa3 100644
--- a/config/locales/activerecord.de.yml
+++ b/config/locales/activerecord.de.yml
@@ -5,13 +5,28 @@ de:
poll:
expires_at: Frist
options: Wahlmöglichkeiten
+ user:
+ agreement: Service-Vereinbarung
+ email: E-Mail-Adresse
+ locale: Sprache
+ password: Passwort
+ user/account:
+ username: Benutzername
+ user/invite_request:
+ text: Grund
errors:
models:
account:
attributes:
username:
invalid: nur Buchstaben, Ziffern und Unterstriche
+ reserved: ist reserviert
status:
attributes:
reblog:
taken: des Beitrags existiert schon
+ user:
+ attributes:
+ email:
+ blocked: verwendet einen nicht erlaubten E-Mail-Anbieter
+ unreachable: scheint nicht zu existieren
diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml
index 36e5f508d..67ce1758e 100644
--- a/config/locales/activerecord.el.yml
+++ b/config/locales/activerecord.el.yml
@@ -5,13 +5,28 @@ el:
poll:
expires_at: Προθεσμία
options: Επιλογές
+ user:
+ agreement: Σύμβαση παροχής υπηρεσιών
+ email: Διεύθυνση email
+ locale: Γλώσσα
+ password: Συνθηματικό
+ user/account:
+ username: Όνομα χρήστη
+ user/invite_request:
+ text: Αιτιολογία
errors:
models:
account:
attributes:
username:
invalid: μόνο γράμματα, αριθμοί και κάτω παύλες
+ reserved: είναι δεσμευμένο
status:
attributes:
reblog:
taken: της κατάστασης ήδη υπάρχει
+ user:
+ attributes:
+ email:
+ blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail
+ unreachable: δεν φαίνεται να υπάρχει
diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml
index 8533418cc..d5f19ca64 100644
--- a/config/locales/activerecord.en.yml
+++ b/config/locales/activerecord.en.yml
@@ -5,13 +5,28 @@ en:
poll:
expires_at: Deadline
options: Choices
+ user:
+ agreement: Service agreement
+ email: E-mail address
+ locale: Locale
+ password: Password
+ user/account:
+ username: Username
+ user/invite_request:
+ text: Reason
errors:
models:
account:
attributes:
username:
- invalid: only letters, numbers and underscores
+ invalid: must contain only letters, numbers and underscores
+ reserved: is reserved
status:
attributes:
reblog:
- taken: of status already exists
+ taken: of post already exists
+ user:
+ attributes:
+ email:
+ blocked: uses a disallowed e-mail provider
+ unreachable: does not seem to exist
diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml
index f8a3cf18b..ca48e0fe0 100644
--- a/config/locales/activerecord.eo.yml
+++ b/config/locales/activerecord.eo.yml
@@ -5,13 +5,28 @@ eo:
poll:
expires_at: Limdato
options: Elektoj
+ user:
+ agreement: Servo-interkonsento
+ email: Retadreso
+ locale: Lokaĵaro
+ password: Pasvorto
+ user/account:
+ username: Uzantnomo
+ user/invite_request:
+ text: Kialo
errors:
models:
account:
attributes:
username:
invalid: nur leteroj, ciferoj kaj substrekoj
+ reserved: rezervita
status:
attributes:
reblog:
taken: de statuso jam ekzistas
+ user:
+ attributes:
+ email:
+ blocked: uzas nepermesitan retpoŝtan provizanton
+ unreachable: ne ŝajnas ekzisti
diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml
index 4cdd90278..9d6a479a7 100644
--- a/config/locales/activerecord.es-AR.yml
+++ b/config/locales/activerecord.es-AR.yml
@@ -5,13 +5,28 @@ es-AR:
poll:
expires_at: Fecha límite
options: Opciones
+ user:
+ agreement: Acuerdo del servicio
+ email: Dirección de correo electrónico
+ locale: Localidad
+ password: Contraseña
+ user/account:
+ username: Nombre de usuario
+ user/invite_request:
+ text: Motivo
errors:
models:
account:
attributes:
username:
invalid: sólo letras, números y subguiones ("_")
+ reserved: está reservado
status:
attributes:
reblog:
- taken: del estado ya existe
+ taken: del mensaje ya existe
+ user:
+ attributes:
+ email:
+ blocked: usa un proveedor de correo electrónico no permitido
+ unreachable: no parece existir
diff --git a/config/locales/activerecord.es-MX.yml b/config/locales/activerecord.es-MX.yml
new file mode 100644
index 000000000..da658a338
--- /dev/null
+++ b/config/locales/activerecord.es-MX.yml
@@ -0,0 +1,32 @@
+---
+es-MX:
+ activerecord:
+ attributes:
+ poll:
+ expires_at: Vencimiento
+ options: Opciones
+ user:
+ agreement: Acuerdo de Servicio
+ email: Dirección de correo electrónico
+ locale: Idioma
+ password: Contraseña
+ user/account:
+ username: Nombre de usuario
+ user/invite_request:
+ text: Razón
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: solo puede contener letras, números y guiones bajos
+ reserved: está reservado
+ status:
+ attributes:
+ reblog:
+ taken: del estado ya existe
+ user:
+ attributes:
+ email:
+ blocked: utiliza un proveedor de correo no autorizado
+ unreachable: no parece existir
diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml
index 2fbf0ffd7..0c4d6e5cf 100644
--- a/config/locales/activerecord.es.yml
+++ b/config/locales/activerecord.es.yml
@@ -1 +1,32 @@
---- {}
+---
+es:
+ activerecord:
+ attributes:
+ poll:
+ expires_at: Vencimiento
+ options: Opciones
+ user:
+ agreement: Acuerdo de Servicio
+ email: Dirección de correo electrónico
+ locale: Idioma
+ password: Contraseña
+ user/account:
+ username: Nombre de usuario
+ user/invite_request:
+ text: Razón
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: solo puede contener letras, números y guiones bajos
+ reserved: está reservado
+ status:
+ attributes:
+ reblog:
+ taken: del estado ya existe
+ user:
+ attributes:
+ email:
+ blocked: utiliza un proveedor de correo no autorizado
+ unreachable: no parece existir
diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml
index 235738f22..83b01f91d 100644
--- a/config/locales/activerecord.eu.yml
+++ b/config/locales/activerecord.eu.yml
@@ -5,13 +5,28 @@ eu:
poll:
expires_at: Epemuga
options: Aukerak
+ user:
+ agreement: Zerbitzu-hitzarmena
+ email: E-posta helbidea
+ locale: Eskualdeko ezarpenak
+ password: Pasahitza
+ user/account:
+ username: Erabiltzaile-izena
+ user/invite_request:
+ text: Arrazoia
errors:
models:
account:
attributes:
username:
invalid: letrak, zenbakiak eta gidoi baxuak besterik ez
+ reserved: erreserbatuta dago
status:
attributes:
reblog:
taken: mezu honentzat bazegoen aurretik
+ user:
+ attributes:
+ email:
+ blocked: onartu gabeko e-posta hornitzaile bat erabiltzen du
+ unreachable: dirudienez ez da existitzen
diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml
index 7fdfa38d1..291958d01 100644
--- a/config/locales/activerecord.fa.yml
+++ b/config/locales/activerecord.fa.yml
@@ -5,13 +5,28 @@ fa:
poll:
expires_at: مهلت
options: گزینهها
+ user:
+ agreement: توافقنامهٔ خدمت
+ email: نشانی رایانامه
+ locale: موقعیت
+ password: گذرواژه
+ user/account:
+ username: نام کاربری
+ user/invite_request:
+ text: دلیل
errors:
models:
account:
attributes:
username:
invalid: تنها حروف، اعداد، و زیرخط
+ reserved: محفوظ است
status:
attributes:
reblog:
taken: تا از وضعیتها هنوز وجود دارند
+ user:
+ attributes:
+ email:
+ blocked: از فراهمکنندهٔ رایانامهٔ غیرمجازی استفاده میکند
+ unreachable: به نظر نمیرسد وجود داشته باشد
diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml
index 305042c42..efd8b5e75 100644
--- a/config/locales/activerecord.fi.yml
+++ b/config/locales/activerecord.fi.yml
@@ -5,9 +5,28 @@ fi:
poll:
expires_at: Määräaika
options: Vaihtoehdot
+ user:
+ agreement: Palvelusopimus
+ email: Sähköpostiosoite
+ locale: Paikallinen
+ password: Salasana
+ user/account:
+ username: Käyttäjätunnus
+ user/invite_request:
+ text: Syy
errors:
models:
account:
attributes:
username:
- invalid: vain kirjaimia, numeroita ja alaviivoja
+ invalid: saa sisältää vain kirjaimia, numeroita ja alaviivoja
+ reserved: on varattu
+ status:
+ attributes:
+ reblog:
+ taken: tila on jo olemassa
+ user:
+ attributes:
+ email:
+ blocked: käyttää kiellettyä sähköpostipalvelun tarjoajaa
+ unreachable: ei näytä olevan olemassa
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index e26e02592..47cd8765d 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -5,13 +5,28 @@ fr:
poll:
expires_at: Date butoir
options: Choix
+ user:
+ agreement: Contrat de service
+ email: Adresse courriel
+ locale: Langue
+ password: Mot de passe
+ user/account:
+ username: Nom d’utilisateur·ice
+ user/invite_request:
+ text: Raison
errors:
models:
account:
attributes:
username:
invalid: seulement des lettres, des nombres et des tirets bas
+ reserved: est réservé
status:
attributes:
reblog:
taken: du statut existe déjà
+ user:
+ attributes:
+ email:
+ blocked: utilise un fournisseur de courriel interdit
+ unreachable: ne semble pas exister
diff --git a/config/locales/activerecord.gd.yml b/config/locales/activerecord.gd.yml
new file mode 100644
index 000000000..2920b561e
--- /dev/null
+++ b/config/locales/activerecord.gd.yml
@@ -0,0 +1,32 @@
+---
+gd:
+ activerecord:
+ attributes:
+ poll:
+ expires_at: Thig e gu crìoch
+ options: Roghainnean
+ user:
+ agreement: Aonta na seirbheise
+ email: Seòladh puist-d
+ locale: Sgeama ionadail
+ password: Facal-faire
+ user/account:
+ username: Ainm-cleachdaiche
+ user/invite_request:
+ text: Adhbhar
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: "– chan fhaod ach litrichean gun sràcan, àireamhan ’s fo-loidhnichean a bhith ’na bhroinn"
+ reserved: "– tha e glèidhte"
+ status:
+ attributes:
+ reblog:
+ taken: "– tha seo aig a’ phost mu thràth"
+ user:
+ attributes:
+ email:
+ blocked: "– tha seo a’ chleachdadh solaraiche puist-d nach eil ceadaichte"
+ unreachable: "– tha coltas nach eil seo ann"
diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml
index 78b5e0f8d..cbdd801e5 100644
--- a/config/locales/activerecord.gl.yml
+++ b/config/locales/activerecord.gl.yml
@@ -5,13 +5,28 @@ gl:
poll:
expires_at: Remata en
options: Opcións
+ user:
+ agreement: Acordo do Servizo
+ email: Enderezo de email
+ locale: Locale
+ password: Contrasinal
+ user/account:
+ username: Nome de usuaria
+ user/invite_request:
+ text: Razón
errors:
models:
account:
attributes:
username:
- invalid: só letras, números e liñas baixas
+ invalid: só letras, números e trazo baixo
+ reserved: está reservado
status:
attributes:
reblog:
taken: do estado xa existe
+ user:
+ attributes:
+ email:
+ blocked: utiliza un provedor de email non autorizado
+ unreachable: semella que non existe
diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml
index ca5fbacb4..ac8cfd773 100644
--- a/config/locales/activerecord.hu.yml
+++ b/config/locales/activerecord.hu.yml
@@ -5,13 +5,28 @@ hu:
poll:
expires_at: Határidő
options: Lehetőségek
+ user:
+ agreement: Szolgáltatási megállapodás
+ email: E-mail-cím
+ locale: Régió
+ password: Jelszó
+ user/account:
+ username: Felhasználónév
+ user/invite_request:
+ text: Indoklás
errors:
models:
account:
attributes:
username:
- invalid: csak betűk, számok vagy alávonás
+ invalid: csak betűket, számokat vagy alávonást tartalmazhat
+ reserved: fenntartott
status:
attributes:
reblog:
taken: már létezik ehhez a bejegyzéshez
+ user:
+ attributes:
+ email:
+ blocked: egy letiltott e-mail szolgáltatót használ
+ unreachable: úgy tűnik, hogy nem létezik
diff --git a/config/locales/activerecord.hy.yml b/config/locales/activerecord.hy.yml
index 0da0b3d5e..237866b96 100644
--- a/config/locales/activerecord.hy.yml
+++ b/config/locales/activerecord.hy.yml
@@ -5,6 +5,9 @@ hy:
poll:
expires_at: Վերջնաժամկետ
options: Տարբերակներ
+ user:
+ agreement: Ծառայության համաձայնագիր
+ email: Էլ․ հասցե
errors:
models:
account:
diff --git a/config/locales/activerecord.id.yml b/config/locales/activerecord.id.yml
index 673d002e3..5510ccc8d 100644
--- a/config/locales/activerecord.id.yml
+++ b/config/locales/activerecord.id.yml
@@ -5,13 +5,28 @@ id:
poll:
expires_at: Tenggat waktu
options: Pilihan
+ user:
+ agreement: Persetujuan layanan
+ email: Alamat email
+ locale: Locale
+ password: Kata sandi
+ user/account:
+ username: Nama pengguna
+ user/invite_request:
+ text: Alasan
errors:
models:
account:
attributes:
username:
invalid: hanya boleh berisi huruf, angka, dan underscore
+ reserved: sudah dipesan
status:
attributes:
reblog:
taken: status sudah ada
+ user:
+ attributes:
+ email:
+ blocked: menggunakan layanan email yang tidak diizinkan
+ unreachable: sepertinya tidak ada
diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml
index b5d656130..cdd803318 100644
--- a/config/locales/activerecord.is.yml
+++ b/config/locales/activerecord.is.yml
@@ -5,13 +5,28 @@ is:
poll:
expires_at: Lokadagur
options: Valkostir
+ user:
+ agreement: Þjónustuskilmálar
+ email: Tölvupóstfang
+ locale: Staðfærsla
+ password: Lykilorð
+ user/account:
+ username: Notandanafn
+ user/invite_request:
+ text: Ástæða
errors:
models:
account:
attributes:
username:
- invalid: aðeins bókstafir, tölur og undirstrik
+ invalid: má aðeins innihalda bókstafi, tölur og undirstrik
+ reserved: er frátekið
status:
attributes:
reblog:
taken: af stöðu er þegar fyrirliggjandi
+ user:
+ attributes:
+ email:
+ blocked: notar óleyfilega tölvupóstþjónustu
+ unreachable: virðist ekki vera til
diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml
index 70afdaef1..7e16990b5 100644
--- a/config/locales/activerecord.it.yml
+++ b/config/locales/activerecord.it.yml
@@ -5,13 +5,28 @@ it:
poll:
expires_at: Scadenza
options: Scelte
+ user:
+ agreement: Condizioni di servizio
+ email: Indirizzo email
+ locale: Localizzazione
+ password: Password
+ user/account:
+ username: Nome utente
+ user/invite_request:
+ text: Motivo
errors:
models:
account:
attributes:
username:
invalid: solo lettere, numeri e trattini bassi
+ reserved: è riservato
status:
attributes:
reblog:
taken: dello stato esiste già
+ user:
+ attributes:
+ email:
+ blocked: utilizza un provider di posta elettronica non autorizzato
+ unreachable: non sembra esistere
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index 8b0eefb12..ad4c1eccf 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -5,13 +5,28 @@ ja:
poll:
expires_at: 期限
options: 項目
+ user:
+ agreement: サービス契約
+ email: メールアドレス
+ locale: ロケール
+ password: パスワード
+ user/account:
+ username: ユーザー名
+ user/invite_request:
+ text: 理由
errors:
models:
account:
attributes:
username:
invalid: アルファベット・数字・アンダーバーの組み合わせで入力してください
+ reserved: は予約されています
status:
attributes:
reblog:
taken: は既にブーストされています
+ user:
+ attributes:
+ email:
+ blocked: は禁止されているプロバイダメールを使用します
+ unreachable: 存在しないようです
diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml
index 3c081269a..07f8a39f7 100644
--- a/config/locales/activerecord.ko.yml
+++ b/config/locales/activerecord.ko.yml
@@ -5,13 +5,28 @@ ko:
poll:
expires_at: 마감 기한
options: 선택
+ user:
+ agreement: 이용약관
+ email: 이메일 주소
+ locale: 언어
+ password: 암호
+ user/account:
+ username: 사용자명
+ user/invite_request:
+ text: 이유
errors:
models:
account:
attributes:
username:
invalid: 영문자, 숫자, _만 사용 가능
+ reserved: 이미 예약되어 있습니다
status:
attributes:
reblog:
taken: 이미 게시물이 존재합니다
+ user:
+ attributes:
+ email:
+ blocked: 허용되지 않은 이메일 제공자입니다
+ unreachable: 존재하지 않는 것 같습니다
diff --git a/config/locales/activerecord.kw.yml b/config/locales/activerecord.kw.yml
new file mode 100644
index 000000000..b2cfc12ff
--- /dev/null
+++ b/config/locales/activerecord.kw.yml
@@ -0,0 +1 @@
+kw:
diff --git a/config/locales/activerecord.ml.yml b/config/locales/activerecord.ml.yml
index fc30a81fc..8b20ee34b 100644
--- a/config/locales/activerecord.ml.yml
+++ b/config/locales/activerecord.ml.yml
@@ -5,13 +5,28 @@ ml:
poll:
expires_at: സമയപരിധി
options: ചോയ്സുകൾ
+ user:
+ agreement: സേവന ഉടമ്പടി
+ email: ഇ-മെയിൽ വിലാസം
+ locale: ഭാഷ
+ password: രഹസ്യവാചകം
+ user/account:
+ username: ഉപയോക്തൃനാമം
+ user/invite_request:
+ text: കാരണം
errors:
models:
account:
attributes:
username:
invalid: അക്ഷരങ്ങളും, അക്കങ്ങളും, പിന്നെ അടിവരയും മാത്രം
+ reserved: കരുതിവച്ചു
status:
attributes:
reblog:
taken: സ്റ്റാറ്റസ് ഇതിനകം നിലവിലുണ്ട്
+ user:
+ attributes:
+ email:
+ blocked: അനുവദനീയമല്ലാത്ത ഇ-മെയിൽ ദാതാവിനെ ഉപയോഗിക്കുന്നു
+ unreachable: നിലവിലില്ല
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
index a9bcb33fa..6bbdc5b40 100644
--- a/config/locales/activerecord.nl.yml
+++ b/config/locales/activerecord.nl.yml
@@ -5,13 +5,28 @@ nl:
poll:
expires_at: Deadline
options: Keuzes
+ user:
+ agreement: Servicevoorwaarden
+ email: E-mailadres
+ locale: Taal
+ password: Wachtwoord
+ user/account:
+ username: Gebruikersnaam
+ user/invite_request:
+ text: Reden
errors:
models:
account:
attributes:
username:
invalid: alleen letters, nummers en underscores
+ reserved: gereserveerd
status:
attributes:
reblog:
taken: van toot bestaat al
+ user:
+ attributes:
+ email:
+ blocked: gebruikt een niet toegestane e-mailprovider
+ unreachable: schijnt niet te bestaan
diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml
index 31f1682bd..4f6a348dd 100644
--- a/config/locales/activerecord.nn.yml
+++ b/config/locales/activerecord.nn.yml
@@ -5,12 +5,20 @@ nn:
poll:
expires_at: Frist
options: Val
+ user:
+ email: E-mail address
+ password: Passord
+ user/account:
+ username: Brukernavn
+ user/invite_request:
+ text: Grunn
errors:
models:
account:
attributes:
username:
invalid: bare bokstaver, tall og understreker
+ reserved: er reservert
status:
attributes:
reblog:
diff --git a/config/locales/activerecord.no.yml b/config/locales/activerecord.no.yml
index 553bd65bf..aea66b101 100644
--- a/config/locales/activerecord.no.yml
+++ b/config/locales/activerecord.no.yml
@@ -5,12 +5,20 @@
poll:
expires_at: Tidsfrist
options: Valg
+ user:
+ email: E-mail address
+ password: Passord
+ user/account:
+ username: Brukernavn
+ user/invite_request:
+ text: Grunn
errors:
models:
account:
attributes:
username:
invalid: bare bokstaver, tall og understreker
+ reserved: er reservert
status:
attributes:
reblog:
diff --git a/config/locales/activerecord.oc.yml b/config/locales/activerecord.oc.yml
index 1157d9769..8a7b70d44 100644
--- a/config/locales/activerecord.oc.yml
+++ b/config/locales/activerecord.oc.yml
@@ -5,13 +5,28 @@ oc:
poll:
expires_at: Data limita
options: Opcions
+ user:
+ agreement: Acòrd de servici
+ email: Corrièl
+ locale: Lenga
+ password: Senhal
+ user/account:
+ username: Nom d’utilizaire
+ user/invite_request:
+ text: Motiu
errors:
models:
account:
attributes:
username:
invalid: solament letras, nombres e tirets basses
+ reserved: es reservat
status:
attributes:
reblog:
taken: de l’estatut existís ja
+ user:
+ attributes:
+ email:
+ blocked: utilizar un provesidor d’email pas autorizat
+ unreachable: semblar pas existir
diff --git a/config/locales/activerecord.pa.yml b/config/locales/activerecord.pa.yml
new file mode 100644
index 000000000..bb8a6c834
--- /dev/null
+++ b/config/locales/activerecord.pa.yml
@@ -0,0 +1 @@
+pa:
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index f10420ec7..c7b1e7fab 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -5,13 +5,28 @@ pl:
poll:
expires_at: Ostateczny termin
options: Opcje
+ user:
+ agreement: Umowa o świadczenie usług
+ email: Adres e-mail
+ locale: Język
+ password: Hasło
+ user/account:
+ username: Nazwa użytkownika
+ user/invite_request:
+ text: Powód
errors:
models:
account:
attributes:
username:
invalid: może składać się tylko z liter, cyfr i podkreślników
+ reserved: jest zarezerwowana
status:
attributes:
reblog:
taken: status już istnieje
+ user:
+ attributes:
+ email:
+ blocked: używa niedozwolonego dostawcy poczty elektronicznej
+ unreachable: wydaje się nie istnieć
diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml
index f768f0d4f..a6314cdae 100644
--- a/config/locales/activerecord.pt-BR.yml
+++ b/config/locales/activerecord.pt-BR.yml
@@ -3,15 +3,30 @@ pt-BR:
activerecord:
attributes:
poll:
- expires_at: Expira em
+ expires_at: Vencimento
options: Escolhas
+ user:
+ agreement: Termos do Serviço
+ email: Endereço de e-mail
+ locale: Local
+ password: Senha
+ user/account:
+ username: Nome de usuário
+ user/invite_request:
+ text: Motivos
errors:
models:
account:
attributes:
username:
invalid: apenas letras, números e underlines ( "_" )
+ reserved: está reservado
status:
attributes:
reblog:
taken: do status já existe
+ user:
+ attributes:
+ email:
+ blocked: utiliza um provedor de e-mail não permitido
+ unreachable: parece não existir
diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml
index 884b79fa1..17c199ea8 100644
--- a/config/locales/activerecord.pt-PT.yml
+++ b/config/locales/activerecord.pt-PT.yml
@@ -5,13 +5,28 @@ pt-PT:
poll:
expires_at: Expira em
options: Escolhas
+ user:
+ agreement: Acordo de serviço
+ email: Endereço de e-mail
+ locale: Região
+ password: Palavra-passe
+ user/account:
+ username: Nome de utilizador
+ user/invite_request:
+ text: Motivo
errors:
models:
account:
attributes:
username:
invalid: apenas letras, números e underscores
+ reserved: está reservado
status:
attributes:
reblog:
taken: do status já existe
+ user:
+ attributes:
+ email:
+ blocked: utiliza um provedor de e-mail não permitido
+ unreachable: não parece existir
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index bff0d9584..2f9210519 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -5,13 +5,28 @@ ru:
poll:
expires_at: Крайний срок
options: Варианты
+ user:
+ agreement: Соглашение с условиями сервиса
+ email: Адрес эл. почты
+ locale: Язык
+ password: Пароль
+ user/account:
+ username: Имя пользователя
+ user/invite_request:
+ text: Причина
errors:
models:
account:
attributes:
username:
invalid: только буквы, цифры и символ подчёркивания
+ reserved: зарезервировано
status:
attributes:
reblog:
taken: поста уже существует
+ user:
+ attributes:
+ email:
+ blocked: использует запрещённого провайдера эл. почты
+ unreachable: не существует
diff --git a/config/locales/activerecord.sc.yml b/config/locales/activerecord.sc.yml
index cae24d30c..aadd00287 100644
--- a/config/locales/activerecord.sc.yml
+++ b/config/locales/activerecord.sc.yml
@@ -5,13 +5,28 @@ sc:
poll:
expires_at: Iscadèntzia
options: Seberos
+ user:
+ agreement: Acordu de servìtziu
+ email: Indiritzu de posta eletrònica
+ locale: Idioma
+ password: Crae
+ user/account:
+ username: Nòmine utente
+ user/invite_request:
+ text: Resone
errors:
models:
account:
attributes:
username:
- invalid: petzi lìteras, nùmeros e tratigheddos bassos
+ invalid: isceti lìteras, nùmeros e tratigheddos bassos
+ reserved: est prenotadu
status:
attributes:
reblog:
taken: de s'istadu esistet giai
+ user:
+ attributes:
+ email:
+ blocked: impreat unu frunidore de posta eletrònica proibidu
+ unreachable: paret chi no esistit
diff --git a/config/locales/activerecord.si.yml b/config/locales/activerecord.si.yml
new file mode 100644
index 000000000..f836cfba7
--- /dev/null
+++ b/config/locales/activerecord.si.yml
@@ -0,0 +1,13 @@
+---
+si:
+ activerecord:
+ attributes:
+ poll:
+ expires_at: නියමිත කාලය
+ options: තේරීම්
+ errors:
+ models:
+ account:
+ attributes:
+ username:
+ invalid: අකුරු, අංක සහ යට-ඉරි පමණි
diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml
index 29a11063e..920b73e7a 100644
--- a/config/locales/activerecord.sq.yml
+++ b/config/locales/activerecord.sq.yml
@@ -5,13 +5,28 @@ sq:
poll:
expires_at: Afat
options: Mundësi
+ user:
+ agreement: Marrëveshje shërbimi
+ email: Adresë email
+ locale: Gjuhë
+ password: Fjalëkalim
+ user/account:
+ username: Emër përdoruesi
+ user/invite_request:
+ text: Arsye
errors:
models:
account:
attributes:
username:
- invalid: vetëm shkronja, numra dhe nënvija
+ invalid: duhet të përmbajë vetëm shkronja, numra dhe nënvija
+ reserved: është i rezervuar
status:
attributes:
reblog:
taken: e gjendjes ekziston tashmë
+ user:
+ attributes:
+ email:
+ blocked: përdor një shërbim email të palejuar
+ unreachable: s’duket se ekziston
diff --git a/config/locales/activerecord.sr.yml b/config/locales/activerecord.sr.yml
index b4d929634..d974d0e7b 100644
--- a/config/locales/activerecord.sr.yml
+++ b/config/locales/activerecord.sr.yml
@@ -1,6 +1,10 @@
---
sr:
activerecord:
+ attributes:
+ poll:
+ expires_at: Крајњи рок
+ options: Избори
errors:
models:
account:
diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml
index 67c160821..7c217efca 100644
--- a/config/locales/activerecord.sv.yml
+++ b/config/locales/activerecord.sv.yml
@@ -5,13 +5,28 @@ sv:
poll:
expires_at: Tidsgräns
options: Val
+ user:
+ agreement: Serviceavtal
+ email: E-postadress
+ locale: Lokal
+ password: Lösenord
+ user/account:
+ username: Användarnamn
+ user/invite_request:
+ text: Anledning
errors:
models:
account:
attributes:
username:
invalid: endast bokstäver, siffror och understrykning
+ reserved: är reserverat
status:
attributes:
reblog:
taken: av status finns redan
+ user:
+ attributes:
+ email:
+ blocked: använder en icke tillåten e-postleverantör
+ unreachable: verkar inte existera
diff --git a/config/locales/activerecord.th.yml b/config/locales/activerecord.th.yml
index 4dea79b88..ef93d4ce9 100644
--- a/config/locales/activerecord.th.yml
+++ b/config/locales/activerecord.th.yml
@@ -5,13 +5,25 @@ th:
poll:
expires_at: กำหนดเวลาสิ้นสุด
options: ตัวเลือก
+ user:
+ agreement: ข้อตกลงการให้บริการ
+ email: ที่อยู่อีเมล
+ password: รหัสผ่าน
+ user/account:
+ username: ชื่อผู้ใช้
+ user/invite_request:
+ text: เหตุผล
errors:
models:
account:
attributes:
username:
- invalid: ตัวอักษร, ตัวเลข และขีดล่างเท่านั้น
+ invalid: ต้องมีเฉพาะตัวอักษร, ตัวเลข และขีดล่างเท่านั้น
status:
attributes:
reblog:
- taken: ของสถานะมีอยู่แล้ว
+ taken: ของโพสต์มีอยู่แล้ว
+ user:
+ attributes:
+ email:
+ blocked: ใช้ผู้ให้บริการอีเมลที่ไม่ได้รับอนุญาต
diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml
index 336c83e7b..890f065b1 100644
--- a/config/locales/activerecord.tr.yml
+++ b/config/locales/activerecord.tr.yml
@@ -5,13 +5,28 @@ tr:
poll:
expires_at: Bitiş zamanı
options: Seçenekler
+ user:
+ agreement: Hizmet Sözleşmesi
+ email: E-posta adresi
+ locale: Bölge ayarı
+ password: Parola
+ user/account:
+ username: Kullanıcı adı
+ user/invite_request:
+ text: Gerekçe
errors:
models:
account:
attributes:
username:
invalid: sadece harfler, sayılar ve alt çizgiler
+ reserved: kullanılamaz
status:
attributes:
reblog:
taken: durum zaten var
+ user:
+ attributes:
+ email:
+ blocked: izin verilmeyen bir e-posta sağlayıcı kullanıyor
+ unreachable: mevcut gözükmüyor
diff --git a/config/locales/activerecord.tt.yml b/config/locales/activerecord.tt.yml
index 5eab4abff..a689958c4 100644
--- a/config/locales/activerecord.tt.yml
+++ b/config/locales/activerecord.tt.yml
@@ -1 +1,10 @@
+---
tt:
+ activerecord:
+ attributes:
+ user:
+ email: Почта адресы
+ locale: Тел
+ password: Парол
+ user/account:
+ username: Кулланучы исеме
diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml
index ffbf59346..38d4771b3 100644
--- a/config/locales/activerecord.uk.yml
+++ b/config/locales/activerecord.uk.yml
@@ -5,13 +5,28 @@ uk:
poll:
expires_at: Кінцевий термін
options: Варіанти вибору
+ user:
+ agreement: Угода про надання послуг
+ email: E-mail адреса
+ locale: Локаль
+ password: Пароль
+ user/account:
+ username: Ім'я користувача
+ user/invite_request:
+ text: Причина
errors:
models:
account:
attributes:
username:
invalid: тільки літери, цифри та підкреслення
+ reserved: зарезервовано
status:
attributes:
reblog:
taken: статусу вже існує
+ user:
+ attributes:
+ email:
+ blocked: використовує не дозволенного постачальника електронної пошти
+ unreachable: не існує
diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml
index f3c467fa1..c0e989563 100644
--- a/config/locales/activerecord.vi.yml
+++ b/config/locales/activerecord.vi.yml
@@ -5,13 +5,28 @@ vi:
poll:
expires_at: Hạn chót
options: Lựa chọn
+ user:
+ agreement: Đồng ý quy tắc
+ email: Địa chỉ email
+ locale: Quốc gia
+ password: Mật khẩu
+ user/account:
+ username: Tên người dùng
+ user/invite_request:
+ text: Lý do
errors:
models:
account:
attributes:
username:
invalid: chỉ chấp nhận ký tự, số và dấu gạch dưới
+ reserved: bị cấm sử dụng
status:
attributes:
reblog:
taken: của tút đã tồn tại
+ user:
+ attributes:
+ email:
+ blocked: sử dụng dịch vụ email bị cấm
+ unreachable: không tồn tại
diff --git a/config/locales/activerecord.zgh.yml b/config/locales/activerecord.zgh.yml
index 827155466..40ea104bb 100644
--- a/config/locales/activerecord.zgh.yml
+++ b/config/locales/activerecord.zgh.yml
@@ -1 +1,18 @@
+---
zgh:
+ activerecord:
+ attributes:
+ poll:
+ options: ⵜⵉⴷⵖⴰⵔⵉⵏ
+ user:
+ email: ⵜⴰⵏⵙⴰ ⵉⵎⴰⵢⵍ
+ locale: ⴰⴷⵖⴰⵔⴰⵏ
+ password: ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ
+ user/account:
+ username: ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ
+ errors:
+ models:
+ user:
+ attributes:
+ email:
+ unreachable: ⴰⵎⵎⴰⵏⵉ ⵉⵙ ⵓⵔ ⵉⵍⵍⵉ
diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml
index 8d2ddfd14..946e81893 100644
--- a/config/locales/activerecord.zh-CN.yml
+++ b/config/locales/activerecord.zh-CN.yml
@@ -5,13 +5,28 @@ zh-CN:
poll:
expires_at: 截止时间
options: 选项
+ user:
+ agreement: 服务协议
+ email: 电子邮箱地址
+ locale: 本地化
+ password: 密码
+ user/account:
+ username: 用户名
+ user/invite_request:
+ text: 理由
errors:
models:
account:
attributes:
username:
invalid: 只能使用字母、数字和下划线
+ reserved: 是保留关键字
status:
attributes:
reblog:
taken: 已经被转嘟过
+ user:
+ attributes:
+ email:
+ blocked: 使用了被封禁的电子邮件提供商
+ unreachable: 似乎不存在
diff --git a/config/locales/activerecord.zh-HK.yml b/config/locales/activerecord.zh-HK.yml
index 89c3fa02d..1aa9dfebe 100644
--- a/config/locales/activerecord.zh-HK.yml
+++ b/config/locales/activerecord.zh-HK.yml
@@ -5,13 +5,28 @@ zh-HK:
poll:
expires_at: 截止時間
options: 選項
+ user:
+ agreement: 服務合約
+ email: 電郵地址
+ locale: 地區設定
+ password: 密碼
+ user/account:
+ username: 使用者名稱
+ user/invite_request:
+ text: 原因
errors:
models:
account:
attributes:
username:
invalid: 只能使用字母、數字和下劃線
+ reserved: 已被保留
status:
attributes:
reblog:
taken: 已經被轉推過
+ user:
+ attributes:
+ email:
+ blocked: 使用不被允許的電子郵件供應商
+ unreachable: 似乎不存在
diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml
index 4f938a7f5..c6856c386 100644
--- a/config/locales/activerecord.zh-TW.yml
+++ b/config/locales/activerecord.zh-TW.yml
@@ -5,13 +5,28 @@ zh-TW:
poll:
expires_at: 截止時間
options: 選擇
+ user:
+ agreement: 服務同意書
+ email: 電子信箱地址
+ locale: 地區
+ password: 密碼
+ user/account:
+ username: 使用者名稱
+ user/invite_request:
+ text: 原因
errors:
models:
account:
attributes:
username:
invalid: 只能有字母、數字及底線
+ reserved: 是保留關鍵字
status:
attributes:
reblog:
taken: 嘟文已經存在
+ user:
+ attributes:
+ email:
+ blocked: 使用不被允許的電子信箱供應商
+ unreachable: 似乎不存在
diff --git a/config/locales/af.yml b/config/locales/af.yml
new file mode 100644
index 000000000..4afb11de5
--- /dev/null
+++ b/config/locales/af.yml
@@ -0,0 +1,12 @@
+---
+af:
+ errors:
+ '400': The request you submitted was invalid or malformed.
+ '403': You don't have permission to view this page.
+ '404': The page you are looking for isn't here.
+ '406': This page is not available in the requested format.
+ '410': The page you were looking for doesn't exist here anymore.
+ '422':
+ '429': Too many requests
+ '500':
+ '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 44ada75d1..07d7dab3a 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -3,7 +3,7 @@ ar:
about:
about_hashtag_html: هذه تبويقات متاحة للجمهور تحتوي على الكلمات الدلالية #%{hashtag}. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس.
about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!'
- about_this: عن مثيل الخادوم هذا
+ about_this: عن مثيل الخادم هذا
active_count_after: نشط
active_footnote: مستخدم نشيط شهريا (MAU)
administered_by: 'يُديره:'
@@ -21,8 +21,13 @@ ar:
federation_hint_html: بواسطة حساب في %{instance} ستتمكن من تتبع أناس في أي خادم ماستدون وأكثر.
get_apps: جرّب تطبيقا على الموبايل
hosted_on: ماستدون مُستضاف على %{domain}
+ instance_actor_flash: |
+ هذا الحساب هو ممثل افتراضي يستخدم لتمثيل الخادم نفسه وليس أي مستخدم فردي.
+ يستخدم لأغراض الاتحاد ولا ينبغي حظره إلا إذا كنت ترغب في حظر مثيل الخادم بأكمله، في هذه الحالة يجب عليك استخدام أداة حظر النطاق.
learn_more: تعلم المزيد
privacy_policy: سياسة الخصوصية
+ rules: قوانين الخادم
+ rules_html: 'فيما يلي ملخص للقوانين التي تحتاج إلى اتباعها إذا كنت تريد أن يكون لديك حساب على هذا الخادم من ماستدون:'
see_whats_happening: اطّلع على ما يجري
server_stats: 'إحصائيات الخادم:'
source_code: الشفرة المصدرية
@@ -69,6 +74,7 @@ ar:
two: متابِعون
zero: متابِعون
following: مُتابَع
+ instance_actor_flash: هذا الحساب هو ممثل افتراضي يُستخدم لتمثيل الخادم نفسه ولا يمثل أي مستخدم فردي، يُستخدم لأغراض الاتحاد ولا ينبغي حظره.
joined: انضم·ت في %{date}
last_active: آخر نشاط
link_verified_on: تم التحقق مِن مالك هذا الرابط بتاريخ %{date}
@@ -90,7 +96,6 @@ ar:
zero: تبويقات
posts_tab_heading: تبويقات
posts_with_replies: التبويقات و الردود
- reserved_username: اسم المستخدم محجوز
roles:
admin: المدير
bot: روبوت
@@ -108,8 +113,10 @@ ar:
delete: حذف
destroyed_msg: تم تدمير ملاحظة الإشراف بنجاح!
accounts:
+ add_email_domain_block: حظر نطاق بريد إلكتروني
approve: صادِق عليه
approve_all: الموافقة على الكل
+ approved_msg: تمت الموافقة على تسجيل %{username}
are_you_sure: متأكد ؟
avatar: الصورة الرمزية
by_domain: النطاق
@@ -123,8 +130,10 @@ ar:
confirm: تأكيد
confirmed: مؤكَّد
confirming: التأكد
+ delete: حذف البيانات
deleted: تمت إزالته
demote: إنزال الرُتبة الوظيفية
+ destroyed_msg: بيانات حساب %{username} الآن في قائمة الانتظار ليتم حذفها قريباً
disable: تعطيل
disable_two_factor_authentication: تعطيل المصادقة بخطوتين
disabled: معطَّل
@@ -135,10 +144,12 @@ ar:
email_status: حالة البريد الإلكتروني
enable: تفعيل
enabled: مفعَّل
+ enabled_msg: تم إلغاء تجميد حساب %{username}
followers: المتابِعون
follows: يتابع
header: الرأسية
inbox_url: رابط صندوق الوارد
+ invite_request_text: أسباب للانضمام
invited_by: تمت دعوته مِن طرف
ip: عنوان الإيبي
joined: انضم
@@ -150,6 +161,8 @@ ar:
login_status: وضع الدخول
media_attachments: الوسائط المرفقة
memorialize: تحويل الحساب إلى صفحة ذكرى
+ memorialized: تذكاري
+ memorialized_msg: تم تحويل %{username} بنجاح إلى حساب تذكاري
moderation:
active: نشِط
all: الكل
@@ -170,10 +183,14 @@ ar:
public: عمومي
push_subscription_expires: انتهاء الاشتراك ”PuSH“
redownload: انعش الصفحة التعريفية
+ redownloaded_msg: تم تحديث ملف %{username} التعريفي من الأصل
reject: ارفض
reject_all: ارفض الكل
+ rejected_msg: تم رفض تطبيق تسجيل %{username} بنجاح
remove_avatar: حذف الصورة الرمزية
remove_header: حذف الرأسية
+ removed_avatar_msg: تمت إزالة صورة %{username} الرمزية بنجاح
+ removed_header_msg: تمت إزالة صورة %{username} الرأسية بنجاح
resend_confirmation:
already_confirmed: هذا المستخدم مؤكد بالفعل
send: أعد إرسال رسالة البريد الإلكتروني الخاصة بالتأكيد
@@ -190,6 +207,8 @@ ar:
search: البحث
search_same_email_domain: مستخدمون آخرون لديهم نفس نطاق البريد الإلكتروني
search_same_ip: مستخدِمون آخرون بنفس الـ IP
+ sensitive: حساس
+ sensitized: مُعَين كمنشور حساس
shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد
show:
created_reports: البلاغات التي أنشأها هذا الحساب
@@ -199,13 +218,19 @@ ar:
statuses: المنشورات
subscribe: اشترك
suspended: تم تعليقه
+ suspension_irreversible: تم حذف بيانات هذا الحساب بشكل لا رجعة فيه، يمكنك إلغاء تعليق الحساب لجعله قابلا للاستخدام، ولكنه لن يسترد أي بيانات كانت لديه سابقاً.
+ suspension_reversible_hint_html: تم تعليق الحساب، وسيتم إزالة البيانات بالكامل في %{date}، حتى ذلك الحين، يمكن استعادة الحساب دون أي آثار سلبية أي كما أنه لم يحدث أي شيء، إذا كنت ترغب في حذف جميع بيانات الحساب الآن، فيمكنك فعل ذلك أدناه.
time_in_queue: في قائمة الانتظار %{time}
title: الحسابات
unconfirmed_email: البريد الإلكتروني غير مؤكد
+ undo_sensitized: التراجع عن حساسية
undo_silenced: رفع الصمت
undo_suspension: إلغاء تعليق الحساب
+ unsilenced_msg: تم فك الحدود من حساب %{username} بنجاح
unsubscribe: إلغاء الاشتراك
+ unsuspended_msg: تم إلغاء تجميد حساب %{username}
username: اسم المستخدم
+ view_domain: عرض ملخص للنطاق
warn: تحذير
web: الويب
whitelisted: في القائمة البيضاء
@@ -217,10 +242,20 @@ ar:
create_account_warning: إنشاء تحذير
create_announcement: إنشاء إعلان
create_custom_emoji: إنشاء إيموجي مخصص
+ create_domain_allow: إنشاء نطاق المسموح به
+ create_domain_block: إنشاء كتلة نطاق
+ create_email_domain_block: إنشاء كتلة نطاق بريد إلكتروني
+ create_ip_block: إنشاء قاعدة IP جديدة
+ create_unavailable_domain: إنشاء نطاق غير متوفر
demote_user: إنزال رتبة المستخدم
destroy_announcement: احذف الإعلان
destroy_custom_emoji: احذف الإيموجي المخصص
+ destroy_domain_allow: حذف النطاق المسموح به
+ destroy_domain_block: حذف كتلة النطاق
+ destroy_email_domain_block: حذف نطاق بريد إلكتروني
+ destroy_ip_block: حذف قانون IP
destroy_status: حذف المنشور
+ destroy_unavailable_domain: حذف نطاق غير متوفر
disable_2fa_user: تعطيل 2FA
disable_custom_emoji: تعطيل الإيموجي المخصص
disable_user: تعطيل المستخدم
@@ -232,50 +267,26 @@ ar:
reopen_report: إعادة فتح التقرير
reset_password_user: إعادة تعيين كلمة المرور
resolve_report: حل الشكوى
+ sensitive_account: وضع علامة على الوسائط في حسابك على أنها حساسة
silence_account: كتم الحساب
suspend_account: تعليق الحساب
unassigned_report: إلغاء إسناد الشكوى
+ unsensitive_account: إلغاء تحديد الوسائط في حسابك على أنها حساسة
unsilence_account: إلغاء كتم الحساب
unsuspend_account: إلغاء تعليق الحساب
update_announcement: تحديث الإعلان
update_custom_emoji: تحديث الإيموجي المخصص
+ update_domain_block: تحديث كتلة النطاق
update_status: تحديث الحالة
actions:
- assigned_to_self_report: قام %{name} بتعيين التقرير %{target} لأنفسهم
- change_email_user: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target}
- confirm_user: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}"
- create_account_warning: قام %{name} بإرسال تحذير إلى %{target}
- create_announcement: قام %{name} بإنشاء إعلان جديد %{target}
- create_custom_emoji: "%{name} قام برفع إيموجي جديد %{target}"
- create_domain_allow: قام %{name} بإضافة النطاق %{target} إلى القائمة البيضاء
- create_domain_block: "%{name} قام بحجب نطاق %{target}"
- create_email_domain_block: "%{name} قد قام بحظر نطاق البريد الإلكتروني %{target}"
- demote_user: "%{name} قد قام بإنزال الرتبة الوظيفية لـ %{target}"
- destroy_announcement: قام %{name} بحذف الإعلان %{target}
- destroy_custom_emoji: قام %{name} بحذف الإيموجي %{target}
- destroy_domain_allow: قام %{name} بإزالة النطاق %{target} مِن القائمة البيضاء
- destroy_domain_block: "%{name} قام بإلغاء الحجب عن النطاق %{target}"
- destroy_email_domain_block: قام %{name} بإضافة نطاق البريد الإلكتروني %{target} إلى اللائحة البيضاء
- destroy_status: لقد قام %{name} بحذف منشور %{target}
- disable_2fa_user: "%{name} لقد قام بتعطيل ميزة المصادقة بخطوتين للمستخدم %{target}"
- disable_custom_emoji: "%{name} قام بتعطيل الإيموجي %{target}"
- disable_user: "%{name} لقد قام بتعطيل تسجيل الدخول للمستخدِم %{target}"
- enable_custom_emoji: "%{name} قام بتنشيط الإيموجي %{target}"
- enable_user: لقد قام %{name} بتنشيط تسجيل الدخول للمستخدِم %{target}
- memorialize_account: لقد قام %{name} بتحويل حساب %{target} إلى صفحة تذكارية
- promote_user: "%{name} قام بترقية المستخدم %{target}"
- remove_avatar_user: تمت إزالة %{name} الصورة الرمزية %{target}
- reopen_report: تمت إعادة فتح الشكوى %{name} %{target}
- reset_password_user: "%{name} لقد قام بإعادة تعيين الكلمة السرية الخاصة بـ %{target}"
- resolve_report: قام %{name} بحل الشكوى %{target}
- silence_account: لقد قام %{name} بكتم حساب %{target}
- suspend_account: لقد قام %{name} بتعليق حساب %{target}
- unassigned_report: "%{name} تقرير غير معتمد %{target}"
- unsilence_account: لقد قام %{name} بإلغاء الكتم عن حساب %{target}
- unsuspend_account: لقد قام %{name} بإلغاء التعليق المفروض على حساب %{target}
- update_announcement: قام %{name} بتحديث الإعلان %{target}
- update_custom_emoji: "%{name} قام بتحديث الإيموجي %{target}"
- update_status: لقد قام %{name} بتحديث منشور %{target}
+ assigned_to_self_report_html: قام %{name} بتعيين التقرير %{target} لأنفسهم
+ change_email_user_html: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target}
+ confirm_user_html: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}"
+ create_account_warning_html: قام %{name} بإرسال تحذير إلى %{target}
+ create_announcement_html: قام %{name} بإنشاء إعلان جديد %{target}
+ create_custom_emoji_html: "%{name} قام برفع إيموجي جديد %{target}"
+ create_domain_allow_html: قام %{name} بإضافة النطاق %{target} إلى القائمة البيضاء
+ create_domain_block_html: "%{name} قام بحجب نطاق %{target}"
deleted_status: "(منشور محذوف)"
empty: لم يتم العثور على سجلات.
filter_by_action: تصفية بحسب الإجراء
@@ -338,7 +349,6 @@ ar:
feature_profile_directory: دليل الملفات التعريفية
feature_registrations: التسجيلات
feature_relay: المُرحّل الفديرالي
- feature_spam_check: مكافح البريد المزعج
feature_timeline_preview: معاينة الخيط الزمني
features: الميّزات
hidden_service: الفيديرالية مع الخدمات الخفية
@@ -368,6 +378,7 @@ ar:
destroyed_msg: تم إلغاء الحجب المفروض على النطاق
domain: النطاق
edit: تحرير النطاق المحظور
+ existing_domain_block_html: لقد فرضت بالفعل سابقاً حدوداً أكثر صرامة على %{name}، تحتاج إلى إلغاء حظره أولاً.
new:
create: إنشاء حظر
hint: لن تمنع كتلة المجال إنشاء إدخالات حساب في قاعدة البيانات ، ولكنها ستطبق طرق الإشراف المحددة بأثر رجعي وتلقائي على هذه الحسابات.
@@ -377,12 +388,18 @@ ar:
silence: كتم
suspend: تعليق
title: حجب نطاق جديد
+ obfuscate: تشويش اسم النطاق
+ obfuscate_hint: تشويش اسم النطاق جزئيا في القائمة إذا كان الإعلان عن قائمة قيود النطاق مفعلاً
private_comment: تعليق خاص
+ private_comment_hint: التعليق على تقييد هذا النطاق للاستخدام الداخلي من قبل المشرفين.
public_comment: تعليق للعلن
+ public_comment_hint: التعليق على تقييد هذا النطاق لعامة الجمهور، إذا كان الإعلان عن قائمة قيود النطاق مفعلاً.
reject_media: رفض ملفات الوسائط
reject_media_hint: يزيل ملفات الوسائط المخزنة محليًا ويرفض تنزيل أي ملفات في المستقبل. غير ذي صلة للتعليق
reject_reports: رفض التقارير
reject_reports_hint: تجاهل جميع تقارير الإبلاغ القادمة من هذا النطاق. هذا يستثي التعليقات
+ rejecting_media: جار رفض ملفات الوسائط
+ rejecting_reports: جار رفض التقارير
severity:
silence: تم كتمه
suspend: تم تعليقه
@@ -400,6 +417,7 @@ ar:
title: رفع حظر النطاق عن %{domain}
undo: إلغاء
undo: إلغاء حجب النطاق
+ view: عرض كتلة النطاق
email_domain_blocks:
add_new: إضافة
created_msg: لقد دخل حظر نطاق البريد الإلكتروني حيّز الخدمة
@@ -415,6 +433,7 @@ ar:
instances:
by_domain: النطاق
delivery_available: التسليم متوفر
+ empty: لم يتم العثور على نطاقات.
known_accounts:
few: "%{count} حسابات معروفة"
many: "%{count} حسابات معروفة"
@@ -443,6 +462,9 @@ ar:
title: التصفية
title: الدعوات
ip_blocks:
+ add_new: إنشاء قانون
+ created_msg: تمت إضافة قاعدة IP جديدة
+ delete: حذف
expires_in:
'1209600': أسبوعان
'15778476': 6 أشهر
@@ -450,6 +472,10 @@ ar:
'31556952': سنة واحدة
'86400': يوم واحد
'94670856': 3 سنوات
+ new:
+ title: إنشاء قاعدة IP جديدة
+ no_ip_block_selected: لم يطرأ أي تغيير على أي قاعدة IP بما أنه لم يتم اختيار أي واحد
+ title: قواعد الـIP
pending_accounts:
title: الحسابات المعلقة (%{count})
relationships:
@@ -457,6 +483,7 @@ ar:
relays:
add_new: إضافة مُرحّل جديد
delete: حذف
+ description_html: "مُرَحِّل الاتحاد هو خادم وسيط يقوم بتبادل كميات كبيرة من التبويقات العامة بين الخوادم التي تشترك به وتنشر إليه. يمكنه أن يساعد الخوادم الصغيرة والمتوسطة على اكتشاف المحتوى من فيديفرس، الذي من شأنه خلاف ذلك أن يَتطلّب من المستخدمين المحليين أن يُتابِعوا يدوياً الأشخاص الآخرين على خوادم مُتحكم بها عن بُعد."
disable: تعطيل
disabled: مُعطَّل
enable: تشغيل
@@ -496,6 +523,8 @@ ar:
comment:
none: لا شيء
created_at: ذكرت
+ forwarded: أُعيد توجيهه
+ forwarded_to: أُعيد توجيهه إلى %{domain}
mark_as_resolved: اعتبار الشكوى كمحلولة
mark_as_unresolved: علم كغير محلولة
notes:
@@ -515,6 +544,10 @@ ar:
unassign: إلغاء تعيين
unresolved: غير معالجة
updated_at: محدث
+ rules:
+ add_new: إضافة قاعدة
+ edit: تعديل القانون
+ title: قوانين الخادم
settings:
activity_api_enabled:
desc_html: عدد المنشورات المحلية و المستخدمين الناشطين و التسجيلات الأسبوعية الجديدة
@@ -529,6 +562,7 @@ ar:
desc_html: يقوم بتغيير المظهر بواسطة سي أس أس يُحمَّل على كافة الصفحات
title: سي أس أس مخصص
default_noindex:
+ desc_html: يؤثر على جميع المستخدمين الذين لم يغيروا هذا الإعداد بأنفسهم
title: عدم السماح مبدئيا لمحركات البحث بفهرسة الملفات التعريفية للمستخدمين
domain_blocks:
all: للجميع
@@ -537,12 +571,11 @@ ar:
users: للمستخدمين المتصلين محليا
domain_blocks_rationale:
title: اظهر السبب
- enable_bootstrap_timeline_accounts:
- title: تمكين الاشتراكات الافتراضية للمستخدمين الجدد
hero:
desc_html: معروض على الصفحة الأولى. لا يقل عن 600 × 100 بكسل. عند عدم التعيين ، تعود الصورة إلى النسخة المصغرة على سبيل المثال
title: الصورة الرأسية
mascot:
+ desc_html: معروض على عدة صفحات، يوصى بِعلى الأقل 293x205 بكسل، عند عدم التعيين، تعود الصورة إلى التميمة الافتراضية
title: صورة الماسكوت
peers_api_enabled:
desc_html: أسماء النطاقات التي التقى بها مثيل الخادوم على البيئة الموحَّدة فديفرس
@@ -563,6 +596,9 @@ ar:
min_invite_role:
disabled: لا أحد
title: المستخدِمون المصرح لهم لإرسال الدعوات
+ require_invite_text:
+ desc_html: عندما تتطلب التسجيلات الموافقة اليدوية، جعل إدخال نص لسؤال "لماذا تريد أن تنضم؟" إلزاميا بدلاً من اختياري
+ title: الطلب من المستخدمين الجدد إدخال سبب للتسجيل
registrations_mode:
modes:
approved: طلب الموافقة لازم عند إنشاء حساب
@@ -570,6 +606,7 @@ ar:
open: يمكن للجميع إنشاء حساب
title: طريقة إنشاء الحسابات
show_known_fediverse_at_about_page:
+ desc_html: عند التعطيل، يُقيّد الخط الزمني العام المرتبط من صفحة الهبوط لعرض المحتوى المحلي فقط
title: إظهار الفديفرس الموحَّد في خيط المُعايَنة
show_staff_badge:
desc_html: عرض شارة الموظفين على صفحة المستخدم
@@ -587,9 +624,6 @@ ar:
desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
title: شروط الخدمة المخصصة
site_title: اسم مثيل الخادم
- spam_check_enabled:
- desc_html: يمكن لماستدون الإبلاغ التلقائي عن الحسابات التي ترسل رسائل متكررة غير مرغوب فيها. قد تكون هناك زائفات إيجابيات.
- title: مكافحة البريد المزعج
thumbnail:
desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به
title: الصورة الرمزية المصغرة لمثيل الخادوم
@@ -601,6 +635,7 @@ ar:
desc_html: يؤثر على علامات الوسوم التي لم يكن مسموح بها مسبقاً
title: السماح للوسوم بالظهور على المتداوَلة بدون مراجعة مسبقة
trends:
+ desc_html: عرض علني للوسوم المستعرضة سابقاً التي هي رائجة الآن
title: الوسوم المتداولة
site_uploads:
delete: احذف الملف الذي تم تحميله
@@ -623,9 +658,6 @@ ar:
accounts_today: استخدامات هذا اليوم
accounts_week: استخدامات هذا الأسبوع
breakdown: توزيع استخدام اليوم حسب المصدر
- context: السياق
- directory: في دليل حسابات المستخدمين
- in_directory: "%{count} في سجل حسابات المستخدمين"
last_active: آخر نشاط
most_popular: الأكثر شعبية
most_recent: الأحدث
@@ -700,8 +732,11 @@ ar:
prefix_sign_up: أنشئ حسابًا على ماستدون اليوم!
suffix: بفضل حساب ، ستكون قادرا على متابعة الأشخاص ونشر تحديثات وتبادل رسائل مع مستخدمين مِن أي خادم Mastodon وأكثر!
didnt_get_confirmation: لم تتلق تعليمات التأكيد ؟
+ dont_have_your_security_key: ليس لديك مفتاح الأمان الخاص بك؟
forgot_password: نسيت كلمة المرور ؟
invalid_reset_password_token: رمز إعادة تعيين كلمة المرور غير صالح أو منتهي الصلاحية. يرجى طلب واحد جديد.
+ link_to_otp: أدخل رمز ذو عامِلين من هاتفك أو رمز الاسترجاع
+ link_to_webauth: استخدم جهاز مفتاح الأمان الخاص بك
login: تسجيل الدخول
logout: خروج
migrate_account: الانتقال إلى حساب آخر
@@ -726,7 +761,9 @@ ar:
functional: حسابك جاهز.
pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك.
redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}.
+ too_fast: تم إرسال النموذج بسرعة كبيرة، حاول مرة أخرى.
trouble_logging_in: هل صادفتكم مشكلة في الولوج؟
+ use_security_key: استخدام مفتاح الأمان
authorize_follow:
already_following: أنت تتابع بالفعل هذا الحساب
already_requested: لقد قُمتَ بإرسال طلب متابَعة إلى هذا الحساب مِن قَبل
@@ -751,6 +788,7 @@ ar:
date:
formats:
default: "%d %b %Y"
+ with_month_name: "%d %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}سا"
@@ -815,6 +853,7 @@ ar:
request: اطلب نسخة مِن حسابك
size: الحجم
blocks: قمت بحظر
+ bookmarks: الفواصل المرجعية
csv: CSV
domain_blocks: النطاقات المحظورة
lists: القوائم
@@ -824,6 +863,7 @@ ar:
add_new: أضف واحدًا جديدا
errors:
limit: لقد قمت بالفعل بعرض الحد الأقصى من الوسوم
+ hint_html: "ما هي الوسوم الرائجة؟ يتم عرضها بشكل بارز على ملفك الشخصي العام وتسمح للناس بتصفح منشوراتك العامة على وجه التحديد تحت تلك الوسوم. وهي أداة رائعة لتتبع الأعمال الإبداعية أو المشاريع الطويلة الأجل."
filters:
contexts:
account: الملفات التعريفية
@@ -868,6 +908,13 @@ ar:
active: نشط
authorize: نعم ، قم بترخيصه
authorize_connection_prompt: هل تريد ترخيص هذا الاتصال المشفّر؟
+ errors:
+ failed: فشل اتصال التشفير. الرجاء المحاولة مرة أخرى من %{provider}.
+ keybase:
+ invalid_token: رموز Keybase هي تجزئة من التوقيعات ويجب أن تكون 66 حرف hex
+ verification_failed: Keybase لا يستطيع التعرف على هذا الرمز كتوقيع لمستخدم Keybase %{kb_username}، الرجاء إعادة المحاولة من Keybase.
+ wrong_user: لا يمكن إنشاء دليل لـ%{proving} أثناء تسجيل الدخول كـ%{current}. قم بتسجيل الدخول كـ%{proving} ثم حاول مرة أخرى.
+ explanation_html: هنا يمكنك أن تربط بشكل مُشفر هوياتك الأُخريات من منصات أخرى مثل Keybase. هذا يتيح للأشخاص الآخرين إرسال رسائل مشفرة إليك على تلك المنصات ويسمح لهم بالثقة في أن المحتوى الذي ترسله لهم يأتي منك أنت.
i_am_html: أنا %{username} على %{service}.
identity: الهوية
inactive: ليس نشطا
@@ -878,6 +925,8 @@ ar:
status: حالة التحقق
view_proof: عرض الدليل
imports:
+ errors:
+ over_rows_processing_limit: يحتوي على أكثر من %{count} صف
modes:
merge: دمج
merge_long: الإبقاء علي التسجيلات الحالية وإضافة الجديدة
@@ -887,6 +936,7 @@ ar:
success: تم تحميل بياناتك بنجاح وسيتم معالجتها في الوقت المناسب
types:
blocking: قائمة المحظورين
+ bookmarks: الفواصل المرجعية
domain_blocking: قائمة النطاقات المحظورة
following: قائمة المستخدمين المتبوعين
muting: قائمة الكتم
@@ -949,11 +999,20 @@ ar:
redirecting_to: حسابك موجَّه إلى %{acct}.
set_redirect: تعين إعادة التوجيه
warning:
+ backreference_required: يجب على الحساب الجديد أن يتم تكوينه كمرجع خلفي لهذا الحساب
before: 'يرجى قراءة هذه الملاحظات بتأنّي قبل المواصلة:'
+ cooldown: بعد الانتقال هناك فترة تبريد لن تتمكن خلالها من الانتقال مرة أخرى
+ disabled_account: لن يكون حسابك الحالي قابلا للاستخدام بشكل كامل بعد ذلك، ولكن سيكون لديك حق الوصول إلى تصدير البيانات وكذلك إعادة التنشيط.
followers: تقوم هذه العملية بنقل كافة المُتابِعين مِن الحساب الحالي إلى الحساب الجديد
+ only_redirect_html: بدلاً من ذلك، يمكنك أن تضع فقط إعادة توجيه على ملفك الشخصي.
other_data: لن يتم نقل أية بيانات أخرى تلقائيا
+ redirect: سيتم تحديث ملفك التعريفي الحالي مع إشعار إعادة توجيه وسيتم استبعاده من عمليات البحث
moderation:
title: الإشراف
+ move_handler:
+ carry_blocks_over_text: انتقل هذا المستخدم من %{acct}، الذي حَظرته أنت.
+ carry_mutes_over_text: انتقل هذا المستخدم من %{acct}، الذي كتَمتَه أنت.
+ copy_account_note_text: 'انتقل هذا المستخدم من %{acct}، إليك ملاحظاتك السابقة عنه:'
notification_mailer:
digest:
action: معاينة كافة الإشعارات
@@ -996,6 +1055,8 @@ ar:
body: 'قام %{name} بترقية منشورك:'
subject: قام %{name} بترقية منشورك
title: ترقية جديدة
+ status:
+ subject: "%{name} نشر للتو"
notifications:
email_events: الأحداث للإشعارات عبر البريد الإلكتروني
email_events_hint: 'اختر الأحداث التي تريد أن تصِلَك اشعارات عنها:'
@@ -1010,6 +1071,14 @@ ar:
quadrillion: كواد
thousand: ألف
trillion: ترل
+ otp_authentication:
+ code_hint: قم بإدخال الرمز المُوَلّد عبر تطبيق الاستيثاق لديك للتأكيد
+ description_html: في حال تفعيل الاستيثاق بخطوتين باستخدام تطبيق استيثاق، فسيتطلب تسجيل الدخول منك أن يكون بحوزتك هاتفك النقال، الذي سيُولد الرمز لك لتُدخله.
+ enable: تفعيل
+ instructions_html: "قم بمسح رمز الـQR عبر Google Authenticator أو أي تطبيق TOTP على جهازك. من الآن فصاعدا سيقوم ذاك التطبيق بتوليد رموز يجب عليك إدخالها عند تسجيل الدخول."
+ manual_instructions: 'في حالة تعذّر مسح رمز QR وتحتاج إلى إدخاله يدوياً، يُمْكِنك إدخال هذا النص السري على التطبيق:'
+ setup: إعداد
+ wrong_code: الرمز الذي تم إدخاله غير صالح! هل وقت الخادم ووقت الجهاز صحيحَين؟
pagination:
newer: الأحدَث
next: التالي
@@ -1024,6 +1093,7 @@ ar:
duration_too_short: مبكّر جدا
expired: لقد انتهى استطلاع الرأي
invalid_choice: خيار التصويت الذي قُمتَ يتحديده غير موجود
+ over_character_limit: لا يمكن أن يكون أطول من %{max} حرف لكل واحد
too_few_options: يجب أن يحتوي على أكثر من عنصر واحد
too_many_options: لا يمكنه أن يحتوي أكثر مِن %{max} عناصر
preferences:
@@ -1037,6 +1107,7 @@ ar:
relationships:
activity: نشاط الحساب
dormant: في سبات
+ follow_selected_followers: متابَعة المتابِعين المحددين
followers: المتابِعون
following: يُتابِع
invited: مَدعُوّ
@@ -1133,8 +1204,7 @@ ar:
profile: الملف التعريفي
relationships: المتابِعون والمتابَعون
two_factor_authentication: المُصادقة بخُطوَتَيْن
- spam_check:
- spam_detected: هذا إبلاغ تلقائي. تم اكتشاف منشورات عشوائية غير مرغوب فيها.
+ webauthn_authentication: مفاتيح الأمان
statuses:
attached:
audio:
@@ -1195,6 +1265,8 @@ ar:
zero: بدون صوت %{count}
vote: صوّت
show_more: أظهر المزيد
+ show_newer: إظهار أحدث
+ show_older: إظهار أقدم
show_thread: اعرض خيط المحادثة
sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
title: '%{name}: "%{quote}"'
@@ -1212,6 +1284,88 @@ ar:
tags:
does_not_match_previous_name: لا يطابق الإسم السابق
terms:
+ body_html: |
+
سياسة الخصوصية
+ ما هي المعلومات التي نجمعها؟
+
+
+
+
+
+ بماذا نستعمل معلوماتك؟
+
+
+
+
+
+
+ كيف نحمي معلوماتك؟
+
+
+
+ ما هي سياسة الاحتفاظ بالبيانات لدينا؟
+
+
+
+
+
+
+ هل نستخدم الـCookies (ملفات تعريف الارتباط)؟
+
+
+
+ هل نُفصح عن أي معلومات لأطراف خارجية؟
+
+
+
+ استخدام الأطفال للموقع
+
+
+
+ تغييرات لسياستنا للخصوصية
+
+ rel="me". محتوى النص في الرابط غير مهم. على سبيل المثال:'
verification: التحقق
+ webauthn_credentials:
+ add: إضافة مفتاح أمان جديد
+ create:
+ error: حدثت مشكلة ما خلال إضافة مفتاح أمانك. الرجاء المحاولة مرة أخرى.
+ success: تم إضافة مفتاح الأمان الخاص بك.
+ delete: حذف
+ delete_confirmation: هل أنت متأكد من أنك تريد حذف مفتاح الأمان هذا؟
+ description_html: إذا قمت بتفعيل استيثاق مفتاح الأمان، فإن تسجيل الدخول سيتطلب منك استخدام أحد مفاتيح الأمان الخاصة بك.
+ destroy:
+ error: حدثت مشكلة ما خلال حذف مفتاح أمانك. الرجاء المحاولة مرة أخرى.
+ success: تم حذف مفتاح الأمان الخاص بك.
+ invalid_credential: مفتاح الأمان غير صالح
+ nickname_hint: أدخل اسم مستعار لمفتاح الأمان الجديد الخاص بك
+ not_enabled: لم تقم بتفعيل WebAuthn بعد
+ not_supported: هذا المتصفح لا يدعم مفاتيح الأمان
+ otp_required: لاستخدام مفاتيح الأمان، يرجى تفعيل الاستيثاق بعامِلين أولاً.
+ registered_on: تم التسجيل في %{date}
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index 59dd30bed..a709113e6 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -5,7 +5,6 @@ ast:
about_mastodon_html: 'La rede social del futuru: ¡ensin anuncios nin vixilancia, con un diseñu éticu y descentralizáu! Controla los tos datos con Mastodon.'
about_this: Tocante a
administered_by: 'Alministráu por:'
- api: API
apps: Aplicaciones pa móviles
apps_platforms: Usa Mastodon dende Android, iOS y otres plataformes
contact: Contautu
@@ -51,19 +50,16 @@ ast:
other: Barritos
posts_tab_heading: Barritos
posts_with_replies: Barritos y rempuestes
- reserved_username: El nome d'usuariu ta acutáu
roles:
bot: Robó
admin:
accounts:
approve_all: Aprobar too
are_you_sure: "¿De xuru?"
- avatar: Avatar
by_domain: Dominiu
domain: Dominiu
email: Corréu
followers: Siguidores
- ip: IP
location:
local: Llocal
title: Allugamientu
@@ -82,26 +78,6 @@ ast:
time_in_queue: Esperando na cola %{time}
title: Cuentes
username: Nome d'usuariu
- web: Web
- action_logs:
- actions:
- create_account_warning: "%{name} unvió una alvertencia a %{target}"
- create_announcement: "%{name} creó un anunciu %{target}"
- create_domain_block: "%{name} bloquió'l dominiu %{target}"
- destroy_announcement: "%{name} desanició l'anunciu %{target}"
- disable_custom_emoji: "%{name} desactivó'l fustaxe %{target}"
- disable_user: "%{name} desactivó l'aniciu de sesión del usuariu %{target}"
- enable_custom_emoji: "%{name} activó'l fustaxe %{target}"
- enable_user: "%{name} activó l'aniciu de sesión del usuariu %{target}"
- promote_user: "%{name} ascendió al usuariu %{target}"
- remove_avatar_user: "%{name} desanició l'avatar de %{target}"
- reopen_report: "%{name} reabrió l'informe de %{target}"
- reset_password_user: "%{name} reafitó la contraseña del usuariu %{target}"
- resolve_report: "%{name} resolvió l'informe de %{target}"
- silence_account: "%{name} silenció la cuenta de %{target}"
- suspend_account: "%{name} suspendió la cuenta de %{target}"
- update_announcement: "%{name} anovó l'anunciu %{target}"
- update_custom_emoji: "%{name} anovo'l fustaxe %{target}"
announcements:
destroyed_msg: "¡L'anunciu desanicióse con ésitu!"
new:
@@ -119,7 +95,6 @@ ast:
features: Carauterístiques
hidden_service: Federación con servicios anubríos
recent_users: Usuarios de recién
- software: Software
total_users: usuarios en total
trends: Tendencies
week_interactions: interaiciones d'esta selmana
@@ -160,7 +135,6 @@ ast:
statuses:
failed_to_execute: Fallu al executar
tags:
- context: Contestu
most_recent: Lo más recién
name: Etiqueta
title: Etiquetes
@@ -183,7 +157,6 @@ ast:
discovery: Descubrición
localization:
body: Mastodon tradúcenlu voluntarios,
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: tol mundu pue collaborar.
sensitive_content: Conteníu sensible
toot_layout: Distribución de los barritos
@@ -204,9 +177,6 @@ ast:
login: Aniciar sesión
migrate_account: Mudase a otra cuenta
migrate_account_html: Si deseyes redirixir esta cuenta a otra, pues configuralo equí.
- providers:
- cas: CAS
- saml: SAML
register: Rexistrase
security: Seguranza
trouble_logging_in: "¿Problemes col aniciu de sesión?"
@@ -254,7 +224,6 @@ ast:
request: Solicitar l'archivu
size: Tamañu
blocks: Xente que bloquiesti
- csv: CSV
lists: Llistes
mutes: Xente que silenciesti
featured_tags:
@@ -387,38 +356,12 @@ ast:
sessions:
browser: Restolador
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Restolador desconocíu
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Sesión actual
description: "%{browser} en %{platform}"
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
mac: Mac
other: plataforma desconocida
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Revocar
revoke_success: La sesión revocóse con esitu
title: Sesiones
@@ -439,8 +382,6 @@ ast:
profile: Perfil
two_factor_authentication: Autenticación en dos pasos
webauthn_authentication: Claves d'autenticación
- spam_check:
- spam_detected: Esto ye un informe automatizáu. Deteutóse spam.
statuses:
attached:
audio:
@@ -507,7 +448,6 @@ ast:
subject: Afáyate en Mastodon
tips: Conseyos
users:
- invalid_email: La direición de corréu nun ye válida
invalid_otp_token: El códigu nun ye válidu
otp_lost_help_html: Si pierdes l'accesu, contauta con %{email}
seamless_external_login: Aniciesti sesión pente un serviciu esternu, polo que los axustes de la contraseña y corréu nun tán disponibles.
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 9284f25bf..ffa78b386 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -3,17 +3,183 @@ bg:
about:
about_mastodon_html: Mastodon е безплатен сървър с отворен код за социални мрежи. Като децентрализирана алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне Mastodon и лесно да вземе участие в социалната мрежа.
about_this: За тази инстанция
+ active_count_after: активно
+ active_footnote: Месечни активни потребители (МАП)
+ administered_by: 'Администрирано от:'
+ api: API
+ apps: Мобилни приложения
+ apps_platforms: Използвайте Mastodon от iOS, Android и други платформи
+ browse_directory: Разгледайте профилна директория и филтрирайте по интереси
+ browse_local_posts: Разгледайте поток от публични публикации на живо от този сървър
+ browse_public_posts: Разгледайте поток от публични публикации на живо в Mastodon
contact: За контакти
+ contact_missing: Не е зададено
+ contact_unavailable: Не е приложимо
+ discover_users: Открийте потребители
+ documentation: Документация
+ federation_hint_html: С акаунт в %{instance} ще можете да последвате хората от всеки сървър на Mastodon и отвъд.
+ get_apps: Опитайте мобилно приложение
+ hosted_on: Mastodon е хостван на %{domain}
+ learn_more: Още информация
+ privacy_policy: Политика за поверителност
+ see_whats_happening: Вижте какво се случва
+ server_stats: 'Сървърна статистика:'
source_code: Програмен код
+ status_count_after:
+ one: състояние
+ other: състояния
status_count_before: Написали
+ tagline: Следвайте приятели и открийте нови
+ terms: Условия за ползване
+ unavailable_content: Модерирани сървъри
+ unavailable_content_description:
+ domain: Сървър
+ reason: Причина
+ rejecting_media: 'Мултимедийните файлове от тези сървъри няма да бъдат обработени или съхранени и няма да бъдат показани миниатюри, което ще изисква ръчно щракване върху оригиналния файл:'
+ rejecting_media_title: Филтрирана мултимедия
+ silenced: 'Публикациите от тези сървъри ще бъдат скрити в обществени емисии и разговори и няма да се генерират известия от взаимодействията на потребителите им, освен ако не ги следвате:'
+ silenced_title: Заглушени сървъри
+ suspended: 'Никакви данни от тези сървъри няма да бъдат обработвани, съхранявани или обменяни, което прави невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри:'
+ suspended_title: Спрени сървъри
+ user_count_after:
+ one: потребител
+ other: потребители
user_count_before: Дом на
+ what_is_mastodon: Какво е Mastodon?
accounts:
+ choices_html: 'Избори на %{name}:'
+ endorsements_hint: Можете да подкрепите хората, които следите, от уеб интерфейса и те ще се покажат тук.
+ featured_tags_hint: Можете да представите конкретни хаштагове, които ще се показват тук.
follow: Последвай
+ followers:
+ one: Последовател
+ other: Последователи
following: Следва
+ joined: Присъединил се на %{date}
+ last_active: последна дейност
+ link_verified_on: Собствеността върху тази връзка е проверена на %{date}
+ media: Мултимедия
+ moved_html: "%{name} се премести в %{new_profile_link}:"
+ network_hidden: Тази информация не е налична
+ never_active: Никога
nothing_here: Тук няма никого!
people_followed_by: Хора, които %{name} следва
people_who_follow: Хора, които следват %{name}
+ pin_errors:
+ following: Трябва вече да следвате човека, когото искате да подкрепите
+ posts:
+ one: Публикация
+ other: Публикации
+ posts_tab_heading: Публикации
+ posts_with_replies: Публикации и отговори
+ roles:
+ admin: Админ
+ bot: Бот
+ group: Група
+ moderator: Мод
+ unavailable: Профилът не е наличен
unfollow: Не следвай
+ admin:
+ account_actions:
+ action: Изпълняване на действие
+ account_moderation_notes:
+ create: Оставяне на бележка
+ created_msg: Бележката за модерация е създадена успешно!
+ delete: Изтриване
+ accounts:
+ add_email_domain_block: Блокиране на имейл домейн
+ approve: Одобряване
+ approve_all: Одобряване на всички
+ are_you_sure: Сигурни ли сте?
+ avatar: Аватар
+ by_domain: Домейн
+ change_email:
+ changed_msg: Имейлът на акаунта беше успешно променен!
+ current_email: Текущ имейл
+ label: Промяна на имейл
+ new_email: Нов имейл
+ submit: Промяна на имейл
+ title: Промяна на имейл за %{username}
+ confirm: Потвърждаване
+ confirmed: Потвърдено
+ confirming: Потвърждаване
+ delete: Изтриване на данни
+ deleted: Изтрито
+ demote: Понижаване
+ destroyed_msg: Данните на %{username} вече са на опашка за незабавно изтриване
+ disable: Замразяване
+ disable_two_factor_authentication: Изключване на 2FA
+ disabled: Замразено
+ display_name: Показвано име
+ domain: Домейн
+ edit: Редакция
+ email: Имейл
+ email_status: Състояние на имейл
+ enable: Размразяване
+ enabled: Включено
+ follows: Последвания
+ header: Заглавна част
+ inbox_url: Входящ URL
+ invite_request_text: Причини за присъединяване
+ invited_by: Покана от
+ ip: IP
+ joined: Присъединено
+ location:
+ all: Всичко
+ local: Локално
+ remote: Дистанционно
+ title: Местоположение
+ login_status: Състояние на вход
+ media_attachments: Прикачена мултимедия
+ moderation:
+ active: Активно
+ all: Всичко
+ pending: Чакащо
+ silenced: Заглушено
+ suspended: Спряно
+ title: Модерация
+ moderation_notes: Модераторни бележки
+ most_recent_activity: Последна дейност
+ most_recent_ip: Последен IP
+ no_account_selected: Нито един акаунт не е променен, тъй като нито един не е избран
+ no_limits_imposed: Няма наложени ограничения
+ not_subscribed: Без абонамент
+ pending: Изчаква преглед
+ perform_full_suspension: Спиране
+ promote: Повишаване
+ protocol: Протокол
+ public: Публично
+ push_subscription_expires: PuSH абонаментът изтича
+ redownload: Опресняване на профил
+ reject: Отхвърляне
+ reject_all: Отхвърляне на всичко
+ rejected_msg: Успешно отхвърлена заявка за регистрация на %{username}
+ remove_avatar: Премахване на аватар
+ remove_header: Премахване на заглавна част
+ unsubscribe: Отписване
+ username: Потребителско име
+ warn: Предупреждение
+ web: Уеб
+ action_logs:
+ action_types:
+ confirm_user: Потвърждаване на потребител
+ create_account_warning: Създаване на предупреждение
+ create_announcement: Създаване на оповестяване
+ create_custom_emoji: Създаване на персонализирано емоджи
+ create_ip_block: Създаване на IP правило
+ demote_user: Понижаване на потребител
+ destroy_announcement: Изтриване на оповестяване
+ destroy_custom_emoji: Изтриване на персонализирано емоджи
+ destroy_status: Изтриване на статус
+ disable_2fa_user: Деактивиране на 2FA
+ disable_custom_emoji: Деактивиране на персонализирано емоджи
+ disable_user: Деактивиране на потребител
+ enable_custom_emoji: Активиране на персонализирано емоджи
+ enable_user: Активиране на потребител
+ promote_user: Повишаване на потребител
+ remove_avatar_user: Премахване на аватар
+ reopen_report: Повторно отваряне на доклад
+ reset_password_user: Нулиране на парола
application_mailer:
settings: 'Промяна на предпочитанията за e-mail: %{link}'
view: 'Преглед:'
@@ -132,5 +298,4 @@ bg:
two_factor_authentication:
disable: Деактивирай
users:
- invalid_email: E-mail адресът е невалиден
invalid_otp_token: Невалиден код
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index 0cf936d68..922a081e8 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -21,9 +21,7 @@ bn:
federation_hint_html: "%{instance}তে একটা নিবন্ধন থাকলে আপনি যেকোনো মাস্টাডন বা এধরণের অন্যান্য সার্ভারের মানুষের সাথে যুক্ত হতে পারবেন ।"
get_apps: মোবাইল এপ্প একটা ব্যবহার করতে পারেন
hosted_on: এই মাস্টাডনটি আছে %{domain} এ
- instance_actor_flash: 'এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত।
-
-'
+ instance_actor_flash: "এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত। \n"
learn_more: বিস্তারিত জানুন
privacy_policy: গোপনীয়তা নীতি
see_whats_happening: কী কী হচ্ছে দেখুন
@@ -77,7 +75,6 @@ bn:
other: লেখাগুলো
posts_tab_heading: লেখাগুলো
posts_with_replies: লেখা এবং মতামত
- reserved_username: নামটি সংরক্ষিত
roles:
admin: পরিচালক
bot: রোবট
@@ -234,17 +231,6 @@ bn:
update_announcement: ঘোষণা আপডেট করুন
update_custom_emoji: স্বনির্ধারিত ইমোজি আপডেট করুন
update_status: স্থিতি আপডেট করুন
- actions:
- assigned_to_self_report: "%{name} তাদের জন্য %{target} রিপোর্ট অর্পণ করেছিলেন"
- change_email_user: "%{name} %{target} ব্যবহারকারীর ইমেল ঠিকানা পরিবর্তন করেছেন"
- confirm_user: "%{name} %{target} ব্যবহারকারীর ইমেল ঠিকানা নিশ্চিত করেছেন"
- create_account_warning: "%{name} %{target} একটি সতর্কতা প্রেরণ করেছেন"
- create_announcement: "%{name} একটি নতুন ঘোষণা তৈরি করেছেন %{target}"
- create_custom_emoji: "%{name} নতুন ইমোজি আপলোড করেছেন %{target}"
- create_domain_allow: "%{name} ডোমেন %{target} এর সঙ্গে ফেডারেশন অনুমোদিত করেছেন"
- create_domain_block: "%{name} ডোমেন %{target} কে অবরুদ্ধ করেছেন"
- create_email_domain_block: "%{name} ই-মেইল ডোমেন %{target} কে অবরুদ্ধ করেছেন"
- demote_user: "%{name} ব্যবহারকারী %{target} কে হীনপদস্থ করেছেন"
custom_emojis:
destroyed_msg: ইমোজো সফলভাবে ধ্বংস হয়েছে!
disable: অক্ষম
@@ -279,7 +265,6 @@ bn:
feature_profile_directory: প্রোফাইল ডিরেক্টরি
feature_registrations: নিবন্ধনগুলি
feature_relay: ফেডারেশন রিলে
- feature_spam_check: বিরোধী স্প্যাম
feature_timeline_preview: পূর্বদর্শন সময়রেখা
features: বৈশিষ্ট্যগুলি
hidden_service: লুকানো সেবা সহ ফেডারেশন
diff --git a/config/locales/br.yml b/config/locales/br.yml
index 451bbade8..465049e9d 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -3,7 +3,6 @@ br:
about:
about_this: Diàr-benn
active_count_after: oberiant
- api: API
apps: Arloadoù pellgomz
apps_platforms: Ober get Mastodoñ àr iOS, Android ha savennoù arall
contact: Darempred
@@ -36,7 +35,6 @@ br:
other: Heulier·ez
two: Heulier·ez
following: O heuliañ
- media: Media
never_active: Birviken
posts:
few: Toud
@@ -50,7 +48,6 @@ br:
admin: Merour
bot: Robot
group: Strollad
- moderator: Mod
unavailable: Profil dihegerz
unfollow: Diheuliañ
admin:
@@ -70,7 +67,6 @@ br:
enabled: Gweredekaet
followers: Heulier·ezed·ien
header: Talbenn
- ip: IP
location:
local: Lec'hel
remote: A-bell
@@ -94,7 +90,6 @@ br:
suspended: Astalet
title: Kontoù
username: Anv
- web: Web
action_logs:
action_types:
destroy_status: Dilemel ar statud
@@ -176,8 +171,6 @@ br:
batch:
delete: Dilemel
deleted: Dilamet
- media:
- title: Media
no_media: Media ebet
tags:
name: Ger-klik
@@ -185,15 +178,11 @@ br:
warning_presets:
add_new: Ouzhpenniñ unan nevez
delete: Dilemel
- application_mailer:
- salutation: "%{name},"
auth:
change_password: Ger-tremen
delete_account: Dilemel ar gont
login: Mont tre
logout: Digennaskañ
- providers:
- saml: SAML
reset_password: Adderaouekaat ar ger-tremen
security: Diogelroez
setup:
@@ -217,11 +206,8 @@ br:
about_x_years: "%{count}b"
almost_x_years: "%{count}b"
half_a_minute: Diouzhtu
- less_than_x_minutes: "%{count}m"
less_than_x_seconds: Diouzhtu
over_x_years: "%{count}b"
- x_days: "%{count}d"
- x_minutes: "%{count}m"
x_months: "%{count}miz"
x_seconds: "%{count}eil"
deletes:
@@ -242,7 +228,6 @@ br:
archive_takeout:
date: Deiziad
size: Ment
- csv: CSV
lists: Listennoù
featured_tags:
add_new: Ouzhpenniñ unan nevez
@@ -278,53 +263,19 @@ br:
title: Heulier nevez
mention:
action: Respont
- number:
- human:
- decimal_units:
- format: "%n%u"
otp_authentication:
enable: Gweredekaat
setup: Kefluniañ
- pagination:
- truncate: "…"
relationships:
followers: Heulier·ezed·ien
following: O heuliañ
sessions:
browser: Merdeer
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Merdeer dianav
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
description: "%{browser} war %{platform}"
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
- mac: macOS
other: savenn dianav
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
settings:
account: Kont
account_settings: Arventennoù ar gont
@@ -342,14 +293,7 @@ br:
one: "%{count} skeudenn"
other: "%{count} skeudenn"
two: "%{count} skeudenn"
- video:
- few: "%{count} video"
- many: "%{count} video"
- one: "%{count} video"
- other: "%{count} video"
- two: "%{count} video"
show_more: Diskouez muioc'h
- title: '%{name}: "%{quote}"'
visibilities:
public: Publik
stream_entries:
@@ -360,7 +304,6 @@ br:
time:
formats:
default: "%He%M, %d %b %Y"
- month: "%b %Y"
two_factor_authentication:
add: Ouzhpennañ
disable: Diweredekaat
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index ee3c554b4..d8717ccf9 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -26,6 +26,8 @@ ca:
S'utilitza per a propòsits de federació i no ha de ser bloquejat si no voleu bloquejar tota la instància, en aquest cas hauríeu d'utilitzar un bloqueig de domini.
learn_more: Més informació
privacy_policy: Política de privadesa
+ rules: Normes del servidor
+ rules_html: 'El de sota és un resum de les normes que has de seguir si vols tenir un compte en aquest servidor de Mastodon:'
see_whats_happening: Mira què està passant
server_stats: 'Estadístiques del servidor:'
source_code: Codi font
@@ -78,7 +80,6 @@ ca:
other: Tuts
posts_tab_heading: Tuts
posts_with_replies: Tuts i respostes
- reserved_username: El nom d'usuari està reservat
roles:
admin: Administrador
bot: Bot
@@ -229,6 +230,7 @@ ca:
create_domain_block: Crea un bloqueig de domini
create_email_domain_block: Crea un bloqueig de domini d'adreça de correu
create_ip_block: Crear regla IP
+ create_unavailable_domain: Crea un domini no disponible
demote_user: Degrada l'usuari
destroy_announcement: Esborra l'anunci
destroy_custom_emoji: Esborra l'emoji personalitzat
@@ -237,6 +239,7 @@ ca:
destroy_email_domain_block: Esborra el bloqueig de domini de l'adreça de correu
destroy_ip_block: Eliminar regla IP
destroy_status: Esborra el tut
+ destroy_unavailable_domain: Esborra domini no disponible
disable_2fa_user: Desactiva 2FA
disable_custom_emoji: Desactiva l'emoji personalitzat
disable_user: Deshabilita l'usuari
@@ -260,46 +263,48 @@ ca:
update_domain_block: Actualitza el Bloqueig de Domini
update_status: Actualitza l'estat
actions:
- assigned_to_self_report: "%{name} han assignat l'informe %{target} a ells mateixos"
- change_email_user: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}"
- confirm_user: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}"
- create_account_warning: "%{name} ha enviat un avís a %{target}"
- create_announcement: "%{name} ha creat un nou anunci %{target}"
- create_custom_emoji: "%{name} ha pujat un nou emoji %{target}"
- create_domain_allow: "%{name} ha afegit a la llista blanca el domini %{target}"
- create_domain_block: "%{name} ha blocat el domini %{target}"
- create_email_domain_block: "%{name} ha afegit a la llista negra el domini del correu electrònic %{target}"
- create_ip_block: "%{name} ha creat una regla IP per a %{target}"
- demote_user: "%{name} ha degradat l'usuari %{target}"
- destroy_announcement: "%{name} ha eliminat l'anunci %{target}"
- destroy_custom_emoji: "%{name} ha destruït l'emoji %{target}"
- destroy_domain_allow: "%{name} ha eliminat el domini %{target} de la llista blanca"
- destroy_domain_block: "%{name} ha desblocat el domini %{target}"
- destroy_email_domain_block: "%{name} ha afegit a la llista negra el domini de correu electrònic %{target}"
- destroy_ip_block: "%{name} ha esborrat la regla IP per a %{target}"
- destroy_status: "%{name} eliminat l'estat per %{target}"
- disable_2fa_user: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}"
- disable_custom_emoji: "%{name} ha desactivat l'emoji %{target}"
- disable_user: "%{name} ha desactivat l'accés per a l'usuari %{target}"
- enable_custom_emoji: "%{name} ha activat l'emoji %{target}"
- enable_user: "%{name} ha activat l'accés per a l'usuari %{target}"
- memorialize_account: "%{name} ha convertit el compte %{target} en una pàgina de memorial"
- promote_user: "%{name} ha promogut l'usuari %{target}"
- remove_avatar_user: "%{name} ha eliminat l'avatar de %{target}"
- reopen_report: "%{name} ha reobert l'informe %{target}"
- reset_password_user: "%{name} ha restablert la contrasenya de l'usuari %{target}"
- resolve_report: "%{name} ha resolt l'informe %{target}"
- sensitive_account: "%{name} ha marcat els mèdia de %{target} com a sensibles"
- silence_account: "%{name} ha silenciat el compte de %{target}"
- suspend_account: "%{name} ha suspès el compte de %{target}"
- unassigned_report: "%{name} ha des-assignat l'informe %{target}"
- unsensitive_account: "%{name} ha desmarcat els mèdia de %{target} com a sensibles"
- unsilence_account: "%{name} ha silenciat el compte de %{target}"
- unsuspend_account: "%{name} ha llevat la suspensió del compte de %{target}"
- update_announcement: "%{name} ha actualitzat l'anunci %{target}"
- update_custom_emoji: "%{name} ha actualitzat l'emoji %{target}"
- update_domain_block: "%{name} ha actualitzat el bloqueig de domini per %{target}"
- update_status: "%{name} estat actualitzat per %{target}"
+ assigned_to_self_report_html: "%{name} han assignat l'informe %{target} a ells mateixos"
+ change_email_user_html: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}"
+ confirm_user_html: "%{name} ha confirmat l'adreça de correu electrònic de l'usuari %{target}"
+ create_account_warning_html: "%{name} ha enviat un avís a %{target}"
+ create_announcement_html: "%{name} ha creat un nou anunci %{target}"
+ create_custom_emoji_html: "%{name} ha pujat un emoji nou %{target}"
+ create_domain_allow_html: "%{name} ha permès la federació amb el domini %{target}"
+ create_domain_block_html: "%{name} ha bloquejat el domini %{target}"
+ create_email_domain_block_html: "%{name} ha bloquejat el domini de correu electrònic %{target}"
+ create_ip_block_html: "%{name} ha creat una regla per a l'IP %{target}"
+ create_unavailable_domain_html: "%{name} ha aturat el lliurament al domini %{target}"
+ demote_user_html: "%{name} ha degradat l'usuari %{target}"
+ destroy_announcement_html: "%{name} ha eliminat l'anunci %{target}"
+ destroy_custom_emoji_html: "%{name} ha destruït l'emoji %{target}"
+ destroy_domain_allow_html: "%{name} no permet la federació amb el domini %{target}"
+ destroy_domain_block_html: "%{name} ha desbloquejat el domini %{target}"
+ destroy_email_domain_block_html: "%{name} ha desbloquejat el domini de correu electrònic %{target}"
+ destroy_ip_block_html: "%{name} ha esborrat la regla per a l'IP %{target}"
+ destroy_status_html: "%{name} ha eliminat el tut de %{target}"
+ destroy_unavailable_domain_html: "%{name} ha représ el lliurament delivery al domini %{target}"
+ disable_2fa_user_html: "%{name} ha desactivat el requisit de dos factors per a l'usuari %{target}"
+ disable_custom_emoji_html: "%{name} ha desactivat l'emoji %{target}"
+ disable_user_html: "%{name} ha desactivat l'accés del usuari %{target}"
+ enable_custom_emoji_html: "%{name} ha activat l'emoji %{target}"
+ enable_user_html: "%{name} ha activat l'accés del usuari %{target}"
+ memorialize_account_html: "%{name} ha convertit el compte %{target} en una pàgina de memorial"
+ promote_user_html: "%{name} ha promogut l'usuari %{target}"
+ remove_avatar_user_html: "%{name} ha eliminat l'avatar de %{target}"
+ reopen_report_html: "%{name} ha reobert l'informe %{target}"
+ reset_password_user_html: "%{name} ha restablert la contrasenya de l'usuari %{target}"
+ resolve_report_html: "%{name} ha resolt l'informe %{target}"
+ sensitive_account_html: "%{name} ha marcat els mèdia de %{target} com a sensibles"
+ silence_account_html: "%{name} ha silenciat el compte de %{target}"
+ suspend_account_html: "%{name} ha suspès el compte de %{target}"
+ unassigned_report_html: "%{name} ha des-assignat l'informe %{target}"
+ unsensitive_account_html: "%{name} ha desmarcat com sensibles els mèdia de %{target}"
+ unsilence_account_html: "%{name} ha llevat el silenci del compte %{target}"
+ unsuspend_account_html: "%{name} ha llevat la suspensió del compte de %{target}"
+ update_announcement_html: "%{name} ha actualitzat l'anunci %{target}"
+ update_custom_emoji_html: "%{name} ha actualitzat l'emoji %{target}"
+ update_domain_block_html: "%{name} ha actualitzat el bloqueig de domini per a %{target}"
+ update_status_html: "%{name} ha actualitzat l'estat de %{target}"
deleted_status: "(tut esborrat)"
empty: No s’han trobat registres.
filter_by_action: Filtra per acció
@@ -314,10 +319,12 @@ ca:
new:
create: Crea un anunci
title: Nou anunci
+ publish: Publica-ho
published_msg: L’anunci s’ha publicat amb èxit!
scheduled_for: Programat per a %{time}
scheduled_msg: Anunci programat per a ser publicat!
title: Anuncis
+ unpublish: Despublicar
unpublished_msg: L’anunci s’ha despublicat amb èxit!
updated_msg: L'anunci s'ha actualitzat correctament!
custom_emojis:
@@ -362,7 +369,6 @@ ca:
feature_profile_directory: Directori de perfils
feature_registrations: Registres
feature_relay: Relay de la Federació
- feature_spam_check: Anti-spam
feature_timeline_preview: Vista prèvia de línia de temps
features: Característiques
hidden_service: Federació amb serveis ocults
@@ -440,9 +446,31 @@ ca:
create: Afegeix un domini
title: Nova adreça de correu en la llista negra
title: Llista negra de correus electrònics
+ follow_recommendations:
+ description_html: "Seguir les recomanacions ajuda als nous usuaris a trobar ràpidament contingut interessant. Quan un usuari no ha interactuat prou amb d'altres com per a formar a qui seguir personalment, aquests comptes li seran recomanats. Es recalculen a diari a partir d'una barreja de comptes amb els compromisos recents més alts i el nombre més alt de seguidors locals per a un idioma determinat."
+ language: Per llenguatge
+ status: Estat
+ suppress: Suprimeix les recomanacions de seguiment
+ suppressed: Suprimit
+ title: Seguir les recomanacions
+ unsuppress: Restaurar les recomanacions de seguiment
instances:
+ back_to_all: Totes
+ back_to_limited: Limitades
+ back_to_warning: Avís
by_domain: Domini
+ delivery:
+ all: Totes
+ clear: Neteja els errors de lliurament
+ restart: Reinicia el lliurament
+ stop: Atura el lliurament
+ title: Lliurament
+ unavailable: No disponible
+ unavailable_message: El lliurament no està disponible
+ warning: Avís
delivery_available: El lliurament està disponible
+ delivery_error_days: Dies de fallades de lliurament
+ delivery_error_hint: Si el lliurament no és possible per %{count} dies, serà automàticament marcat com a no lliurable.
empty: No s'han trobat dominis.
known_accounts:
one: "%{count} compte conegut"
@@ -542,6 +570,13 @@ ca:
unassign: Treu l'assignació
unresolved: No resolt
updated_at: Actualitzat
+ rules:
+ add_new: Afegir norma
+ delete: Suprimeix
+ description_html: Tot i que molts diuen que han llegit les normes i estan d'acord amb els termes del servei, normalment no les llegeixen fins que surgeix un problema. Fes que sigui més fàcil veure les normes del teu servidor d'una ullada proporcionant-les en una llista de punts. Intenta mantenir les normes individuals curtes i senzilles però sense dividir-les en massa parts separades.
+ edit: Edita la norma
+ empty: Encara no s'han definit les normes del servidor.
+ title: Normes del servidor
settings:
activity_api_enabled:
desc_html: Nombre de tuts publicats localment, usuaris actius i registres nous en períodes setmanals
@@ -565,9 +600,6 @@ ca:
users: Per als usuaris locals en línia
domain_blocks_rationale:
title: Mostra el raonament
- enable_bootstrap_timeline_accounts:
- desc_html: Fer que els nous usuaris segueixin automàticament als comptes configurats i la seva línia de temps no arrenqui buida
- title: Activa els seguiments per defecte per els usuaris nous
hero:
desc_html: Es mostra en pàgina frontal. Recomanat al menys 600x100px. Si no es configura es mostrarà el del servidor
title: Imatge d’heroi
@@ -621,9 +653,6 @@ ca:
desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML
title: Termes del servei personalitzats
site_title: Nom del servidor
- spam_check_enabled:
- desc_html: Mastodon pot informar automàticament de comptes que envien repetits missatges no sol·licitats. Pot haver-hi falsos positius.
- title: Anti-spam
thumbnail:
desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px
title: Miniatura del servidor
@@ -654,13 +683,18 @@ ca:
no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat
title: Estats del compte
with_media: Amb contingut multimèdia
+ system_checks:
+ database_schema_check:
+ message_html: Hi ha pendents migracions de la base de dades. Si us plau executa-les per a assegurar que l'aplicació es comporta com s'espera
+ rules_check:
+ action: Gestiona les normes del servidor
+ message_html: No has definit cap norma del servidor.
+ sidekiq_process_check:
+ message_html: No hi ha cap procés de Sidekiq executant-se per a la cua (o cues) de %{value}. Si us plau revisa la teva configuració de Sidekiq
tags:
accounts_today: Usos únics actuals
accounts_week: Usos únics d'aquesta setmana
breakdown: Desglossament de l’ús actual per origen
- context: Context
- directory: En el directori
- in_directory: "%{count} en el directori"
last_active: Darrer actiu
most_popular: Més populars
most_recent: Més recent
@@ -677,6 +711,7 @@ ca:
add_new: Afegeix-ne un de nou
delete: Esborra
edit_preset: Edita l'avís predeterminat
+ empty: Encara no has definit cap preavís.
title: Gestiona les configuracions predefinides dels avisos
admin_mailer:
new_pending_account:
@@ -1038,10 +1073,14 @@ ca:
body: "%{name} t'ha mencionat en:"
subject: "%{name} t'ha mencionat"
title: Menció nova
+ poll:
+ subject: Ha finalitzat l'enquesta de %{name}
reblog:
body: "%{name} ha impulsat el teu estat:"
subject: "%{name} ha impulsat el teu estat"
title: Nou impuls
+ status:
+ subject: "%{name} ha publicat"
notifications:
email_events: Esdeveniments per a notificacions per correu electrònic
email_events_hint: 'Selecciona els esdeveniments per als quals vols rebre notificacions:'
@@ -1190,8 +1229,6 @@ ca:
relationships: Seguits i seguidors
two_factor_authentication: Autenticació de dos factors
webauthn_authentication: Claus de seguretat
- spam_check:
- spam_detected: Aquest és un informe automàtic. S'ha detectat spam.
statuses:
attached:
audio:
@@ -1234,6 +1271,7 @@ ca:
sign_in_to_participate: Inicia la sessió per participar a la conversa
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Directe
private: Només seguidors
private_long: Mostra només als seguidors
public: Públic
@@ -1402,11 +1440,8 @@ ca:
tips: Consells
title: Benvingut a bord, %{name}!
users:
- blocked_email_provider: Aquest proveïdor de correu electrònic no és permés
follow_limit_reached: No pots seguir més de %{limit} persones
generic_access_help_html: Problemes accedint al teu compte? Pots contactar amb %{email} per a demanar assistència
- invalid_email: L'adreça de correu no és correcta
- invalid_email_mx: Sembla que l’adreça de correu electrònic no existeix
invalid_otp_token: El codi de dos factors no és correcte
invalid_sign_in_token: Codi de seguretat invàlid
otp_lost_help_html: Si has perdut l'accés a tots dos pots contactar per %{email}
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 29ba79688..56a8aef17 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -1,7 +1,7 @@
---
co:
about:
- about_hashtag_html: Quessi sò statuti pubblichi taggati cù #%{hashtag}. Pudete interagisce cù elli sì voi avete un contu in qualche parte di u fediverse.
+ about_hashtag_html: Quessi sò statuti pubblichi taggati cù #%{hashtag}. Pudete interagisce cù elli sì voi avete un contu in qualche parte di u fediversu.
about_mastodon_html: 'A rete suciale di u futuru: micca pubblicità, micca surveglianza, cuncezzione etica, è dicentralizazione! Firmate in cuntrollu di i vostri dati cù Mastodon!'
about_this: À prupositu
active_count_after: attivi
@@ -26,6 +26,8 @@ co:
Hè utilizatu da a federazione è ùn deve micca esse bluccatu eccettu s'e voi vulete bluccà tuttu u servore, in quellu casu duvereste utilizà un blucchime di duminiu.
learn_more: Amparà di più
privacy_policy: Pulitica di vita privata
+ rules: Regule di u servore
+ rules_html: 'Eccu un riassuntu di e regule da siguità s''e voi vulete creà un contu nant''à quessu servore di Mastodon:'
see_whats_happening: Vede cio chì si passa
server_stats: 'Statistiche di u servore:'
source_code: Codice di fonte
@@ -78,7 +80,6 @@ co:
other: Statuti
posts_tab_heading: Statuti
posts_with_replies: Statuti è risposte
- reserved_username: Stu cugnome hè riservatu
roles:
admin: Amministratore
bot: Bot
@@ -229,6 +230,7 @@ co:
create_domain_block: Creà Blucchime di Duminiu
create_email_domain_block: Creà Blucchime di Duminiu E-mail
create_ip_block: Creà regula IP
+ create_unavailable_domain: Creà duminiu micca dispunibule
demote_user: Ritrugadà Utilizatore
destroy_announcement: Toglie Annunziu
destroy_custom_emoji: Toglie Emoji Persunalizata
@@ -237,6 +239,7 @@ co:
destroy_email_domain_block: Toglie blucchime di duminiu e-mail
destroy_ip_block: Toglie regula IP
destroy_status: Toglie u statutu
+ destroy_unavailable_domain: Toglie duminiu micca dispunibule
disable_2fa_user: Disattivà l’identificazione à 2 fattori
disable_custom_emoji: Disattivà Emoji Persunalizata
disable_user: Disattivà Utilizatore
@@ -260,46 +263,48 @@ co:
update_domain_block: Mette à Ghjornu Blucchime di Duminiu
update_status: Cambià Statutu
actions:
- assigned_to_self_report: "%{name} s’hè assignatu u signalamentu %{target}"
- change_email_user: "%{name} hà cambiatu l’indirizzu e-mail di %{target}"
- confirm_user: "%{name} hà cunfirmatu l’indirizzu e-mail di %{target}"
- create_account_warning: "%{name} hà mandatu un'avertimentu à %{target}"
- create_announcement: "%{name} hà creatu u novu annunziu %{target}"
- create_custom_emoji: "%{name} hà caricatu una nov’emoji %{target}"
- create_domain_allow: "%{name} hà messu u duminiu %{target} nant’a lista bianca"
- create_domain_block: "%{name} hà bluccatu u duminiu %{target}"
- create_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista nera"
- create_ip_block: "%{name} hà creatu a regula IP %{target}"
- demote_user: "%{name} hà ritrugradatu l’utilizatore %{target}"
- destroy_announcement: "%{name} hà sguassatu u novu annunziu %{target}"
- destroy_custom_emoji: "%{name} hà sguassatu l'emoji %{target}"
- destroy_domain_allow: "%{name} hà sguassatu u duminiu %{target} da a lista bianca"
- destroy_domain_block: "%{name} hà sbluccatu u duminiu %{target}"
- destroy_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista bianca"
- destroy_ip_block: "%{name} hà toltu a regula IP %{target}"
- destroy_status: "%{name} hà toltu u statutu di %{target}"
- disable_2fa_user: "%{name} hà disattivatu l’identificazione à dui fattori per %{target}"
- disable_custom_emoji: "%{name} hà disattivatu l’emoji %{target}"
- disable_user: "%{name} hà disattivatu a cunnessione per %{target}"
- enable_custom_emoji: "%{name} hà attivatu l’emoji %{target}"
- enable_user: "%{name} hà attivatu a cunnessione per %{target}"
- memorialize_account: "%{name} hà trasfurmatu u contu di %{target} in una pagina mimuriale"
- promote_user: "%{name} hà prumossu %{target}"
- remove_avatar_user: "%{name} hà toltu u ritrattu di %{target}"
- reopen_report: "%{name} hà riapertu u signalamentu %{target}"
- reset_password_user: "%{name} hà riinizializatu a chjave d’accessu di %{target}"
- resolve_report: "%{name} hà chjosu u signalamentu %{target}"
- sensitive_account: "%{name} hà marcatu i media di %{target} cum'è sensibili"
- silence_account: "%{name} hà limitatu u contu di %{target}"
- suspend_account: "%{name} hà suspesu u contu di %{target}"
- unassigned_report: "%{name} hà disassignatu u signalamentu %{target}"
- unsensitive_account: "%{name} hà sguassatu a marcatura di i media di %{target} cum'è sensibili"
- unsilence_account: "%{name} hà fattu che u contu di %{target} ùn hè più limitatu"
- unsuspend_account: "%{name} hà fattu che u contu di %{target} ùn hè più suspesu"
- update_announcement: "%{name} hà cambiatu u novu annunziu %{target}"
- update_custom_emoji: "%{name} hà messu à ghjornu l’emoji %{target}"
- update_domain_block: "%{name} hà messu à ghjornu u blucchime di duminiu per %{target}"
- update_status: "%{name} hà cambiatu u statutu di %{target}"
+ assigned_to_self_report_html: "%{name} s’hè assignatu u signalamentu %{target}"
+ change_email_user_html: "%{name} hà cambiatu l’indirizzu e-mail di %{target}"
+ confirm_user_html: "%{name} hà cunfirmatu l’indirizzu e-mail di %{target}"
+ create_account_warning_html: "%{name} hà mandatu un'avertimentu à %{target}"
+ create_announcement_html: "%{name} hà creatu u novu annunziu %{target}"
+ create_custom_emoji_html: "%{name} hà caricatu una nov’emoji %{target}"
+ create_domain_allow_html: "%{name} hà messu u duminiu %{target} nant’a lista bianca"
+ create_domain_block_html: "%{name} hà bluccatu u duminiu %{target}"
+ create_email_domain_block_html: "%{name} hà messu u duminiu e-mail %{target} nant’a lista nera"
+ create_ip_block_html: "%{name} hà creatu a regula IP %{target}"
+ create_unavailable_domain_html: "%{name} hà firmatu a distribuzione à u duminiu %{target}"
+ demote_user_html: "%{name} hà ritrugradatu l’utilizatore %{target}"
+ destroy_announcement_html: "%{name} hà sguassatu u novu annunziu %{target}"
+ destroy_custom_emoji_html: "%{name} hà sguassatu l'emoji %{target}"
+ destroy_domain_allow_html: "%{name} hà sguassatu u duminiu %{target} da a lista bianca"
+ destroy_domain_block_html: "%{name} hà sbluccatu u duminiu %{target}"
+ destroy_email_domain_block_html: "%{name} hà messu u duminiu e-mail %{target} nant’a lista bianca"
+ destroy_ip_block_html: "%{name} hà toltu a regula IP %{target}"
+ destroy_status_html: "%{name} hà toltu u statutu di %{target}"
+ destroy_unavailable_domain_html: "%{name} hà riprincipiatu a distribuzione à u duminiu %{target}"
+ disable_2fa_user_html: "%{name} hà disattivatu l’identificazione à dui fattori per %{target}"
+ disable_custom_emoji_html: "%{name} hà disattivatu l’emoji %{target}"
+ disable_user_html: "%{name} hà disattivatu a cunnessione per %{target}"
+ enable_custom_emoji_html: "%{name} hà attivatu l’emoji %{target}"
+ enable_user_html: "%{name} hà attivatu a cunnessione per %{target}"
+ memorialize_account_html: "%{name} hà trasfurmatu u contu di %{target} in una pagina mimuriale"
+ promote_user_html: "%{name} hà prumossu %{target}"
+ remove_avatar_user_html: "%{name} hà toltu u ritrattu di %{target}"
+ reopen_report_html: "%{name} hà riapertu u signalamentu %{target}"
+ reset_password_user_html: "%{name} hà riinizializatu a chjave d’accessu di %{target}"
+ resolve_report_html: "%{name} hà chjosu u signalamentu %{target}"
+ sensitive_account_html: "%{name} hà marcatu i media di %{target} cum'è sensibili"
+ silence_account_html: "%{name} hà limitatu u contu di %{target}"
+ suspend_account_html: "%{name} hà suspesu u contu di %{target}"
+ unassigned_report_html: "%{name} hà disassignatu u signalamentu %{target}"
+ unsensitive_account_html: "%{name} hà sguassatu a marcatura di i media di %{target} cum'è sensibili"
+ unsilence_account_html: "%{name} hà fattu che u contu di %{target} ùn hè più limitatu"
+ unsuspend_account_html: "%{name} hà fattu che u contu di %{target} ùn hè più suspesu"
+ update_announcement_html: "%{name} hà cambiatu u novu annunziu %{target}"
+ update_custom_emoji_html: "%{name} hà messu à ghjornu l’emoji %{target}"
+ update_domain_block_html: "%{name} hà messu à ghjornu u blucchime di duminiu per %{target}"
+ update_status_html: "%{name} hà cambiatu u statutu di %{target}"
deleted_status: "(statutu sguassatu)"
empty: Nunda trovu.
filter_by_action: Filtrà da azzione
@@ -314,10 +319,12 @@ co:
new:
create: Creà un'annunziu
title: Novu annunziu
+ publish: Pubblicà
published_msg: Annunziu pubblicatu!
scheduled_for: Prugrammatu per %{time}
scheduled_msg: Annunziu prugrammatu per pubblicazione!
title: Annunzii
+ unpublish: Annullà a pubblicazione
unpublished_msg: Annunziu piattatu!
updated_msg: Annunziu mudificatu!
custom_emojis:
@@ -362,7 +369,6 @@ co:
feature_profile_directory: Annuariu di i prufili
feature_registrations: Arregistramenti
feature_relay: Ripetitore di federazione
- feature_spam_check: Anti-spam
feature_timeline_preview: Vista di a linea pubblica
features: Funziunalità
hidden_service: Federazione cù servizii piattati
@@ -402,6 +408,8 @@ co:
silence: Silenzà
suspend: Suspende
title: Novu blucchime di duminiu
+ obfuscate: Uscurà u nome di duminiu
+ obfuscate_hint: Uscurà in parte u nome di duminiu indè a lista s'ella hè attivata l'affissera di a lista di limitazione di duminiu
private_comment: Cummentariu privatu
private_comment_hint: Cummentariu nant'à a limitazione di stu duminiu per l'usu internu di i muderatori.
public_comment: Cummentariu pubblicu
@@ -438,9 +446,33 @@ co:
create: Creà un blucchime
title: Nova iscrizzione nant’a lista nera e-mail
title: Lista nera e-mail
+ follow_recommendations:
+ language: Per a lingua
+ status: Statutu
+ suppress: Piattà a ricumandazione d'abbunamentu
+ suppressed: Piattate
+ title: Ricumandazione d'abbunamentu
+ unsuppress: Riattivà a ricumandazione d'abbunamentu
instances:
+ back_to_all: Tutti
+ back_to_limited: Limitate
+ back_to_warning: Avertimenti
by_domain: Duminiu
- delivery_available: Rimessa dispunibule
+ delivery:
+ all: Tutti
+ clear: Sguassà l'errori di distribuzione
+ restart: Riprincipià a distribuzione
+ stop: Firmà a distribuzione
+ title: Distribuzione
+ unavailable: Indispunibule
+ unavailable_message: Distribuzione micca dispunibule
+ warning: Avertimentu
+ warning_message:
+ one: Errore di distribuzione per %{count} ghjornu
+ other: Errore di distribuzione per %{count} ghjorni
+ delivery_available: Distribuzione dispunibule
+ delivery_error_days: Ghjorni d'errori di a distribuzione
+ delivery_error_hint: S'ellu ùn si pò distribuì à u duminiu per %{count} ghjorni, sarà autumaticamente marcatu cum'è indistribuibile.
empty: Mancun duminiu trovu.
known_accounts:
one: "%{count} contu cunnisciutu"
@@ -487,7 +519,7 @@ co:
relays:
add_new: Aghjunghje un ripetitore
delete: Sguassà
- description_html: Un ripetitore di federazione ghjè un servore intermediariu chì manda statuti pubblichi trà l'istanze abbunate. Pò aiutà l'istanze chjuche è mezane à scuprì u cuntinutu di u fediverse senza chì l'utilizatori appianu bisognu di seguità tutti i conti di l'altri servori.
+ description_html: Un ripetitore di federazione ghjè un servore intermediariu chì manda statuti pubblichi trà l'istanze abbunate. Pò aiutà l'istanze chjuche è mezane à scuprì u cuntinutu di u fediversu senza chì l'utilizatori appianu bisognu di seguità tutti i conti di l'altri servori.
disable: Disattivà
disabled: Disattivatu
enable: Attivà
@@ -540,6 +572,11 @@ co:
unassign: Disassignà
unresolved: Micca sciolti
updated_at: Messi à ghjornu
+ rules:
+ add_new: Aghjunghje regula
+ delete: Sguassà
+ edit: Mudificà regula
+ title: Regule di u servore
settings:
activity_api_enabled:
desc_html: Numeri di statuti creati quì, utilizatori attivi, è arregistramenti novi tutte e settimane
@@ -563,8 +600,6 @@ co:
users: À l'utilizatori lucali cunnettati
domain_blocks_rationale:
title: Vede ragiò
- enable_bootstrap_timeline_accounts:
- title: Attivà l'abbunamenti predefiniti per l'utilizatori novi
hero:
desc_html: Affissatu nant’a pagina d’accolta. Ricumandemu almenu 600x100px. S’ellu ùn hè micca definiti, a vignetta di u servore sarà usata
title: Ritrattu di cuprendula
@@ -572,7 +607,7 @@ co:
desc_html: Affissata nant'à parechje pagine. Almenu 293x205px ricumandatu. S'ella hè lasciata viota, a mascotta predefinita sarà utilizata
title: Ritrattu di a mascotta
peers_api_enabled:
- desc_html: Indirizzi web stu servore hà vistu indè u fediverse
+ desc_html: Indirizzi web stu servore hà vistu indè u fediversu
title: Pubblicà a lista di servori cunnisciuti
preview_sensitive_media:
desc_html: E priviste di i ligami nant'à l'altri siti mustreranu una vignetta ancu s'ellu hè marcatu cum'è sensibile u media
@@ -591,6 +626,7 @@ co:
disabled: Nimu
title: Auturizà l’invitazione da
require_invite_text:
+ desc_html: Quandu l'arregistramenti necessitanu un'apprubazione manuale, fà chì u testu "Perchè vulete ghjunghje?" sia ubligatoriu invece d'esse facultativu
title: Richiede chì i novi utilizatori empiinu una dumanda d'invitazione
registrations_mode:
modes:
@@ -617,9 +653,6 @@ co:
desc_html: Quì pudete scrive e vostre regule di cunfidenzialità, cundizione d’usu o altre menzione legale. Pudete fà usu di marchi HTML
title: Termini persunalizati
site_title: Nome di u servore
- spam_check_enabled:
- desc_html: Mastodon pò autosilenzà è autosignalà conti, per esempiu ditettendu quelli chì mandanu missaghji micca sullicitati à ripetizione. Ci ponu esse falzi pusitivi.
- title: Anti-spam
thumbnail:
desc_html: Utilizatu per viste cù OpenGraph è l’API. Ricumandemu 1200x630px
title: Vignetta di u servore
@@ -650,13 +683,14 @@ co:
no_status_selected: I statuti ùn sò micca stati mudificati perchè manc'unu era selezziunatu
title: Statuti di u contu
with_media: Cù media
+ system_checks:
+ rules_check:
+ action: Amministrà e regule di u servore
+ message_html: Ùn avete micca ancu difinitu di regula per u servore.
tags:
accounts_today: Usi unichi oghji
accounts_week: Usi unichi sta settimana
breakdown: Ditagli di l'usu d'oghji per origine
- context: Cuntestu
- directory: In l'annuariu
- in_directory: "%{count} in l'annuariu"
last_active: Ultima attività
most_popular: Più pupulari
most_recent: Più ricente
@@ -920,6 +954,8 @@ co:
status: Statutu di a verificazione
view_proof: Vede a prova
imports:
+ errors:
+ over_rows_processing_limit: cuntene più di %{count} filari
modes:
merge: Unisce
merge_long: Cunservà i dati esistenti è aghjunghje i novi
@@ -1032,10 +1068,14 @@ co:
body: "%{name} v’hà mintuvatu·a indè :"
subject: "%{name} v’hà mintuvatu·a"
title: Nova menzione
+ poll:
+ subject: Un scandagliu da %{name} hè finitu
reblog:
body: 'U vostru statutu hè statu spartutu da %{name}:'
subject: "%{name} hà spartutu u vostru statutu"
title: Nova spartera
+ status:
+ subject: "%{name} hà appena pubblicatu"
notifications:
email_events: Avvenimenti da nutificà cù l'e-mail
email_events_hint: 'Selezziunate l''avvenimenti per quelli vulete riceve nutificazione:'
@@ -1184,8 +1224,6 @@ co:
relationships: Abbunamenti è abbunati
two_factor_authentication: Identificazione à dui fattori
webauthn_authentication: Chjave di sicurità
- spam_check:
- spam_detected: Quessu ghjè un riportu automaticu. Un spam hè statu ditettatu.
statuses:
attached:
audio:
@@ -1228,6 +1266,7 @@ co:
sign_in_to_participate: Cunnettatevi per participà à a cunversazione
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Direttu
private: Solu per l’abbunati
private_long: Mustrà solu à l’abbunati
public: Pubblicu
@@ -1396,11 +1435,8 @@ co:
tips: Cunsiglii
title: Benvenutu·a, %{name}!
users:
- blocked_email_provider: Stu serviziu e-mail ùn hè micca auturizatu
follow_limit_reached: Ùn pidete seguità più di %{limit} conti
generic_access_help_html: Prublemi d'accessu à u vostru contu? Pudete cuntattà %{email} per ottene aiutu
- invalid_email: L’indirizzu e-mail ùn hè currettu
- invalid_email_mx: L'indirizzu e-mail ùn pare micca esiste
invalid_otp_token: U codice d’identificazione ùn hè currettu
invalid_sign_in_token: Codice di sicurità micca validu
otp_lost_help_html: S’è voi avete persu i dui, pudete cuntattà %{email}
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index e54e63517..c1d44a8be 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1,7 +1,7 @@
---
cs:
about:
- about_hashtag_html: Tohle jsou veřejné tooty označené hashtagem #%{hashtag}. Pokud máte účet kdekoliv ve fedivesmíru, můžete s nimi interagovat.
+ about_hashtag_html: Tohle jsou veřejné příspěvky označené hashtagem #%{hashtag}. Pokud máte účet kdekoliv ve fedivesmíru, můžete s nimi interagovat.
about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!'
about_this: O tomto serveru
active_count_after: aktivních
@@ -26,18 +26,20 @@ cs:
Používá se pro účely federace a nesmí být blokován, pokud nechcete blokovat celý server. V takovém případě použijte blokaci domény.
learn_more: Zjistit více
privacy_policy: Zásady ochrany osobních údajů
+ rules: Pravidla serveru
+ rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:'
see_whats_happening: Podívejte se, co se děje
server_stats: 'Statistika serveru:'
source_code: Zdrojový kód
status_count_after:
- few: tooty
- many: tootů
- one: toot
- other: tootů
+ few: příspěvky
+ many: příspěvků
+ one: příspěvek
+ other: příspěvků
status_count_before: Kteří napsali
tagline: Sledujte své přátele a objevujte nové
terms: Podmínky používání
- unavailable_content: Nedostupný obsah
+ unavailable_content: Moderované servery
unavailable_content_description:
domain: Server
reason: Důvod
@@ -56,7 +58,7 @@ cs:
user_count_before: Domov
what_is_mastodon: Co je Mastodon?
accounts:
- choices_html: 'Volby uživatele %{name}:'
+ choices_html: 'Volby %{name}:'
endorsements_hint: Z webového rozhraní můžete podpořit lidi, které sledujete. Ti se poté zobrazí zde.
featured_tags_hint: Můžete vybrat konkrétní hashtagy, které se zobrazí zde.
follow: Sledovat
@@ -66,26 +68,26 @@ cs:
one: Sledující
other: Sledujících
following: Sledovaní
+ instance_actor_flash: Tento účet je virtuální aktér, který představuje server samotný, nikoliv jednotlivého uživatele. Používá se pro účely federace a neměl by být pozastaven.
joined: Uživatelem od %{date}
last_active: naposledy aktivní
link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date}
media: Média
- moved_html: "%{name} se přesunul/a na %{new_profile_link}:"
+ moved_html: "%{name} se přesunul a na %{new_profile_link}:"
network_hidden: Tato informace není k dispozici
never_active: Nikdy
nothing_here: Nic tu není!
people_followed_by: Lidé, které sleduje %{name}
- people_who_follow: Lidé, kteří sledují uživatele %{name}
+ people_who_follow: Lidé, kteří sledují %{name}
pin_errors:
following: Osobu, kterou chcete podpořit, už musíte sledovat
posts:
- few: Tooty
- many: Tootů
- one: Toot
- other: Tootů
- posts_tab_heading: Tooty
- posts_with_replies: Tooty a odpovědi
- reserved_username: Toto uživatelské jméno je rezervováno
+ few: Příspěvky
+ many: Příspěvků
+ one: Příspěvek
+ other: Příspěvků
+ posts_tab_heading: Příspěvky
+ posts_with_replies: Příspěvky a odpovědi
roles:
admin: Administrátor
bot: Robot
@@ -103,9 +105,10 @@ cs:
delete: Smazat
destroyed_msg: Moderátorská poznámka byla úspěšně zničena!
accounts:
- add_email_domain_block: Blokovat e-maily na této doméně
+ add_email_domain_block: Blokovat e-mailovou doménu
approve: Schválit
approve_all: Schválit vše
+ approved_msg: Žádost o registraci uživatele %{username} úspěšně schválena
are_you_sure: Opravdu?
avatar: Avatar
by_domain: Doména
@@ -119,25 +122,29 @@ cs:
confirm: Potvrdit
confirmed: Potvrzeno
confirming: Potvrzuji
+ delete: Smazat data
deleted: Smazáno
demote: Degradovat
- disable: Zablokovat
+ destroyed_msg: Data účtu %{username} jsou nyní ve frontě k okamžitému smazání
+ disable: Zmrazit
disable_two_factor_authentication: Vypnout 2FA
- disabled: Blokováno
+ disabled: Zmrazen
display_name: Zobrazované jméno
domain: Doména
edit: Upravit
email: E-mail
email_status: Stav e-mailu
- enable: Povolit
+ enable: Rozmrazit
enabled: Povoleno
+ enabled_msg: Účet %{username} byl úspěšně rozmrazen
followers: Sledující
follows: Sleduje
header: Záhlaví
inbox_url: URL příchozí schránky
- invited_by: Pozván/a uživatelem
+ invite_request_text: Důvody založení
+ invited_by: Pozván uživatelem
ip: IP adresa
- joined: Uživatelem od
+ joined: Uživatel založen
location:
all: Všechny
local: Místní
@@ -146,6 +153,8 @@ cs:
login_status: Stav přihlášení
media_attachments: Mediální přílohy
memorialize: Změnit na „in memoriam“
+ memorialized: In memoriam
+ memorialized_msg: Účet %{username} úspěšně změněn na „in memoriam“
moderation:
active: Aktivní
all: Vše
@@ -166,10 +175,14 @@ cs:
public: Veřejný
push_subscription_expires: Odebírání PuSH expiruje
redownload: Obnovit profil
+ redownloaded_msg: Profil účtu %{username} byl úspěšně obnoven ze zdroje
reject: Zamítnout
reject_all: Zamítnout vše
+ rejected_msg: Žádost o registraci uživatele %{username} úspěšně zamítnuta
remove_avatar: Odstranit avatar
remove_header: Odstranit záhlaví
+ removed_avatar_msg: Úspěšně odstraněn avatar uživatele %{username}
+ removed_header_msg: Úspěšně odstraněn obrázek záhlaví uživatele %{username}
resend_confirmation:
already_confirmed: Tento uživatel je již potvrzen
send: Znovu odeslat potvrzovací e-mail
@@ -184,27 +197,35 @@ cs:
staff: Člen personálu
user: Uživatel
search: Hledat
- search_same_email_domain: Ostatní uživatelé s e-mailem na stejné doméně
+ search_same_email_domain: Ostatní uživatelé se stejnou e-mailovou doménou
search_same_ip: Další uživatelé se stejnou IP adresou
+ sensitive: Citlivý
+ sensitized: označen jako citlivý
shared_inbox_url: URL sdílené příchozí schránky
show:
created_reports: Vytvořená hlášení
targeted_reports: Nahlášeni ostatními
- silence: Ztišit
- silenced: Uživatel ztišen
- statuses: Tooty
+ silence: Omezit
+ silenced: Omezen
+ statuses: Příspěvky
subscribe: Odebírat
suspended: Uživatel pozastaven
+ suspension_irreversible: Data tohoto účtu byla nevratně smazána. Účet můžete obnovit, aby byl použitelný, ale nebudou obnovena žádná jeho dřívější data.
+ suspension_reversible_hint_html: Účet byl pozastaven a jeho data budou kompletně smazána %{date}. Do té doby může být tento účet kompletně obnoven do původního stavu. Chcete-li smazat všechna data účtu ihned, můžete tak učinit níže.
time_in_queue: Čeká ve frontě %{time}
title: Účty
unconfirmed_email: Nepotvrzený e-mail
+ undo_sensitized: Vrátit zpět citlivost
undo_silenced: Zrušit ztišení
undo_suspension: Zrušit pozastavení
+ unsilenced_msg: Omezení účtu %{username} úspěšně odstraněno
unsubscribe: Přestat odebírat
+ unsuspended_msg: Úspěšně obnoven účet %{username}
username: Uživatelské jméno
+ view_domain: Zobrazit souhrn domény
warn: Varovat
web: Web
- whitelisted: Na bílé listině
+ whitelisted: Povoleno federovat
action_logs:
action_types:
assigned_to_self_report: Přiřadit hlášení
@@ -215,75 +236,90 @@ cs:
create_custom_emoji: Vytvořit vlastní emoji
create_domain_allow: Povolit doménu
create_domain_block: Zablokovat doménu
- create_email_domain_block: Zablokovat e-maily na doméně
+ create_email_domain_block: Zablokovat e-mailovou doménu
+ create_ip_block: Vytvořit IP pravidlo
+ create_unavailable_domain: Vytvořit nedostupnou doménu
demote_user: Snížit roli uživatele
destroy_announcement: Odstranit oznámení
destroy_custom_emoji: Odstranit vlastní emoji
destroy_domain_allow: Odstranit povolenou doménu
destroy_domain_block: Odstranit blokování domény
- destroy_email_domain_block: Odstranit blokování e-mailů na doméně
- destroy_status: Odstranit stav
+ destroy_email_domain_block: Smazat blokaci e-mailové domény
+ destroy_ip_block: Smazat IP pravidlo
+ destroy_status: Odstranit Příspěvek
+ destroy_unavailable_domain: Smazat nedostupnou doménu
disable_2fa_user: Vypnout 2FA
disable_custom_emoji: Zakázat vlastní emoji
disable_user: Deaktivovat uživatele
enable_custom_emoji: Povolit vlastní emoji
enable_user: Povolit uživatele
+ memorialize_account: Změna na „in memoriam“
promote_user: Povýšit uživatele
remove_avatar_user: Odstranit avatar
reopen_report: Znovu otevřít hlášení
reset_password_user: Obnovit heslo
resolve_report: Označit hlášení jako vyřešené
+ sensitive_account: Označit média ve vašem účtu jako citlivá
silence_account: Ztišit účet
suspend_account: Pozastavit účet
unassigned_report: Zrušit přiřazení hlášení
+ unsensitive_account: Zrušit označení médií ve vašem účtu jako citlivých
unsilence_account: Zrušit ztišení účtu
unsuspend_account: Zrušit pozastavení účtu
update_announcement: Aktualizovat oznámení
update_custom_emoji: Aktualizovat vlastní emoji
- update_status: Aktualizovat stav
+ update_domain_block: Změnit blokaci domény
+ update_status: Aktualizovat Příspěvek
actions:
- assigned_to_self_report: Uživatel %{name} si přidělil hlášení %{target}
- change_email_user: Uživatel %{name} změnil e-mailovou adresu uživatele %{target}
- confirm_user: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target}
- create_account_warning: Uživatel %{name} poslal varování uživateli %{target}
- create_announcement: Uživatel %{name} vytvořil nové oznámení %{target}
- create_custom_emoji: Uživatel %{name} nahrál nové emoji %{target}
- create_domain_allow: Uživatel %{name} přidal doménu %{target} na bílou listinu
- create_domain_block: Uživatel %{name} zablokoval doménu %{target}
- create_email_domain_block: Uživatel %{name} přidal e-mailovou doménu %{target} na černou listinu
- demote_user: Uživatel %{name} degradoval uživatele %{target}
- destroy_announcement: Uživatel %{name} odstranil oznámení %{target}
- destroy_custom_emoji: Uživatel %{name} zničil emoji %{target}
- destroy_domain_allow: Uživatel %{name} odebral doménu %{target} z bílé listiny
- destroy_domain_block: Uživatel %{name} odblokoval doménu %{target}
- destroy_email_domain_block: Uživatel %{name} odebral e-mailovou doménu %{target} z černé listiny
- destroy_status: Uživatel %{name} odstranil toot uživatele %{target}
- disable_2fa_user: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target}
- disable_custom_emoji: Uživatel %{name} zakázal emoji %{target}
- disable_user: Uživatel %{name} zakázal přihlašování pro uživatele %{target}
- enable_custom_emoji: Uživatel %{name} povolil emoji %{target}
- enable_user: Uživatel %{name} povolil přihlašování pro uživatele %{target}
- memorialize_account: Uživatel %{name} změnil účet %{target} na „in memoriam“ stránku
- promote_user: Uživatel %{name} povýšil uživatele %{target}
- remove_avatar_user: Uživatel %{name} odstranil avatar uživatele %{target}
- reopen_report: Uživatel %{name} znovu otevřel hlášení %{target}
- reset_password_user: Uživatel %{name} obnovil heslo uživatele %{target}
- resolve_report: Uživatel %{name} vyřešil hlášení %{target}
- silence_account: Uživatel %{name} ztišil uživatele %{target}
- suspend_account: Uživatel %{name} pozastavil účet uživatele %{target}
- unassigned_report: Uživatel %{name} odebral hlášení %{target}
- unsilence_account: Uživatel %{name} zrušil ztišení uživatele %{target}
- unsuspend_account: Uživatel %{name} zrušil pozastavení účtu uživatele %{target}
- update_announcement: Uživatel %{name} aktualizoval oznámení %{target}
- update_custom_emoji: Uživatel %{name} aktualizoval emoji %{target}
- update_status: Uživatel %{name} aktualizoval toot uživatele %{target}
- deleted_status: "(smazaný toot)"
+ assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target}
+ change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target}
+ confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target}
+ create_account_warning_html: Uživatel %{name} poslal varování uživateli %{target}
+ create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target}
+ create_custom_emoji_html: Uživatel %{name} nahrál nové emoji %{target}
+ create_domain_allow_html: Uživatel %{name} povolil federaci s doménou %{target}
+ create_domain_block_html: Uživatel %{name} zablokoval doménu %{target}
+ create_email_domain_block_html: Uživatel %{name} zablokoval e-mailovou doménu %{target}
+ create_ip_block_html: "%{name} vytvořil pravidlo pro IP %{target}"
+ create_unavailable_domain_html: "%{name} zastavil doručování na doménu %{target}"
+ demote_user_html: Uživatel %{name} degradoval uživatele %{target}
+ destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target}
+ destroy_custom_emoji_html: Uživatel %{name} zničil emoji %{target}
+ destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target}
+ destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target}
+ destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target}
+ destroy_ip_block_html: "%{name} odstranil pravidlo pro IP %{target}"
+ destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target}
+ destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}"
+ disable_2fa_user_html: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target}
+ disable_custom_emoji_html: Uživatel %{name} zakázal emoji %{target}
+ disable_user_html: Uživatel %{name} zakázal přihlašování pro uživatele %{target}
+ enable_custom_emoji_html: Uživatel %{name} povolil emoji %{target}
+ enable_user_html: Uživatel %{name} povolil přihlašování pro uživatele %{target}
+ memorialize_account_html: Uživatel %{name} změnil účet %{target} na „in memoriam“ stránku
+ promote_user_html: Uživatel %{name} povýšil uživatele %{target}
+ remove_avatar_user_html: Uživatel %{name} odstranil avatar uživatele %{target}
+ reopen_report_html: Uživatel %{name} znovu otevřel hlášení %{target}
+ reset_password_user_html: Uživatel %{name} obnovil heslo uživatele %{target}
+ resolve_report_html: Uživatel %{name} vyřešil hlášení %{target}
+ sensitive_account_html: "%{name} označil média účtu %{target} jako citlivá"
+ silence_account_html: Uživatel %{name} ztišil uživatele %{target}
+ suspend_account_html: Uživatel %{name} pozastavil účet uživatele %{target}
+ unassigned_report_html: Uživatel %{name} odebral hlášení %{target}
+ unsensitive_account_html: "%{name} zrušil označení médií účtu %{target} jako citlivých"
+ unsilence_account_html: Uživatel %{name} zrušil ztišení uživatele %{target}
+ unsuspend_account_html: Uživatel %{name} zrušil pozastavení účtu uživatele %{target}
+ update_announcement_html: Uživatel %{name} aktualizoval oznámení %{target}
+ update_custom_emoji_html: Uživatel %{name} aktualizoval emoji %{target}
+ update_domain_block_html: "%{name} aktualizoval blokaci domény %{target}"
+ update_status_html: Uživatel %{name} aktualizoval příspěvek uživatele %{target}
+ deleted_status: "(smazaný příspěvek)"
empty: Nebyly nalezeny žádné záznamy.
filter_by_action: Filtrovat podle akce
filter_by_user: Filtrovat podle uživatele
title: Auditovací protokol
announcements:
- destroyed_msg: Oznámení bylo úspěšně odstraněno
+ destroyed_msg: Oznámení bylo úspěšně odstraněno!
edit:
title: Upravit oznámení
empty: Nebyla nalezena žádná oznámení.
@@ -291,12 +327,14 @@ cs:
new:
create: Vytvořit oznámení
title: Nové oznámení
- published_msg: Oznámení bylo úspěšně zveřejněno
+ publish: Zveřejnit
+ published_msg: Oznámení bylo úspěšně zveřejněno!
scheduled_for: Naplánováno na %{time}
- scheduled_msg: Zveřejnění oznámení bylo naplánováno
+ scheduled_msg: Zveřejnění oznámení bylo naplánováno!
title: Oznámení
- unpublished_msg: Zveřejněné oznámení bylo skryto
- updated_msg: Oznámení bylo úspěšně aktualizováno
+ unpublish: Skrýt
+ unpublished_msg: Zveřejněné oznámení bylo úspěšně skryto!
+ updated_msg: Oznámení bylo úspěšně aktualizováno!
custom_emojis:
assign_category: Přiřadit kategorii
by_domain: Doména
@@ -335,11 +373,10 @@ cs:
backlog: nevyřízené úlohy
config: Konfigurace
feature_deletions: Smazání účtů
- feature_invites: Odkazy pozvánek
+ feature_invites: Zvací odkazy
feature_profile_directory: Adresář profilů
feature_registrations: Registrace
feature_relay: Federovací most
- feature_spam_check: Antispam
feature_timeline_preview: Náhled časové osy
features: Vlastnosti
hidden_service: Federace se skrytými službami
@@ -353,16 +390,16 @@ cs:
space: Využití prostoru
title: Přehled
total_users: uživatelů celkem
- trends: Trendy
+ trends: Populární hashtagy
week_interactions: interakcí tento týden
week_users_active: aktivních tento týden
week_users_new: uživatelů tento týden
- whitelist_mode: Režim bílé listiny
+ whitelist_mode: Režim omezené federace
domain_allows:
- add_new: Přidat doménu na bílou listinu
- created_msg: Doména byla úspěšně přidána na bílou listinu
- destroyed_msg: Doména byla odstraněna z bílé listiny
- undo: Odstranit z bílé listiny
+ add_new: Povolit federaci s doménou
+ created_msg: S doménou byla úspěšně povolena federace
+ destroyed_msg: S doménou byla zakázána federace
+ undo: Zakázat federaci s doménou
domain_blocks:
add_new: Přidat novou blokaci domény
created_msg: Blokace domény se právě vyřizuje
@@ -379,6 +416,8 @@ cs:
silence: Ztišit
suspend: Pozastavit
title: Nová blokace domény
+ obfuscate: Obfuskovat doménu
+ obfuscate_hint: Částečně zkreslit název domény v seznamu, pokud je povoleno zveřejnění seznamu omezených domén
private_comment: Soukromý komentář
private_comment_hint: Komentář o tomto omezení domény pro vnitřní použití moderátory.
public_comment: Veřejný komentář
@@ -407,19 +446,47 @@ cs:
view: Zobrazit blokaci domény
email_domain_blocks:
add_new: Přidat
- created_msg: E-mailová doména úspěšně přidána na černou listinu
+ created_msg: E-mailová doména úspěšně zablokována
delete: Smazat
- destroyed_msg: E-mailová doména úspěšně odstraněna z černé listiny
+ destroyed_msg: E-mailová doména úspěšně odblokována
domain: Doména
- empty: Na černé listině aktuálně nejsou žádné e-mailové domény.
+ empty: Žádné e-mailové domény nejsou aktuálně blokovány.
from_html: z domény %{domain}
new:
create: Přidat doménu
- title: Nová položka pro černou listinu e-mailů
- title: Černá listina e-mailů
+ title: Blokovat novou e-mailovou doménu
+ title: Blokované e-mailové domény
+ follow_recommendations:
+ description_html: "Doporučená sledování pomáhají novým uživatelům rychle najít zajímavý obsah. Pokud uživatel neinteragoval s ostatními natolik, aby mu byla vytvořena doporučená sledování na míru, jsou použity tyto účty. Jsou přepočítávány na denní bázi ze směsi účtů s největším nedávným zapojením a nejvyšším počtem místních sledovatelů pro daný jazyk."
+ language: Pro jazyk
+ status: Stav
+ suppress: Potlačit doporučení sledování
+ suppressed: Potlačeno
+ title: Doporučená sledování
+ unsuppress: Obnovit doporučení sledování
instances:
+ back_to_all: Vše
+ back_to_limited: Omezený
+ back_to_warning: Varování
by_domain: Doména
+ delivery:
+ all: Vše
+ clear: Vymazat chyby doručení
+ restart: Restartovat doručování
+ stop: Zastavit doručování
+ title: Doručování
+ unavailable: Nedostupný
+ unavailable_message: Doručování nedostupné
+ warning: Varování
+ warning_message:
+ few: Doručení selhává %{count} dny
+ many: Doručení selhává %{count} dnů
+ one: Doručení selhává %{count} den
+ other: Doručení selhává %{count} dnů
delivery_available: Doručení je k dispozici
+ delivery_error_days: Dny chybného doručování
+ delivery_error_hint: Není-li možné doručení po dobu %{count} dnů, bude automaticky označen za nedoručitelný.
+ empty: Nebyly nalezeny žádné domény.
known_accounts:
few: "%{count} známé účty"
many: "%{count} známých účtů"
@@ -427,7 +494,7 @@ cs:
other: "%{count} známých účtů"
moderation:
all: Všechny
- limited: Omezené
+ limited: Omezený
title: Moderování
private_comment: Soukromý komentář
public_comment: Veřejný komentář
@@ -445,6 +512,21 @@ cs:
expired: Vypršené
title: Filtrovat
title: Pozvánky
+ ip_blocks:
+ add_new: Vytvořit pravidlo
+ created_msg: Nové IP pravidlo úspěšně přidáno
+ delete: Smazat
+ expires_in:
+ '1209600': 2 týdny
+ '15778476': 6 měsíců
+ '2629746': 1 měsíc
+ '31556952': 1 rok
+ '86400': 1 den
+ '94670856': 3 roky
+ new:
+ title: Vytvořit nové IP pravidlo
+ no_ip_block_selected: Nebyla změněna žádná IP pravidla, protože nebylo žádné zaškrtnuto
+ title: IP pravidla
pending_accounts:
title: Čekající účty (%{count})
relationships:
@@ -452,17 +534,17 @@ cs:
relays:
add_new: Přidat nový most
delete: Smazat
- description_html: "Federovací most je přechodový server, který vyměňuje velká množství veřejných tootů mezi servery, které je z něj odebírají a publikují na něj. Může pomoci malým a středně velkým serverům objevovat obsah z fedivesmíru, což by jinak vyžadovalo, aby místní uživatelé manuálně sledovali jiné lidi na vzdálených serverech."
+ description_html: "Federovací most je zprostředkující server, který vyměňuje velké objemy veřejných příspěvků mezi servery, které je z něj odebírají a publikují na něj. Může pomoci malým a středně velkým serverům objevovat obsah z fedivesmíru, což by jinak vyžadovalo, aby místní uživatelé ručně začali sledovat jiné lidi na vzdálených serverech."
disable: Zakázat
disabled: Zakázáno
enable: Povolit
- enable_hint: Po zapnutí začne váš server odebírat všechny veřejné tooty z tohoto mostu a odesílat na něj své vlastní veřejné tooty.
+ enable_hint: Po zapnutí začne váš server odebírat všechny veřejné příspěvky z tohoto mostu a odesílat na něj své vlastní veřejné příspěvky.
enabled: Povoleno
inbox_url: URL mostu
pending: Čeká na souhlas mostu
save_and_enable: Uložit a povolit
setup: Nastavit připojení k mostu
- signatures_not_enabled: Dokud je povolen zabezpečený režim nebo režim bílé listiny, nebudou mosty správně fungovat
+ signatures_not_enabled: Dokud je povolen zabezpečený režim nebo režim omezené federace, nebudou mosty fungovat správně
status: Stav
title: Mosty
report_notes:
@@ -488,6 +570,8 @@ cs:
comment:
none: Žádné
created_at: Nahlášené
+ forwarded: Přeposláno
+ forwarded_to: Přeposláno na %{domain}
mark_as_resolved: Označit jako vyřešené
mark_as_unresolved: Označit jako nevyřešené
notes:
@@ -507,13 +591,20 @@ cs:
unassign: Odebrat
unresolved: Nevyřešeno
updated_at: Aktualizováno
+ rules:
+ add_new: Přidat pravidlo
+ delete: Smazat
+ description_html: Přestože většina tvrdí, že četla a souhlasí s podmínkami služby, lidé je obvykle nepročtou dříve, než vznikne problém. Usnadněte prohlížení pravidel vašeho serveru jejich poskytnutím v odrážkovém seznamu. Snažte se držet jednotlivá pravidla krátká a jednoduchá, ale zároveň je nerozdělovat do mnoha samostatných položek.
+ edit: Upravit pravidlo
+ empty: Zatím nebyla definována žádná pravidla serveru.
+ title: Pravidla serveru
settings:
activity_api_enabled:
- desc_html: Počty lokálně publikovaných tootů, aktivních uživatelů a nových registrací, v týdenních intervalech
- title: Publikovat hromadné statistiky o uživatelské aktivitě
+ desc_html: Počty lokálně publikovaných příspěvků, aktivních uživatelů a nových registrací, v týdenních intervalech
+ title: Publikovat hromadné statistiky o uživatelské aktivitě v API
bootstrap_timeline_accounts:
- desc_html: Je-li uživatelských jmen více, oddělte je čárkami. Lze zadat pouze místní a odemčené účty. Je-li seznam prázdný, jsou výchozí hodnotou všichni místní administrátoři.
- title: Výchozí sledovaní pro nové uživatele
+ desc_html: Více uživatelských jmen oddělte čárkou. U těchto účtů bude zaručeno, že budou vždy zobrazeny mezi doporučenými sledováními
+ title: Doporučit tyto účty novým uživatelům
contact_information:
email: Pracovní e-mail
username: Uživatelské jméno pro kontaktování
@@ -530,8 +621,6 @@ cs:
users: Přihlášeným místním uživatelům
domain_blocks_rationale:
title: Zobrazit odůvodnění
- enable_bootstrap_timeline_accounts:
- title: Povolit výchozí sledování pro nové uživatele
hero:
desc_html: Zobrazuje se na hlavní stránce. Doporučujeme rozlišení alespoň 600x100 px. Pokud toto není nastaveno, bude zobrazena miniatura serveru
title: Hlavní obrázek
@@ -540,7 +629,7 @@ cs:
title: Obrázek maskota
peers_api_enabled:
desc_html: Domény, na které tento server narazil ve fedivesmíru
- title: Zveřejnit seznam objevených serverů
+ title: Zveřejnit seznam objevených serverů v API
preview_sensitive_media:
desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá
title: Zobrazovat v náhledech OpenGraph i citlivá média
@@ -557,6 +646,9 @@ cs:
min_invite_role:
disabled: Nikdo
title: Povolit pozvánky od
+ require_invite_text:
+ desc_html: Když jsou registrace schvalovány ručně, udělat odpověď na otázku "Proč se chcete připojit?" povinnou
+ title: Požadovat od nových uživatelů zdůvodnění založení
registrations_mode:
modes:
approved: Pro registraci je vyžadováno schválení
@@ -564,8 +656,8 @@ cs:
open: Kdokoliv se může registrovat
title: Režim registrací
show_known_fediverse_at_about_page:
- desc_html: Je-li tohle vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah
- title: Zobrazit na nepřihlášené stránce časové osy federovaný obsah
+ desc_html: Je-li vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah
+ title: Zahrnout federovaný obsah na neautentizované stránce veřejné časové osy
show_staff_badge:
desc_html: Zobrazit na stránce uživatele odznak člena personálu
title: Zobrazit odznak personálu
@@ -582,9 +674,6 @@ cs:
desc_html: Můžete si napsat vlastní zásady ochrany osobních údajů, podmínky používání či jiné právní dokumenty. Můžete použít HTML značky
title: Vlastní podmínky používání
site_title: Název serveru
- spam_check_enabled:
- desc_html: Mastodon může automaticky nahlašovat účty, které opakovaně odesílají nevyžádané zprávy. Mohou se najít špatné shody.
- title: Antispamová automatizace
thumbnail:
desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučujeme rozlišení 1200x630px
title: Miniatura serveru
@@ -594,12 +683,13 @@ cs:
title: Nastavení stránky
trendable_by_default:
desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány
- title: Povolit zobrazení hashtagů v trendech i bez předchozího posouzení
+ title: Povolit zobrazení hashtagů mezi populárními i bez předchozího posouzení
trends:
- desc_html: Veřejně zobrazit populární hashtagy, které byly předtím schváleny
+ desc_html: Veřejně zobrazit dříve schválené hashtagy, které jsou zrovna populární
title: Populární hashtagy
site_uploads:
delete: Odstranit nahraný soubor
+ destroyed_msg: Upload stránky byl úspěšně smazán!
statuses:
back_to_account: Zpět na stránku účtu
batch:
@@ -611,24 +701,29 @@ cs:
media:
title: Média
no_media: Žádná média
- no_status_selected: Nebyly změněny žádné tooty, neboť žádné nebyly vybrány
- title: Tooty účtu
+ no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány
+ title: Příspěvky účtu
with_media: S médii
+ system_checks:
+ database_schema_check:
+ message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace
+ rules_check:
+ action: Spravovat pravidla serveru
+ message_html: Nedefinovali jste žádná pravidla serveru.
+ sidekiq_process_check:
+ message_html: Pro %{value} frontu/fronty neběží žádný Sidekiq proces. Zkontrolujte prosím svou Sidekiq konfiguraci
tags:
accounts_today: Dnešní jedinečná použití
accounts_week: Jedinečná použití tento týden
breakdown: Přehled dnešního používání podle zdroje
- context: Kontext
- directory: V adresáři
- in_directory: "%{count} v adresáři"
- last_active: Naposledy aktivní
+ last_active: Nedávno použité
most_popular: Nejpopulárnější
- most_recent: Nejnovější
+ most_recent: Nedávno vytvořené
name: Hashtag
review: Stav schválení
reviewed: Schválen
title: Hashtagy
- trending_right_now: Právě je trendy
+ trending_right_now: Populární právě teď
unique_uses_today: Dnes použilo %{count} uživatelů
unreviewed: Nezkontrolováno
updated_msg: Nastavení hashtagů bylo úspěšně aktualizováno
@@ -637,6 +732,7 @@ cs:
add_new: Přidat nové
delete: Smazat
edit_preset: Upravit předlohu pro varování
+ empty: Zatím jste nedefinovali žádné předlohy varování.
title: Spravovat předlohy pro varování
admin_mailer:
new_pending_account:
@@ -647,7 +743,7 @@ cs:
body_remote: Někdo z domény %{domain} nahlásil uživatele %{target}
subject: Nové hlášení pro %{instance} (#%{id})
new_trending_tag:
- body: 'Hashtag #%{name} je dnes populární, ale nebyl dříve schválen. Pokud to nedovolíte, nebude veřejně zobrazen. Pokud tento formulář uložíte jak je, už o něm opět neuslyšíte.'
+ body: 'Hashtag #%{name} je dnes populární, ale nebyl dříve schválen. Pokud to nedovolíte, nebude veřejně zobrazen. Nebo pouze uložte formulář tak, jak je, a už o něm neuslyšíte.'
subject: Nový hashtag ke schválení na %{instance} (#%{name})
aliases:
add_new: Vytvořit alias
@@ -667,14 +763,14 @@ cs:
guide_link: https://cs.crowdin.com/project/mastodon
guide_link_text: Každý může pomoci.
sensitive_content: Citlivý obsah
- toot_layout: Rozložení tootů
+ toot_layout: Rozložení příspěvků
application_mailer:
notification_preferences: Změnit předvolby e-mailů
salutation: "%{name},"
settings: 'Změnit předvolby e-mailů: %{link}'
view: 'Zobrazit:'
view_profile: Zobrazit profil
- view_status: Zobrazit toot
+ view_status: Zobrazit příspěvek
applications:
created: Aplikace úspěšně vytvořena
destroyed: Aplikace úspěšně smazána
@@ -695,8 +791,11 @@ cs:
prefix_sign_up: Registrujte se na Mastodonu již dnes!
suffix: S účtem budete moci sledovat lidi, psát příspěvky a vyměňovat si zprávy s uživateli z kteréhokoliv serveru Mastodon a dalších služeb!
didnt_get_confirmation: Neobdrželi jste pokyny pro potvrzení?
+ dont_have_your_security_key: Nemáte svůj bezpečnostní klíč?
forgot_password: Zapomněli jste heslo?
invalid_reset_password_token: Token pro obnovení hesla je buď neplatný, nebo vypršel. Vyžádejte si prosím nový.
+ link_to_otp: Zadat kód dvoufázového ověření z mobilu nebo záložní kód
+ link_to_webauth: Použít svůj bezpečnostní klíč
login: Přihlásit
logout: Odhlásit
migrate_account: Přesunout se na jiný účet
@@ -721,7 +820,9 @@ cs:
functional: Váš účet je zcela funkční.
pending: Vaše žádost čeká na schválení naším personálem. To může nějakou dobu trvat. Pokud bude váš požadavek schválen, obdržíte e-mail.
redirecting_to: Váš účet je neaktivní, protože je právě přesměrován na účet %{acct}.
+ too_fast: Formulář byl odeslán příliš rychle, zkuste to znovu.
trouble_logging_in: Problémy s přihlášením?
+ use_security_key: Použít bezpečnostní klíč
authorize_follow:
already_following: Tento účet již sledujete
already_requested: Tomuto účtu už jste žádost o sledování zaslali
@@ -733,7 +834,7 @@ cs:
close: Nebo můžete toto okno klidně zavřít.
return: Zobrazit profil uživatele
web: Přejít na web
- title: Sledovat uživatele %{acct}
+ title: Sledovat %{acct}
challenge:
confirm: Pokračovat
hint_html: "Tip: Po dobu jedné hodiny vás o heslo nebudeme znovu žádat."
@@ -745,7 +846,8 @@ cs:
invalid_signature: není platný podpis typu Ed25519
date:
formats:
- default: "%-d. %b %Y"
+ default: "%d. %b %Y"
+ with_month_name: "%d. %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count} hod"
@@ -805,15 +907,16 @@ cs:
archive_takeout:
date: Datum
download: Stáhnout váš archiv
- hint_html: Můžete si vyžádat archiv vašich tootů a nahraných médií. Exportovaná data budou ve formátu ActivityPub a budou čitelná kterýmkoliv kompatibilním softwarem. Archiv si můžete vyžádat každých 7 dní.
+ hint_html: Můžete si vyžádat archiv vašich příspěvků a nahraných médií. Exportovaná data budou ve formátu ActivityPub a budou čitelná kterýmkoliv kompatibilním softwarem. Archiv si můžete vyžádat každých 7 dní.
in_progress: Kompiluji váš archiv…
request: Vyžádat váš archiv
size: Velikost
blocks: Blokujete
+ bookmarks: Záložky
csv: CSV
domain_blocks: Blokování domén
lists: Seznamy
- mutes: Skryli jste
+ mutes: Skrýváte
storage: Paměť médií
featured_tags:
add_new: Přidat nový
@@ -823,7 +926,7 @@ cs:
filters:
contexts:
account: Profily
- home: Domovská časová osa
+ home: Domovská časová osa a seznamy
notifications: Oznámení
public: Veřejné časové osy
thread: Konverzace
@@ -842,7 +945,7 @@ cs:
developers: Vývojáři
more: Více…
resources: Zdroje
- trending_now: Aktuální trendy
+ trending_now: Právě populární
generic:
all: Všechny
changes_saved_msg: Změny byly úspěšně uloženy!
@@ -867,16 +970,20 @@ cs:
keybase:
invalid_token: Keybase tokeny jsou hashe podpisů a musí být dlouhé 66 hexadecimálních znaků
verification_failed: Keybase nerozpoznává tento token jako podpis uživatele %{kb_username} na Keybase. Zkuste to prosím znovu z Keybase.
- wrong_user: Nelze vytvořit důkaz pro uživatele %{proving}, zatímco jste přihlášeni jako %{current}. Přihlaste se jako %{proving} a zkuste to znovu.
- explanation_html: Zde můžete kryptograficky připojit vaše ostatní identity, například profil Keybase. To dovolí jiným lidem vám posílat šifrované zprávy a důvěřovat obsahu, který jim pošlete.
+ wrong_user: Nelze vytvořit důkaz pro %{proving}, zatímco jste přihlášeni jako %{current}. Přihlaste se jako %{proving} a zkuste to znovu.
+ explanation_html: Zde můžete kryptograficky propojit další své identity z jiných platforem, jako například Keybase. To umožňuje jiným lidem poslat vám šifrované zprávy na těchto platformách a důvěřovat, že obsah, který jim posíláte, pochází od vás.
i_am_html: Na %{service} jsem %{username}.
identity: Identita
inactive: Neaktivní
- publicize_checkbox: 'A tootnout tohle:'
+ publicize_checkbox: 'A odeslat tohle:'
publicize_toot: 'Je to dokázáno! Na %{service} jsem %{username}: %{url}'
+ remove: Odstranit důkaz z účtu
+ removed: Úspěšně odstraněn důkaz z účtu
status: Stav ověření
view_proof: Zobrazit důkaz
imports:
+ errors:
+ over_rows_processing_limit: obsahuje více než %{count} řádků
modes:
merge: Sloučit
merge_long: Ponechat existující záznamy a přidat nové
@@ -886,6 +993,7 @@ cs:
success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas
types:
blocking: Seznam blokovaných
+ bookmarks: Záložky
domain_blocking: Seznam blokovaných domén
following: Seznam sledovaných
muting: Seznam ignorovaných
@@ -902,7 +1010,7 @@ cs:
'604800': 1 týden
'86400': 1 den
expires_in_prompt: Nikdy
- generate: Vygenerovat pozvánku
+ generate: Vygenerovat zvací odkaz
invited_by: 'Pozval váš uživatel:'
max_uses:
few: "%{count} použití"
@@ -910,7 +1018,7 @@ cs:
one: 1 použití
other: "%{count} použití"
max_uses_prompt: Bez omezení
- prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tento server
+ prompt: Generujte a sdílejte s ostatními odkazy umožňující jim přístup na tento server
table:
expires_at: Vyprší
uses: Použití
@@ -920,8 +1028,8 @@ cs:
limit: Dosáhli jste maximálního počtu seznamů
media_attachments:
validations:
- images_and_video: K tootu, který již obsahuje obrázky, nelze připojit video
- not_ready: Nelze připojit soubory před jejich zpracováním. Zkuste to znovu za chvíli.
+ images_and_video: K příspěvku, který již obsahuje obrázky, nelze připojit video
+ not_ready: Nelze připojit soubory před jejich zpracováním. Zkuste to znovu za chvíli!
too_many: Nelze připojit více než 4 soubory
migrations:
acct: Přesunuto na
@@ -930,7 +1038,7 @@ cs:
cancelled_msg: Přesměrování bylo úspěšně zrušeno.
errors:
already_moved: je stejný účet, na který jste se již přesunuli
- missing_also_known_as: neodkazuje na tento účet
+ missing_also_known_as: není aliasem tohoto účtu
move_to_self: nemůže být aktuální účet
not_found: nebyl nalezen
on_cooldown: Probíhá období odpočinku
@@ -956,6 +1064,10 @@ cs:
redirect: Profil vašeho aktuálního účtu bude aktualizován s oznámením o přesměrování a bude vyloučen z výsledků hledání
moderation:
title: Moderování
+ move_handler:
+ carry_blocks_over_text: Tento účet se přesunul z %{acct}, který jste blokovali.
+ carry_mutes_over_text: Tento účet se přesunul z %{acct}, který jste skryli.
+ copy_account_note_text: 'Tento účet se přesunul z %{acct}, zde byly Vaše předchozí poznámky o něm:'
notification_mailer:
digest:
action: Zobrazit všechna oznámení
@@ -973,12 +1085,12 @@ cs:
other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
title: Ve vaší nepřítomnosti…
favourite:
- body: 'Váš toot si oblíbil uživatel %{name}:'
- subject: Uživatel %{name} si oblíbil váš toot
+ body: 'Váš příspěvek si oblíbil uživatel %{name}:'
+ subject: Uživatel %{name} si oblíbil váš příspěvek
title: Nové oblíbení
follow:
- body: Uživatel %{name} vás nyní sleduje!
- subject: Uživatel %{name} vás nyní sleduje
+ body: "%{name} vás nyní sleduje!"
+ subject: "%{name} vás nyní sleduje"
title: Nový sledující
follow_request:
action: Spravovat žádosti o sledování
@@ -990,10 +1102,14 @@ cs:
body: 'Uživatel %{name} vás zmínil v:'
subject: Uživatel %{name} vás zmínil
title: Nová zmínka
+ poll:
+ subject: Anketa od %{name} skončila
reblog:
- body: 'Uživatel %{name} boostnul váš toot:'
- subject: Uživatel %{name} boostnul váš toot
+ body: 'Uživatel %{name} boostnul váš příspěvek:'
+ subject: Uživatel %{name} boostnul váš příspěvek
title: Nový boost
+ status:
+ subject: Nový příspěvek od %{name}
notifications:
email_events: Události pro e-mailová oznámení
email_events_hint: 'Vyberte události, pro které chcete dostávat oznámení:'
@@ -1008,6 +1124,14 @@ cs:
quadrillion: bld
thousand: tis
trillion: bil
+ otp_authentication:
+ code_hint: Pro potvrzení zadejte kód vygenerovaný Vaší ověřovací aplikací
+ description_html: Zapnete-li dvoufázové ověřování pomocí ověřovací aplikace, k přihlášení budete u sebe muset mít svůj mobil, který pro Vás bude generovat kódy k opsání.
+ enable: Zapnout
+ instructions_html: "Naskenujte tento QR kód do Google Authenticator nebo podobné TOTP aplikace na Vašem telefonu. Následně bude tato aplikace generovat kódy, které budete zadávat při přihlašování."
+ manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je tajemství v textové podobě:'
+ setup: Nastavit
+ wrong_code: Zadaný kód je neplatný! Je čas na serveru i zařízení generujícím kód správný?
pagination:
newer: Novější
next: Další
@@ -1036,6 +1160,7 @@ cs:
relationships:
activity: Aktivita účtu
dormant: Nečinné
+ follow_selected_followers: Sledovat vybrané sledující
followers: Sledující
following: Sledovaní
invited: Pozvánka odeslána
@@ -1059,23 +1184,23 @@ cs:
remote_interaction:
favourite:
proceed: Pokračovat k oblíbení
- prompt: 'Chcete si oblíbit tento toot:'
+ prompt: 'Chcete si oblíbit tento příspěvek:'
reblog:
proceed: Pokračovat k boostnutí
- prompt: 'Chcete boostnout tento toot:'
+ prompt: 'Chcete boostnout tento příspěvek:'
reply:
proceed: Pokračovat k odpovědi
- prompt: 'Chcete odpovědět na tento toot:'
+ prompt: 'Chcete odpovědět na tento příspěvek:'
scheduled_statuses:
- over_daily_limit: Překročili jste limit %{limit} tootů naplánovaných na tento den
- over_total_limit: Překročili jste limit %{limit} naplánovaných tootů
+ over_daily_limit: Překročili jste limit %{limit} příspěvků naplánovaných na tento den
+ over_total_limit: Překročili jste limit %{limit} naplánovaných příspěvků
too_soon: Plánované datum musí být v budoucnosti
sessions:
activity: Nejnovější aktivita
browser: Prohlížeč
browsers:
alipay: Alipay
- blackberry: Blackberry
+ blackberry: BlackBerry
chrome: Chrome
edge: Microsoft Edge
electron: Electron
@@ -1103,7 +1228,7 @@ cs:
firefox_os: Firefox OS
ios: iOS
linux: Linux
- mac: Mac
+ mac: macOS
other: neznámá platforma
windows: Windows
windows_mobile: Windows Mobile
@@ -1132,10 +1257,14 @@ cs:
profile: Profil
relationships: Sledovaní a sledující
two_factor_authentication: Dvoufázové ověřování
- spam_check:
- spam_detected: Tohle je automatizované hlášení. Byl detekován spam.
+ webauthn_authentication: Bezpečnostní klíče
statuses:
attached:
+ audio:
+ few: "%{count} audia"
+ many: "%{count} audií"
+ one: "%{count} audio"
+ other: "%{count} audií"
description: 'Přiloženo: %{attached}'
image:
few: "%{count} obrázky"
@@ -1155,14 +1284,14 @@ cs:
one: 'obsahoval nepovolený hashtag: %{tags}'
other: 'obsahoval nepovolené hashtagy: %{tags}'
errors:
- in_reply_not_found: Stav, na který se pokoušíte odpovědět, neexistuje.
+ in_reply_not_found: Příspěvek, na který se pokoušíte odpovědět, neexistuje.
language_detection: Zjistit jazyk automaticky
open_in_web: Otevřít na webu
over_character_limit: byl překročen limit %{max} znaků
pin_errors:
- limit: Už jste si připnuli maximální počet tootů
- ownership: Nelze připnout toot někoho jiného
- private: Neveřejné tooty nelze připnout
+ limit: Už jste si připnuli maximální počet příspěvků
+ ownership: Nelze připnout příspěvek někoho jiného
+ private: Neveřejné příspěvky nelze připnout
reblog: Boosty nelze připnout
poll:
total_people:
@@ -1177,10 +1306,13 @@ cs:
other: "%{count} hlasů"
vote: Hlasovat
show_more: Zobrazit více
+ show_newer: Zobrazit novější
+ show_older: Zobrazit starší
show_thread: Zobrazit vlákno
sign_in_to_participate: Chcete-li se zúčastnit této konverzace, přihlaste se
title: "%{name}: „%{quote}“"
visibilities:
+ direct: Přímé
private: Pouze pro sledující
private_long: Zobrazit pouze sledujícím
public: Veřejné
@@ -1188,8 +1320,8 @@ cs:
unlisted: Neuvedené
unlisted_long: Uvidí kdokoliv, ale nebude zahrnut ve veřejných časových osách
stream_entries:
- pinned: Připnutý toot
- reblogged: boostnul/a
+ pinned: Připnutý příspěvek
+ reblogged: boostnul
sensitive_content: Citlivý obsah
tags:
does_not_match_previous_name: se neshoduje s předchozím názvem
@@ -1285,14 +1417,20 @@ cs:
default: "%d. %b %Y, %H:%M"
month: "%b %Y"
two_factor_authentication:
- disable: Vypnout
+ add: Přidat
+ disable: Vypnout 2FA
+ disabled_success: Dvoufázové ověření bylo úspěšně vypnuto
+ edit: Upravit
enabled: Dvoufázové ověřování je zapnuto
enabled_success: Dvoufázové ověřování bylo úspěšně zapnuto
generate_recovery_codes: Vygenerovat záložní kódy
lost_recovery_codes: Záložní kódy vám dovolí dostat se k vašemu účtu, pokud ztratíte telefon. Ztratíte-li záložní kódy, můžete je zde znovu vygenerovat. Vaše staré záložní kódy budou zneplatněny.
+ methods: Dvoufázové metody
+ otp: Ověřovací aplikace
recovery_codes: Záložní kódy pro obnovu
recovery_codes_regenerated: Záložní kódy byly úspěšně znovu vygenerovány
recovery_instructions_html: Ztratíte-li někdy přístup ke svému telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů. Uchovejte tyto kódy v bezpečí. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty.
+ webauthn: Bezpečnostní klíče
user_mailer:
backup_ready:
explanation: Vyžádali jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení!
@@ -1306,20 +1444,23 @@ cs:
title: Pokus o přihlášení
warning:
explanation:
- disable: Zatímco je váš účet zmrazen, zůstávají data vašeho účtu nedotčena. Dokud ale nebude odemčen, nemůžete vykonávat žádné akce.
- silence: Zatímco je váš účet omezen, mohou vaše tooty na tomto serveru vidět pouze lidé, kteří váš již sledují, a můžete být vyloučeni z různých veřejných seznamů. Ostatní vás však pořád mohou manuálně sledovat.
- suspend: Váš účet byl pozastaven a všechny vaše tooty a nahrané mediální soubory byly nenávratně odstraněny z tohoto serveru a serverů, na kterých jste měli sledující.
+ disable: Nemůžete se přihlásit do svého účtu nebo ho jakkoliv jinak používat, ale váš profil a ostatní data zůstávají nedotčeny.
+ sensitive: Vámi nahrané a odkazované mediální soubory budou považovány za citlivé.
+ silence: Nadále můžete používat svůj účet, ale pouze lidé, kteří vás již sledovali, uvidí vaše příspěvky na tomto serveru a můžete být vyjmuti z různých veřejných seznamů. Ostatní vás však stále mohou ručně začít sledovat.
+ suspend: Nemůžete už používat svůj účet a váš profil a ostatní data již nejsou dostupná. Stále se můžete přihlásit pro vyžádání zálohy svých dat, dokud nebudou zcela smazána, ale ponecháme si některé údaje, abychom vám zabránili ve vyhýbání se pozastavení.
get_in_touch: Můžete odpovědět na tento e-mail a spojit se s personálem serveru %{instance}.
review_server_policies: Zkontrolujte pravidla serveru
statuses: 'Konkrétně kvůli:'
subject:
disable: Váš účet %{acct} byl zmrazen
- none: Varování pro uživatele %{acct}
+ none: Varování pro %{acct}
+ sensitive: Média z Vašeho účtu %{acct} byla označena za citlivá
silence: Váš účet %{acct} byl omezen
suspend: Váš účet %{acct} byl pozastaven
title:
disable: Účet zmrazen
none: Varování
+ sensitive: Vaše média byla označena jako citlivá
silence: Účet omezen
suspend: Účet pozastaven
welcome:
@@ -1327,7 +1468,7 @@ cs:
edit_profile_step: Svůj profil si můžete přizpůsobit nahráním avataru a obrázku záhlaví, změnou zobrazovaného jména a další. Chcete-li posoudit nové sledující předtím, než vás mohou sledovat, můžete svůj účet uzamknout.
explanation: Zde je pár tipů do začátku
final_action: Začít psát
- final_step: 'Začněte psát! I když nemáte sledující, mohou vaše zprávy vidět jiní lidé, například na místní časové ose a v hashtazích. Můžete se ostatním představit pomocí hashtagu #introductions.'
+ final_step: 'Začněte psát! I když nemáte sledující, mohou vaše veřejné příspěvky vidět jiní lidé, například na místní časové ose a v hashtazích. Můžete se ostatním představit pomocí hashtagu #introductions.'
full_handle: Vaše celá adresa profilu
full_handle_hint: Tohle je, co byste řekli svým přátelům, aby vám mohli posílat zprávy nebo vás sledovat z jiného serveru.
review_preferences_action: Změnit předvolby
@@ -1341,8 +1482,7 @@ cs:
title: Vítejte na palubě, %{name}!
users:
follow_limit_reached: Nemůžete sledovat více než %{limit} lidí
- generic_access_help_html: Máte potíže s přístupem ke svému účtu? Napište nám o pomoc na %{email}.
- invalid_email: E-mailová adresa je neplatná
+ generic_access_help_html: Máte potíže s přístupem ke svému účtu? Můžete nás kontaktovat pro pomoc na %{email}
invalid_otp_token: Neplatný kód pro dvoufázové ověřování
invalid_sign_in_token: Neplatný bezpečnostní kód
otp_lost_help_html: Pokud jste ztratili přístup k oběma, spojte se s %{email}
@@ -1352,3 +1492,20 @@ cs:
verification:
explanation_html: 'Můžete se ověřit jako vlastník odkazů v metadatech profilu. Pro tento účel musí stránka v odkazu obsahovat odkaz zpět na váš profil na Mastodonu. Odkaz zpět musí mít atribut rel="me". Na textu odkazu nezáleží. Zde je příklad:'
verification: Ověření
+ webauthn_credentials:
+ add: Přidat nový bezpečnostní klíč
+ create:
+ error: Při přidávání bezpečnostního klíče došlo k chybě. Zkuste to prosím znovu.
+ success: Váš bezpečnostní klíč byl úspěšně přidán.
+ delete: Odstranit
+ delete_confirmation: Jste si jisti, že chcete odstranit tento bezpečnostní klíč?
+ description_html: Pokud povolíte ověřování bezpečnostním klíčem, přihlašování bude vyžadovat použití jednoho z vašich bezpečnostních klíčů.
+ destroy:
+ error: Při odstraňování bezpečnostního klíče došlo k chybě. Zkuste to prosím znovu.
+ success: Váš bezpečnostní klíč byl úspěšně odstraněn.
+ invalid_credential: Neplatný bezpečnostní klíč
+ nickname_hint: Zadejte přezdívku nového bezpečnostního klíče
+ not_enabled: Zatím jste nepovolili WebAuthn
+ not_supported: Tento prohlížeč nepodporuje bezpečnostní klíče
+ otp_required: Pro použití bezpečnostních klíčů prosím nejprve zapněte dvoufázové ověřování.
+ registered_on: Přidán %{date}
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 92ce53fe6..942be3b58 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -7,7 +7,6 @@ cy:
active_count_after: yn weithredol
active_footnote: Defnyddwyr Gweithredol Misol (DGM)
administered_by: 'Gweinyddir gan:'
- api: API
apps: Apiau symudol
apps_platforms: Defnyddio Mastodon o iOS, Android a phlatfformau eraill
browse_directory: Pori cyfeiriadur proffil a hidlo wrth diddordebau
@@ -93,10 +92,8 @@ cy:
zero: Tŵtiau
posts_tab_heading: Tŵtiau
posts_with_replies: Tŵtiau ac atebion
- reserved_username: Mae'r enw defnyddiwr ar gadw
roles:
admin: Gweinyddwr
- bot: Bot
group: Grŵp
moderator: Safonwr
unavailable: Proffil ddim ar gael
@@ -144,7 +141,6 @@ cy:
header: Pennawd
inbox_url: URL Mewnflwch
invited_by: Gwahoddwyd gan
- ip: IP
joined: Ymunodd
location:
all: Popeth
@@ -170,7 +166,6 @@ cy:
pending: Yn aros am adolygiad
perform_full_suspension: Atal
promote: Hyrwyddo
- protocol: Protocol
public: Cyhoeddus
push_subscription_expires: Tanysgrifiad gwthiadwy yn dod i ben
redownload: Adnewyddu proffil
@@ -189,7 +184,6 @@ cy:
roles:
admin: Gweinyddwr
moderator: Aroglygydd
- staff: Staff
user: Defnyddiwr
search: Chwilio
search_same_email_domain: Defnyddwyr eraill gyda'r un parth ebost
@@ -250,42 +244,6 @@ cy:
update_announcement: Diweddaru Cyhoeddiad
update_custom_emoji: Diweddaru Emoji Addasiedig
update_status: Diweddaru Statws
- actions:
- assigned_to_self_report: Aseiniodd %{name} adroddiad %{target} i'w hunan
- change_email_user: Newidodd %{name} gyfeiriad e-bost y defnyddiwr %{target}
- confirm_user: Cadarnhaodd %{name} gyfeiriad e-bost y defnyddiwr %{target}
- create_account_warning: Anfonwyd rhybudd i %{target} gan %{name}
- create_announcement: Wnaeth %{name} creu cyhoeddiad newydd %{target}
- create_custom_emoji: Uwchlwythodd %{name} emoji newydd %{target}
- create_domain_allow: Gwynrestrodd %{name} y parth %{target}
- create_domain_block: Blociodd %{name} y parth %{target}
- create_email_domain_block: Cosbrestrwyd parth e-bost %{target} gan %{name}
- demote_user: Diraddiodd %{name} y defnyddiwr %{target}
- destroy_announcement: Wnaeth %{name} dileu cyhoeddiad newydd %{target}
- destroy_custom_emoji: Dinistriodd %{name} emoji %{target}
- destroy_domain_allow: Tynnodd %{name} parth %{target} o'r gwynrestr
- destroy_domain_block: Dadflociodd %{name} y parth %{target}
- destroy_email_domain_block: Gwynrestrodd %{name} parth e-bost %{target}
- destroy_status: Cafodd %{name} wared ar statws gan %{target}
- disable_2fa_user: Diffoddodd %{name} ar ofyniad dau gam ar gyfer y defnyddiwr %{target}
- disable_custom_emoji: Diffoddodd %{name} emoji %{target}
- disable_user: Diffoddodd %{name} mewngofnodi ar gyfer y defnyddiwr %{target}
- enable_custom_emoji: Galluogodd %{name} emoji %{target}
- enable_user: Galluogodd %{name} mewngofnodi ar gyfer y defnyddiwr %{target}
- memorialize_account: Newidodd %{name} gyfrif %{target} i dudalen goffau
- promote_user: Dyrchafodd %{name} y defnyddiwr %{target}
- remove_avatar_user: Cafodd %{name} wared ar afatar %{target}
- reopen_report: Ailagorodd %{name} adroddiad %{target}
- reset_password_user: Ailosododd %{name} gyfrinair y defnyddiwr %{target}
- resolve_report: Datrusodd %{name} adroddiad %{target}
- silence_account: Tawelodd %{name} gyfrif %{target}
- suspend_account: Ataliodd %{name} gyfrif %{target}
- unassigned_report: Dadbenododd %{name} adroddiad %{target}
- unsilence_account: Terfynodd %{name} dawelu cyfrif %{target}
- unsuspend_account: Terfynodd %{name} yr ataliad ar gyfrif %{target}
- update_announcement: Wnaeth %{name} diweddaru cyhoeddiad newydd %{target}
- update_custom_emoji: Diweddarodd %{name} emoji %{target}
- update_status: Diweddarodd %{name} statws gan %{target}
deleted_status: "(statws wedi ei ddileu)"
empty: Dim logiau ar gael.
filter_by_action: Hidlo wrth weithred
@@ -312,14 +270,12 @@ cy:
copied_msg: Llwyddwyd i greu copi lleol o'r emoji
copy: Copïo
copy_failed_msg: Methwyd i greu copi lleol o'r emoji hwnnw
- create_new_category: Create new category
created_msg: Llwyddwyd i greu emoji!
delete: Dileu
destroyed_msg: Llwyddwyd i ddinistrio emojo!
disable: Diffodd
disabled: Wedi'i ddiffodd
disabled_msg: Llwyddwyd i ddiffodd yr emoji hwnnw
- emoji: Emoji
enable: Galluogi
enabled: Wedi ei alluogi
enabled_msg: Llwyddwyd i alluogi yr emoji hwnnw
@@ -348,7 +304,6 @@ cy:
feature_profile_directory: Cyfeiriadur proffil
feature_registrations: Cofrestriadau
feature_relay: Relái ffederasiwn
- feature_spam_check: Gwrth-sbam
feature_timeline_preview: Rhagolwg o'r ffrwd
features: Nodweddion
hidden_service: Ffederasiwn a gwasanaethau cudd
@@ -547,8 +502,6 @@ cy:
users: I ddefnyddwyr lleol mewngofnodadwy
domain_blocks_rationale:
title: Dangos rhesymwaith
- enable_bootstrap_timeline_accounts:
- title: Alluogi dilyn diofyn i ddefnyddwyr newydd
hero:
desc_html: Yn cael ei arddangos ar y dudadlen flaen. Awgrymir 600x100px oleia. Pan nad yw wedi ei osod, mae'n ymddangos fel mân-lun yr achos
title: Delwedd arwr
@@ -599,9 +552,6 @@ cy:
desc_html: Mae modd i chi ysgrifennu polisi preifatrwydd, termau gwasanaeth a cyfreitheg arall eich hun. Mae modd defnyddio tagiau HTML
title: Termau gwasanaeth wedi eu haddasu
site_title: Enw'r achos
- spam_check_enabled:
- desc_html: Gall Mastodon adrodd cyrfifau sy'n anfon negeseuon niferus na chrefwyd yn awtomatig. Efallai fydd yna positifau anwir.
- title: Awtomeiddiad gwrth-sbam
thumbnail:
desc_html: Ceith ei ddefnyddio ar gyfer rhagolygon drwy OpenGraph a'r API. Argymhellir 1200x630px
title: Mân-lun yr achos
@@ -636,9 +586,6 @@ cy:
accounts_today: Defyddau unigol heddiw
accounts_week: Defnyddau unigol yr wythnos hon
breakdown: Ymddatodiad o ddefnyddiaeth heddiw wrth ffynhonnell
- context: Cyd-destun
- directory: O fewn y gyfeiriadur
- in_directory: "%{count} yn y gyfeiriadur"
last_active: Yn weithredol ddiwethaf
most_popular: Mwyaf poblogaidd
most_recent: Mwyaf diweddar
@@ -682,13 +629,11 @@ cy:
discovery: Darganfyddiad
localization:
body: Caiff Mastodon ei gyfieithu gan wirfoddolwyr.
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Gall pawb gyfrannu.
sensitive_content: Cynnwys sensitif
toot_layout: Gosodiad tŵt
application_mailer:
notification_preferences: Newid gosodiadau e-bost
- salutation: "%{name},"
settings: 'Newid gosodiadau e-bost: %{link}'
view: 'Gweld:'
view_profile: Gweld proffil
@@ -720,9 +665,6 @@ cy:
migrate_account: Symud i gyfrif gwahanol
migrate_account_html: Os hoffech chi ailgyfeirio'r cyfrif hwn at un gwahanol, mae modd ei ffurfweddu yma.
or_log_in_with: Neu logiwch mewn a
- providers:
- cas: CAS
- saml: SAML
register: Cofrestru
registration_closed: Nid yw %{instance} yn derbyn aelodau newydd
resend_confirmation: Ailanfon cyfarwyddiadau cadarnhau
@@ -761,9 +703,6 @@ cy:
errors:
invalid_key: ddim yn allwedd Ed25519 na Curve25519 dilys
invalid_signature: ddim yn llofnod Ed25519 dilys
- date:
- formats:
- default: "%b %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}awr"
@@ -828,7 +767,6 @@ cy:
request: Gwneud cais am eich archif
size: Maint
blocks: Yr ydych yn blocio
- csv: CSV
domain_blocks: Blociau parth
lists: Rhestrau
mutes: Yr ydych yn tawelu
@@ -1033,7 +971,6 @@ cy:
number:
human:
decimal_units:
- format: "%n%u"
units:
billion: Biliwn
million: Miliwn
@@ -1045,7 +982,6 @@ cy:
next: Nesaf
older: Hŷn
prev: Blaenorol
- truncate: "…"
polls:
errors:
already_voted: Rydych chi barod wedi pleidleisio ar y pleidlais hon
@@ -1108,39 +1044,17 @@ cy:
activity: Gweithgaredd ddiwethaf
browser: Porwr
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Porwr anhysbys
- ie: Internet Explorer
- micro_messenger: MicroMessenger
nokia: Porwr Nokia S40 Ovi
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
qq: Porwr QQ
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Sesiwn cyfredol
description: "%{browser} ar %{platform}"
explanation: Dyma'r porwyr gwê sydd wedi mewngofnodi i'ch cyfrif Mastododon ar hyn o bryd.
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
chrome_os: OS Chrome
firefox_os: OS Firefox
- ios: iOS
- linux: Linux
mac: Mac
other: platfform anhysbys
- windows: Windows
- windows_mobile: Windows Mobile
windows_phone: Ffôn Windows
revoke: Diddymu
revoke_success: Sesiwn wedi ei ddiddymu yn llwyddiannus
@@ -1166,8 +1080,6 @@ cy:
profile: Proffil
relationships: Dilynion a dilynwyr
two_factor_authentication: Awdurdodi dau-gam
- spam_check:
- spam_detected: Mae hyn yn adrodd awtomatig. Caiff sbam ei ganfod.
statuses:
attached:
audio:
@@ -1230,7 +1142,6 @@ cy:
show_more: Dangos mwy
show_thread: Dangos edefyn
sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs
- title: '%{name}: "%{quote}"'
visibilities:
private: Dilynwyr yn unig
private_long: Dangos i ddilynwyr yn unig
@@ -1331,10 +1242,6 @@ cy:
contrast: Mastodon (Cyferbyniad uchel)
default: Mastodon (Tywyll)
mastodon-light: Mastodon (golau)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
disable: Diffodd
enabled: Awdurdodi dau-gam wedi'i alluogi
@@ -1391,11 +1298,8 @@ cy:
tips: Awgrymiadau
title: Croeso, %{name}!
users:
- blocked_email_provider: Nid yw'r darparwr ebost hon yn cael ei ganiatâu
follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl
generic_access_help_html: Cael trafferth yn cyrchu eich cyfrif? Efallai hoffwch cysylltu â %{email} am gymorth
- invalid_email: Mae'r cyfeiriad e-bost hwn yn annilys
- invalid_email_mx: Nid yw'r ebost yn edrcyh fel ei bod yn bodoli
invalid_otp_token: Côd dau-ffactor annilys
invalid_sign_in_token: Cod diogelwch annilys
otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email}
diff --git a/config/locales/da.yml b/config/locales/da.yml
index c98404066..90e9e008e 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -1,51 +1,53 @@
---
da:
about:
- about_hashtag_html: Disse er offentlige trut der indeholder tagget #%{hashtag}. Du kan interagere med dem hvis du har en konto hvor som helst i fediverset.
- about_mastodon_html: Mastodon er et socialt netværk der er baseret på åbne web protokoller og frit, open-source source software. Der er decentraliseret ligesom e-mail tjenester.
+ about_hashtag_html: Disse er offentlige trut tagget med #%{hashtag}. Du kan interagere med dem, hvis du har en konto hvor som helst i fediverset.
+ about_mastodon_html: 'Fremtidens sociale netværk: Ingen annoncer, ingen virksomhedsovervågning, etisk design og decentralisering! Ej dine data med Mastodon!'
about_this: Om
active_count_after: aktive
- active_footnote: Månedligt Aktive Brugere (MAU)
- administered_by: 'Administreret af:'
+ active_footnote: Månedlige aktive brugere (MAU)
+ administered_by: 'Administreres af:'
api: API
- apps: Apps til mobilen
- apps_platforms: Brug Mastodon på iOS, Android og andre platformer
- browse_directory: Gennemse en profils indholdsfortegnelse og filtrer efter interesser
+ apps: Mobil-apps
+ apps_platforms: Benyt Mastodon på Android, iOS og andre platforme
+ browse_directory: Gennemse en profilindholdsfortegnelse og filtrér efter interesser
browse_local_posts: Gennemse en live stream af offentlige indlæg fra denne server
- browse_public_posts: Gennemse en live stream af offentlige indlæg fra Mastodon
+ browse_public_posts: Gennemse en live stream af offentlige indlæg på Mastodon
contact: Kontakt
contact_missing: Ikke sat
- contact_unavailable: Ikke tilgængeligt
- discover_users: Opdag brugere
+ contact_unavailable: Utilgængelig
+ discover_users: Find brugere
documentation: Dokumentation
- federation_hint_html: Med en konto på %{instance} har du har mulighed for at følge andre på en hvilken som helst Mastodon server.
- get_apps: Prøv en mobil app
+ federation_hint_html: Med en konto på %{instance} vil du kunne følge andre på en hvilken som helst Mastodon-server.
+ get_apps: Prøv en mobil-app
hosted_on: Mostodon hostet på %{domain}
instance_actor_flash: |
- Denne konto er en virtuel aktør, der bruges til at repræsentere selve serveren og ikke nogen individuel bruger.
- Det bruges til Federation formål og bør ikke blokeres, medmindre du vil blokere hele Instance, i hvilket tilfælde du skal bruge en domæne blokering.
- learn_more: Lær mere
- privacy_policy: Privatlivspolitik
- see_whats_happening: Se hvad der sker
- server_stats: 'Server statstik:'
+ Denne konto er en virtuel skuespiller, der bruges til at repræsentere selve serveren og ikke nogen individuel bruger.
+ Det bruges til føderationsformål og bør ikke blokeres, medmindre du vil blokere hele forekomsten og i så tilfælde bør bruge en domæneblokering.
+ learn_more: Få mere at vide
+ privacy_policy: Fortrolighedspolitik
+ rules: Serverregler
+ rules_html: 'Nedenfor ses en oversigt over regler, som skal følges, hvis du ønsker at have en konto på denne Mastodon-server:'
+ see_whats_happening: Se, hvad der sker
+ server_stats: 'Serverstatstik:'
source_code: Kildekode
status_count_after:
one: status
other: statusser
status_count_before: Som har skrevet
tagline: Følg venner og find nye
- terms: Vilkår for service
- unavailable_content: Utilgængeligt indhold
+ terms: Tjenestevilkår
+ unavailable_content: Modererede servere
unavailable_content_description:
domain: Server
reason: Årsag
- rejecting_media: 'Medie filer fra disse servere vil ikke blive behandlet eller gemt, og ingen miniaturebilleder vil blive vist, som kræver tilgang til den originale fil:'
+ rejecting_media: 'Mediefiler fra disse servere behandles eller gemmes ikke, og ingen miniaturebilleder vises, og kræver manuel klik-igennem til originalfilen:'
rejecting_media_title: Filtrerede medier
- silenced: 'Posteringer fra disse servere vil være skjulte i den offentlige tidslinje feed eller beskeder og ingen notifikationer vil blive genereret fra brugere du ikke følger:'
- silenced_title: Dæmpede servere
- suspended: 'Ingen date fra disse servere vil blive behandlet, gemt eller udvekslet, at interagere eller kommunikere med brugere fra disse servere er ikke muligt:'
+ silenced: 'Indlæg fra disse servere er skjult i offentlige tidslinjer og konversationer, og der genereres ingen notifikationer fra deres brugerinteraktioner, medmindre du følger dem:'
+ silenced_title: Tavsgjorte servere
+ suspended: 'Ingen data fra disse servere behandles, gemmes eller udveksles, hvilket umuliggør interaktion eller kommunikation med brugere fra disse servere:'
suspended_title: Suspenderede servere
- unavailable_content_html: Mastodon tillader dig generelt at se indhold og interagere med brugere fra enhver anden server i fediverset. Dette er undtagelser der er foretaget på netop denne server.
+ unavailable_content_html: Mastodon tillader dig generelt at se indhold og interagere med brugere fra enhver anden server i fediverset. Disse er undtagelserne, som er implementeret på netop denne servertype.
user_count_after:
one: bruger
other: brugere
@@ -53,34 +55,34 @@ da:
what_is_mastodon: Hvad er Mastodon?
accounts:
choices_html: "%{name}s valg:"
- endorsements_hint: Du kan støtte folk du følger fra web-interface, og de vil dukke op her.
- featured_tags_hint: Du kan tilføje specifikke hashtags der vil blive vist her.
+ endorsements_hint: Du kan støtte personer, du følger, fra webgrænsefladen, og de vil fremgå hér.
+ featured_tags_hint: Du kan fremhæve bestemte hashtags, som så vil fremgå hér.
follow: Følg
followers:
one: Følger
other: Følgere
following: Følger
- joined: Tilmeldt den %{date}
- last_active: sidst aktiv
- link_verified_on: Ejerskabet af dette link blev tjekket den %{date}
+ instance_actor_flash: Denne konto er en virtuel aktør, der bruges til at repræsentere selve serveren og ikke nogen individuel bruger. Den anvendes til føderation og bør ikke suspenderes.
+ joined: Tilmeldt %{date}
+ last_active: senest aktiv
+ link_verified_on: Ejerskab af dette link blev tjekket %{date}
media: Medier
moved_html: "%{name} er flyttet til %{new_profile_link}:"
- network_hidden: Denne information er ikke tilgængelig
+ network_hidden: Denne information er utilgængelig
never_active: Aldrig
- nothing_here: Der er intet her!
- people_followed_by: Folk som %{name} følger
- people_who_follow: Folk der følger %{name}
+ nothing_here: Der er intet hér!
+ people_followed_by: Personer, som %{name} følger
+ people_who_follow: Personer, som følger %{name}
pin_errors:
- following: Du er nødt til at følge den person du ønsker at støtte
+ following: Du skal allerede følge den person, du ønsker at støtte
posts:
one: Trut
other: Trut
posts_tab_heading: Trut
posts_with_replies: Trut og svar
- reserved_username: Brugernavnet er allerede taget
roles:
- admin: Administrator
- bot: Robot
+ admin: Admin
+ bot: Bot
group: Gruppe
moderator: Moderator
unavailable: Profil utilgængelig
@@ -88,316 +90,391 @@ da:
admin:
account_actions:
action: Udfør handling
- title: Udfør moderator handlinger på %{acct}
+ title: Udfør moderatorhandling på %{acct}
account_moderation_notes:
create: Læg en note
- created_msg: Moderator notat succesfuldt oprettet!
+ created_msg: Moderatornotat oprettet!
delete: Slet
- destroyed_msg: Moderator notat succesfuldt destrueret!
+ destroyed_msg: Moderatornotat destrueret!
accounts:
- add_email_domain_block: Bloker e-mail domæne
+ add_email_domain_block: Blokér e-maildomæne
approve: Godkend
approve_all: Godkend alle
- are_you_sure: Er du sikker?
+ approved_msg: Tilmeldingsansøgning for %{username} blev godkendt
+ are_you_sure: Sikker?
avatar: Profilbillede
by_domain: Domæne
change_email:
- changed_msg: Email til konto succesfuldt ændret!
- current_email: Nuværende email
- label: Ændre email
- new_email: Ny email
- submit: Ændre email
- title: Ændre email for %{username}
+ changed_msg: Kontoens e-mail er skiftet!
+ current_email: Nuværende e-mail
+ label: Skift e-mail
+ new_email: Ny e-mail
+ submit: Skift e-mail
+ title: Skift e-mail for %{username}
confirm: Bekræft
confirmed: Bekræftet
confirming: Bekræfter
delete: Slet data
deleted: Slettet
- demote: Degrader
- disable: Deaktiver
- disable_two_factor_authentication: Deaktiver 2FA
- disabled: Deaktiveret
+ demote: Degradér
+ destroyed_msg: "%{username}s data er nu i kø til straks at blive slettet"
+ disable: Frys
+ disable_two_factor_authentication: Deaktivér 2FA
+ disabled: Frosset
display_name: Visningsnavn
domain: Domæne
- edit: Rediger
- email: Email
- email_status: Email status
- enable: Aktiver
+ edit: Redigere
+ email: E-mail
+ email_status: E-mailstatus
+ enable: Optø
enabled: Aktiveret
+ enabled_msg: "%{username}s konto er optøet"
followers: Følgere
follows: Følger
- header: Overskrift/billede
- inbox_url: Link til indbakke
+ header: Overskrift
+ inbox_url: Indbakke-URL
+ invite_request_text: Begrundelse for tilmelding
invited_by: Inviteret af
- ip: IP-adresse
- joined: Tilmeldt den
+ ip: IP
+ joined: Tilmeldt
location:
all: Alle
local: Lokalt
remote: Fjernt
title: Placering
- login_status: Status på login
- media_attachments: Medie bilag
- memorialize: Omdan til et memoriam
- memorialized: Memorialiseret
+ login_status: Indlogningsstatus
+ media_attachments: Medievedhæftninger
+ memorialize: Omdan til mindekonto
+ memorialized: Minde gjort
+ memorialized_msg: "%{username} gjort til mindekonto"
moderation:
active: Aktiv
all: Alle
pending: Afventer
- silenced: Dæmpet
- suspended: Udelukket
- title: Moderasion
- moderation_notes: Moderator notater
+ silenced: Tavsgjort
+ suspended: Suspenderet
+ title: Moderation
+ moderation_notes: Moderationsnotater
most_recent_activity: Seneste aktivitet
- most_recent_ip: Senest IP
- no_account_selected: Ingen konti blev ændret da ingen var valgt
- no_limits_imposed: Ingen ændringer gennemført
- not_subscribed: Ikke abonneret
- pending: Afventende anmeldelser
- perform_full_suspension: Udeluk
+ most_recent_ip: Seneste IP
+ no_account_selected: Ingen kontiændringer, da ingen var valgt
+ no_limits_imposed: Ingen begrænsninger pålagt
+ not_subscribed: Abonnerer ikke
+ pending: Afventende vurdering
+ perform_full_suspension: Suspendér
promote: Forfrem
protocol: Protokol
- public: Offentligt
- push_subscription_expires: PuSH abonnement udløber
- redownload: Opdater profil
+ public: Offentlig
+ push_subscription_expires: PuSH-abonnement udløber
+ redownload: Opfrisk profil
+ redownloaded_msg: Profil for %{username} opfriske fra oprindelsesserver
reject: Afvis
reject_all: Afvis alle
+ rejected_msg: Tilmeldingsansøgning fra %{username} afvist
remove_avatar: Fjern profilbillede
- remove_header: Fjern overskrift/billede
+ remove_header: Fjern overskrift
+ removed_avatar_msg: Profilbillede for %{username} fjernet
+ removed_header_msg: Overskriftsbillede for %{username} fjernet
resend_confirmation:
- already_confirmed: Denne bruger er allerede blevet bekræftet
- send: Gensend bekræftelsesmail
- success: Bekræftelsesmail sendt succesfuldt!
+ already_confirmed: Denne bruger er allerede bekræftet
+ send: Gensend bekræftelses e-mail
+ success: Bekræftelses e-mail afsendt!
reset: Nulstil
- reset_password: Nulstil kodeord
- resubscribe: Abonner igen
+ reset_password: Nulstil adgangskode
+ resubscribe: Genabonnér
role: Tilladelser
roles:
- admin: Admin
- moderator: Mod
+ admin: Administrator
+ moderator: Moderator
staff: Personale
user: Bruger
search: Søg
- search_same_ip: Andre brugere med den samme IP-adresse
- sensitive: Følsomt
- sensitized: markeret som følsomt
- shared_inbox_url: Link til delt indbakke
+ search_same_email_domain: Andre brugere med det samme e-maildomæne
+ search_same_ip: Andre brugere med den samme IP
+ sensitive: Sensitivt
+ sensitized: markeret som sensitivt
+ shared_inbox_url: Delt indbakke-URL
show:
- created_reports: Anmeldelser oprettet
- targeted_reports: Anmeldelser fra andre
- silence: Dæmp
- silenced: Dæmpet
+ created_reports: Indsendte anmeldelser
+ targeted_reports: Anmeldt af andre
+ silence: Tavsgør
+ silenced: Tavsgjort
statuses: Statusser
- subscribe: Abonner
- suspended: Udelukket
+ subscribe: Abonnér
+ suspended: Suspenderet
+ suspension_irreversible: Disse kontodata er blevet slettet permanent. Du kan afsuspendere kontoen for at gøre den brugbar, men dette gendanner ikke de tidligere kontodata.
+ suspension_reversible_hint_html: Kontoen er blevet suspenderet, og dens data fjernes helt d. %{date}. Indtil da kan kontoen genoprettes uden datatab mv. Ønsker alle kontodata fjernet straks, kan dette gøres nedenfor.
time_in_queue: Venter i køen %{time}
title: Konti
- unconfirmed_email: Ikke-bekræftet email
- undo_silenced: Fortryd dæmpning
- undo_suspension: Fortryd udelukkelse
- unsubscribe: Abonner ikke længere
+ unconfirmed_email: Ikke-bekræftet e-mail
+ undo_sensitized: Fortryd sensitiv
+ undo_silenced: Fortryd tavsgørelse
+ undo_suspension: Fortryd suspendering
+ unsilenced_msg: "%{username}s konto er optøet"
+ unsubscribe: Opsig abonnement
+ unsuspended_msg: "%{username}s konto er afsuspenderet"
username: Brugernavn
view_domain: Vis resumé for domæne
warn: Advar
web: Web
- whitelisted: Hvidlistet
+ whitelisted: Tilladt for federering
action_logs:
action_types:
assigned_to_self_report: Tildel rapport
- change_email_user: Ændre e-mail for bruger
+ change_email_user: Skift e-mail for bruger
confirm_user: Bekræft bruger
create_account_warning: Opret advarsel
create_announcement: Opret bekendtgørelse
- create_domain_allow: Opret domæne tillad
+ create_custom_emoji: Opret tilpasset emoji
+ create_domain_allow: Opret domænetilladelse
create_domain_block: Opret domæneblokering
+ create_email_domain_block: Opret e-maildomæneblokering
create_ip_block: Opret IP-regel
+ create_unavailable_domain: Opret Utilgængeligt Domæne
+ demote_user: Degradere bruger
destroy_announcement: Slet bekendtgørelse
+ destroy_custom_emoji: Slet tilpasset emoji
+ destroy_domain_allow: Slet domænetilladelse
destroy_domain_block: Slet domæneblokering
- destroy_email_domain_block: Slet e-mail domæne blokering
+ destroy_email_domain_block: Slet e-maildomæneblokering
destroy_ip_block: Slet IP-regel
destroy_status: Slet status
- disable_2fa_user: Slet 2FA
- disable_user: Deaktiver brugeren
- enable_user: Aktiver brugeren
+ destroy_unavailable_domain: Slet Utilgængeligt Domæne
+ disable_2fa_user: Deaktivér 2FA
+ disable_custom_emoji: Deaktivér tilpasset emoji
+ disable_user: Deaktivér bruger
+ enable_custom_emoji: Aktivér tilpasset emoji
+ enable_user: Aktivér brugeren
+ memorialize_account: Gør til mindekonto
+ promote_user: Promovér bruger
remove_avatar_user: Fjern profilbillede
- reopen_report: Genåben rapport
+ reopen_report: Genåbn anmeldelse
reset_password_user: Nulstil adgangskode
- resolve_report: Løs rapport
- silence_account: Dæmp konto
- suspend_account: Suspendér Konto
- unsilence_account: Fjern dæmpelse af konto
- update_announcement: Opdater bekendtgørelse
- update_status: Opdater status
+ resolve_report: Løs anmeldelse
+ sensitive_account: Markér medierne i din konto som sensitive
+ silence_account: Tavsgør konto
+ suspend_account: Suspendér konto
+ unassigned_report: Aftildel anmeldelse
+ unsensitive_account: Afmarkér medierne i din konto som sensitive
+ unsilence_account: Fjern kontotavsgørelse
+ unsuspend_account: Afsuspendér konto
+ update_announcement: Opdatér bekendtgørelse
+ update_custom_emoji: Opdatér tilpasset emoji
+ update_domain_block: Opdatér domæneblokering
+ update_status: Opdatér status
actions:
- assigned_to_self_report: "%{name} tildelte anmeldelsen %{target} til sig selv"
- change_email_user: "%{name} ændrede email adressen for brugeren %{target}"
- confirm_user: "%{name} bekræftede %{target}s email adresse"
- create_account_warning: "%{name} sendte en advarsel til %{target}"
- create_custom_emoji: "%{name} uploadede humørikonet %{target}"
- create_domain_allow: "%{name} godkendte domænet %{target}"
- create_domain_block: "%{name} blokerede domænet %{target}"
- create_email_domain_block: "%{name} sortlistede email domænet %{target}"
- create_ip_block: "%{name} oprettede regel for IP %{target}"
- demote_user: "%{name} degraderede %{target}"
- destroy_custom_emoji: "%{name} fjernede emoji %{target}"
- destroy_domain_allow: "%{name} fjernede godkendelsen af domænet %{target}"
- destroy_domain_block: "%{name} fjernede blokeringen af domænet %{target}"
- destroy_email_domain_block: "%{name} hvid-listede email domænet %{target}"
- destroy_ip_block: "%{name} slettede reglen for IP %{target}"
- destroy_status: "%{name} fjernede statussen fra %{target}"
- disable_2fa_user: "%{name} deaktiverede to faktor kravet for brugeren %{target}"
- disable_custom_emoji: "%{name} deaktiverede humørikonet %{target}"
- disable_user: "%{name} deaktiverede login for brugeren %{target}"
- enable_custom_emoji: "%{name} aktiverede humørikonet %{target}"
- enable_user: "%{name} aktiverede login for brugeren %{target}"
- memorialize_account: "%{name} omdannede %{target}s konto til en mindeside"
- promote_user: "%{name} forfremmede brugeren %{target}"
- remove_avatar_user: "%{name} fjernede %{target}s profilbillede"
- reopen_report: "%{name} genåbnede anmeldelsen %{target}"
- reset_password_user: "%{name} nulstillede kodeordet for brugeren %{target}"
- resolve_report: "%{name} løste anmeldelsen %{target}"
- silence_account: "%{name} dæmpede %{target}s konto"
- suspend_account: "%{name} udelukkede %{target}s konto"
- unassigned_report: "%{name} fjernede tildelingen af rapporten %{target}"
- unsilence_account: "%{name} fjernede dæmpningen fra %{target}s konto"
- unsuspend_account: "%{name} fjernede udelukkelsen fra %{target}s konto"
- update_custom_emoji: "%{name} opdaterede humørikonet %{target}"
- update_status: "%{name} opdaterede status for %{target}"
+ assigned_to_self_report_html: "%{name} tildelte sig selv anmeldelsen %{target}"
+ change_email_user_html: "%{name} ændrede e-mailadressen for bruger %{target}"
+ confirm_user_html: "%{name} bekræftede e-mailadressen for bruger %{target}"
+ create_account_warning_html: "%{name} sendte en advarsel til %{target}"
+ create_announcement_html: "%{name} oprettede den nye bekendtgørelse %{target}"
+ create_custom_emoji_html: "%{name} uploadede det nye emoji %{target}"
+ create_domain_allow_html: "%{name} tillod federering med domænet %{target}"
+ create_domain_block_html: "%{name} blokerede domænet %{target}"
+ create_email_domain_block_html: "%{name} blokerede e-maildomænet %{target}"
+ create_ip_block_html: "%{name} oprettede en regel for IP %{target}"
+ create_unavailable_domain_html: "%{name} stoppede levering til domænet %{target}"
+ demote_user_html: "%{name} degraderede bruger %{target}"
+ destroy_announcement_html: "%{name} slettede bekendtgørelsen %{target}"
+ destroy_custom_emoji_html: "%{name} fjernede emojien %{target}"
+ destroy_domain_allow_html: "%{name} fjernede federeringstilladelsen med domænet %{target}"
+ destroy_domain_block_html: "%{name} afblokerede domænet %{target}"
+ destroy_email_domain_block_html: "%{name} afblokerede e-maildomænet %{target}"
+ destroy_ip_block_html: "%{name} slettede en regel for IP %{target}"
+ destroy_status_html: "%{name} fjernede statussen fra %{target}"
+ destroy_unavailable_domain_html: "%{name} genoptog levering til domænet %{target}"
+ disable_2fa_user_html: "%{name} deaktiverede tofaktorkravet for brugeren %{target}"
+ disable_custom_emoji_html: "%{name} deaktiverede humørikonet %{target}"
+ disable_user_html: "%{name} deaktiverede indlogning for brugeren %{target}"
+ enable_custom_emoji_html: "%{name} aktiverede humørikonet %{target}"
+ enable_user_html: "%{name} aktiverede indlogning for brugeren %{target}"
+ memorialize_account_html: "%{name} gjorde %{target}s konto til en mindeside"
+ promote_user_html: "%{name} forfremmede brugeren %{target}"
+ remove_avatar_user_html: "%{name} fjernede %{target}s profilbillede"
+ reopen_report_html: "%{name} genåbnede anmeldelsen %{target}"
+ reset_password_user_html: "%{name} nulstillede adgangskoden for brugeren %{target}"
+ resolve_report_html: "%{name} løste anmeldelsen %{target}"
+ sensitive_account_html: "%{name} markerede %{target}s medier som sensitive"
+ silence_account_html: "%{name} tavsgjorde %{target}s konto"
+ suspend_account_html: "%{name} suspenderede %{target}s konto"
+ unassigned_report_html: "%{name} fjernede tildelingen af rapporten %{target}"
+ unsensitive_account_html: "%{name} afmarkerede %{target}s medier som sensitive"
+ unsilence_account_html: "%{name} fjernede tavsgøring af %{target}s konto"
+ unsuspend_account_html: "%{name} fjernede suspenderingen af %{target}s konto"
+ update_announcement_html: "%{name} opdaterede bekendtgørelsen %{target}"
+ update_custom_emoji_html: "%{name} opdaterede emoji %{target}"
+ update_domain_block_html: "%{name} opdaterede domæneblokeringen for %{target}"
+ update_status_html: "%{name} opdaterede status for %{target}"
deleted_status: "(slettet status)"
- empty: Ingen logs fundet.
- filter_by_action: Filtrer efter handling
- filter_by_user: Filtrer efter bruger
+ empty: Ingen logger fundet.
+ filter_by_action: Filtrér efter handling
+ filter_by_user: Filtrér efter bruger
title: Revisionslog
announcements:
destroyed_msg: Bekendtgørelsen blev slettet!
edit:
- title: Rediger bekendtgørelse
+ title: Redigér bekendtgørelse
empty: Ingen bekendtgørelser fundet.
- live: Direkte
+ live: Live
new:
create: Opret bekendtgørelse
title: Ny bekendtgørelse
- published_msg: Bekendtgørelsen blev slettet!
+ publish: Publicér
+ published_msg: Bekendtgørelsen blev publiceret!
scheduled_for: Planlagt til %{time}
+ scheduled_msg: Bekendtgørelse planlagt til publicering!
title: Bekendtgørelser
+ unpublish: Afpublicér
+ unpublished_msg: Bekendtgørelsen blev afpubliceret!
updated_msg: Bekendtgørelsen blev opdateret!
custom_emojis:
- assign_category: Vælg kategori
+ assign_category: Tildel kategori
by_domain: Domæne
- copied_msg: Succesfuldt oprettede en lokal kopi af humørikonet
- copy: Kopier
- copy_failed_msg: Kunne ikke oprette en lokal kopi af dette humørikon
+ copied_msg: Lokal kopi af emojien oprettet
+ copy: Kopiér
+ copy_failed_msg: Lokal kopi af denne emoji kunne ikke oprettes
create_new_category: Opret ny kategori
- created_msg: Humørikon succesfuldt oprettet!
+ created_msg: Emoji oprettet!
delete: Slet
- destroyed_msg: Emojo succesfuldt destrueret!
- disable: Deaktiver
+ destroyed_msg: Emoji destrueret!
+ disable: Deaktivér
disabled: Deaktiveret
- disabled_msg: Succesfuldt deaktiverede det humørikon
- emoji: Humørikon
- enable: Aktiver
+ disabled_msg: Denne emoji blev deaktiveret
+ emoji: Emoji
+ enable: Aktivér
enabled: Aktiveret
- enabled_msg: Succesfuldt aktiverede det humørikon
+ enabled_msg: Denne emoji blev aktiveret
image_hint: PNG op til 50KB
- list: Listet
- listed: Listet
+ list: Oplist
+ listed: Oplistet
new:
- title: Tilføj nyt brugerdefineret humørikon
+ title: Tilføj ny tilpasset emoji
not_permitted: Du har ikke tilladelse til at udføre denne handling
overwrite: Overskriv
shortcode: Kortkode
- shortcode_hint: Mindst 2 tegn, kun alfabetiske tegn og understreger
- title: Brugerdefinerede humørikoner
- uncategorized: Uden kategori
- unlist: Ulistet
- unlisted: Ikke listet
- update_failed_msg: Kunne ikke opdatere det humørikon
- updated_msg: Humørikon succesfuldt opdateret!
- upload: Læg op
+ shortcode_hint: Mindst 2 tegn, kun alfanumeriske tegn og understreger
+ title: Tilpassede emojier
+ uncategorized: Ukategoriseret
+ unlist: Fjern fra oplistning
+ unlisted: Ikke oplistet
+ update_failed_msg: Kunne ikke opdatere den emoji
+ updated_msg: Emoji blev opdateret!
+ upload: Upload
dashboard:
authorized_fetch_mode: Sikker tilstand
backlog: ophobede jobs
- config: Konfiguration
- feature_deletions: Konto sletninger
- feature_invites: Invitations links
+ config: Opsætning
+ feature_deletions: Kontosletninger
+ feature_invites: Invitationslinks
feature_profile_directory: Profilliste
feature_registrations: Registreringer
- feature_relay: Føderations relæ
- feature_spam_check: Anti-spam
- feature_timeline_preview: Tidslinje eksempelvisning
+ feature_relay: Federationsredistributør
+ feature_timeline_preview: Tidslinjeforhåndsvisning
features: Funktioner
- hidden_service: Føderation med skjulte tjenester
+ hidden_service: Federering med skjulte tjenester
open_reports: åbne anmeldelser
- pending_tags: hastags der afventer gennemgang
- pending_users: brugere der afventer gennemgang
+ pending_tags: hastags afventende revidering
+ pending_users: brugere afventende revidering
recent_users: Seneste brugere
- search: Søg på fuld tekst
- single_user_mode: Enkelt bruger mode
+ search: Fuldtekstsøgning
+ single_user_mode: Enkeltbrugertilstand
software: Software
- space: Brugt lagerplads
+ space: Lagerpladsforbrug
title: Betjeningspanel
- total_users: samlede antal brugere
+ total_users: brugere i alt
trends: Tendenser
week_interactions: interaktioner denne uge
week_users_active: aktive denne uge
week_users_new: brugere denne uge
- whitelist_mode: Whitelist tilstand
+ whitelist_mode: Begrænset federeringstilstand
domain_allows:
- add_new: Whitelist domæne
- created_msg: Domænet er tilføjet whitelist
- destroyed_msg: Domænet er fjernet fra whitelist
- undo: Fjern fra hvidliste
+ add_new: Tillade federering med domæne
+ created_msg: Domæne er blevet tilladt federering
+ destroyed_msg: Domæne er blevet forbudt federering
+ undo: Forbyd federering med domæne
domain_blocks:
- add_new: Tilføj ny domain block
- created_msg: Domæne blokade bliver nu behandlet
- destroyed_msg: Domæne blokade er blevet annulleret
+ add_new: Tilføj ny domæneblokering
+ created_msg: Domæneblokering under behandling
+ destroyed_msg: Domæneblokering er blevet fjernet
domain: Domæne
- edit: Rediger domæne blokering
+ edit: Redigér domæneblokering
+ existing_domain_block_html: Du har allerede pålagt %{name} strengere grænser, du skal afblokerere det først.
new:
create: Opret blokering
- hint: Domæne blokeringen vil ikke forhindre oprettelse af konto opslag i databasen, men vil retroaktivt og automatisk benytte specifikke moderator metoder på disse konti.
+ hint: Domæneblokeringen vil ikke forhindre oprettelse af kontoposter i databasen, men vil retroaktivt og automatisk benytte specifikke moderationsmetoder på disse konti.
severity:
- desc_html: "Dæmp vil gøre denne kontos opslag usynlige til alle der ikke følger dem. Udeluk vil fjerne al kontoens indhold, medie og profildata. Brug Ingen hvis du bare ønsker at afvise medie filer."
+ desc_html: "Tavsgjort vil gøre kontoens indlæg usynlige for alle, som ikke følger dem. Suspendering vil fjerne alt kontoindhold, medier og profildata. Brug Ingen, hvis mediefiler blot ønskes afvist."
noop: Ingen
- silence: Dæmp
- suspend: Udeluk
- title: Ny domæne blokering
+ silence: Tavsgøre
+ suspend: Suspendere
+ title: Ny domæneblokering
+ obfuscate: Slør domænenavn
+ obfuscate_hint: Slør delvist domænenavnet på listen, hvis annoncering af listen over domænebegrænsninger er aktiveret
private_comment: Privat kommentar
+ private_comment_hint: Kommentar om denne domænebegrænsning til intern brug for moderatorerne.
public_comment: Offentlig kommentar
- reject_media: Afvis medie filer
- reject_media_hint: Fjerner lokalt lagrede multimedie filer og nægter at hente nogen i fremtiden. Irrelevant for udelukkelser
+ public_comment_hint: Kommentar om denne domænebegrænsning for den brede offentlighed, hvis annoncering af listen over domænebegrænsninger er aktiveret.
+ reject_media: Afvis mediefiler
+ reject_media_hint: Fjerner lokalt lagrede mediefiler og afviser at download nogle fremadrettet. Irrelevant for suspenderinger
reject_reports: Afvis anmeldelser
+ reject_reports_hint: Ignorér alle anmeldelser fra dette domæne. Irrelevant for suspenderinger
rejecting_media: afviser mediefiler
rejecting_reports: afviser anmeldelser
severity:
- silence: dæmpet
+ silence: tavsgjort
suspend: suspenderet
show:
affected_accounts:
one: En konto i databasen påvirket
other: "%{count} konti i databasen påvirket"
retroactive:
- silence: Fjern dæmpningen af alle eksisterende konti fra dette domæne
- suspend: Fjern udelukkelsen af alle eksisterende konti fra dette domæne
- title: Annuller domæne blokeringen for domænet %{domain}
- undo: Fortryd
- undo: Fortryd domain block
- view: Vis domæne blokering
+ silence: Fjern tavsgøring for eksisterende, berørte konti fra dette domæne
+ suspend: Fjern suspendering for eksisterende, berørte konti fra dette domæne
+ title: Annullér domæneblokering for domænet %{domain}
+ undo: Annullér
+ undo: Annullér domæneblokering
+ view: Vis domæneblokering
email_domain_blocks:
add_new: Tilføj ny
- created_msg: Tilføjede succesfuldt email domænet til sortliste
+ created_msg: E-maildomæne blokeret
delete: Slet
- destroyed_msg: Fjernede succesfuldt email domænet fra sortliste
+ destroyed_msg: E-maildomæne afblokeret
domain: Domæne
- empty: Ingen e-mail-domæner er i øjeblikket blokeret.
+ empty: Ingen e-maildomæner er pt. blokeret.
from_html: fra %{domain}
new:
create: Tilføj domæne
- title: Ny email blokade opslag
- title: Email sortliste
+ title: Blokere nyt e-maildomæne
+ title: Blokerede e-maildomæner
+ follow_recommendations:
+ description_html: "Følg-anbefalinger hjælpe nye brugere til hurtigt at finde interessant indhold. Når en bruger ikke har interageret nok med andre til at danne personlige følg-anbefalinger, anbefales disse konti i stedet. De genberegnes dagligt baseret på en blanding af konti med de fleste nylige engagementer og fleste lokale følger-antal for et givet sprog."
+ language: For sprog
+ status: Status
+ suppress: Undertryk følg-anbefaling
+ suppressed: Undertrykt
+ title: Følg-anbefalinger
+ unsuppress: Genetablér følg-anbefaling
instances:
+ back_to_all: Alle
+ back_to_limited: Begrænset
+ back_to_warning: Advarsel
by_domain: Domæne
+ delivery:
+ all: Alle
+ clear: Ryd leveringsfejl
+ restart: Genstart levering
+ stop: Stop levering
+ title: Levering
+ unavailable: Utilgængelig
+ unavailable_message: Levering utilgængelig
+ warning: Advarsel
+ warning_message:
+ one: Leveringsfejl %{count} dag
+ other: Leveringsfejl %{count} dage
delivery_available: Levering er tilgængelig
+ delivery_error_days: Leveringsfejldage
+ delivery_error_hint: Er levering ikke mulig i %{count} dage, markeres den automatisk som ikke-leverbar.
+ empty: Ingen domæner fundet.
known_accounts:
one: "%{count} kendt konto"
other: "%{count} kendte konti"
@@ -407,19 +484,19 @@ da:
title: Moderation
private_comment: Privat kommentar
public_comment: Offentlig kommentar
- title: Førderation
+ title: Federation
total_blocked_by_us: Blokeret af os
- total_followed_by_them: Fulgt af dem
- total_followed_by_us: Fulgt af os
- total_reported: Rapporter om dem
- total_storage: Vedhæftede medier
+ total_followed_by_them: Følges af dem
+ total_followed_by_us: Følges af os
+ total_reported: Anmeldelser om dem
+ total_storage: Medievedhæftninger
invites:
- deactivate_all: Deaktiver alle
+ deactivate_all: Deaktivér alle
filter:
all: Alle
available: Tilgængelig
expired: Udløbet
- title: Filtre
+ title: Filter
title: Invitationer
ip_blocks:
add_new: Opret regel
@@ -439,182 +516,227 @@ da:
pending_accounts:
title: Afventende konti (%{count})
relationships:
- title: "%{acct}'s relationer"
+ title: "%{acct}-relationer"
relays:
- add_new: Tilføj nyt relay
+ add_new: Tilføj ny videreformidler
delete: Slet
- description_html: Et federation relay er en mellemleds server der udveksler store mængder af offentlige trut mellem servere der abonnerer på og offentliggør til det. Det kan hjælpe små og mellemstore servere opdage indhold fra fediverset, hvilket der ellers ville kræve at lokale brugere manuelt følger andre folk på fjerne servere.
- disable: Deaktiver
+ description_html: En federationsvidereformidler er en mellemliggende server, der udveksler store mængder af offentlige trut imellem servere, som abonnerer på og publicerer til den. Det kan hjælpe små og mellemstore servere opdage indhold fra fediverset, hvilket ellers ville kræve at lokale brugere manuelt følger andre personer på fjernservere.
+ disable: Deaktivér
disabled: Deaktiveret
- enable: Aktiver
- enable_hint: Når dette er aktiveret, vil serveren abonnere på alle offentlige trut fra dette relay, og vil begynde at sende offentlige trut fra denne server dertil.
+ enable: Aktivér
+ enable_hint: Når aktiveret, vil serveren abonnere på alle offentlige indlæg fra denne videreformidler og vil begynde at sende denne servers offentlige indlæg til den.
enabled: Aktiveret
- inbox_url: Link til relay
- pending: Venter på godkendelse fra relæet
- save_and_enable: Gem og aktiver
- setup: Opsæt en videresendelses forbindelse
- signatures_not_enabled: Relæer fungerer ikke korrekt, mens sikker tilstand eller begrænset føderationstilstand er aktiveret
+ inbox_url: Videreformidler-URL
+ pending: Afventer videreformidlers godkendelse
+ save_and_enable: Gem og aktivér
+ setup: Opsæt en videreformidlerforbindelse
+ signatures_not_enabled: Videreformidlere fungerer ikke korrekt, mens sikker tilstand eller begrænset føderationstilstand er aktiveret
status: Status
- title: Videresendelser
+ title: Videreformidlere
report_notes:
- created_msg: Anmeldelse note blev oprettet!
- destroyed_msg: Anmeldelse note blev slettet!
+ created_msg: Anmeldelsesnotat er oprettet!
+ destroyed_msg: Anmeldelsesnotat er slettet!
reports:
account:
+ notes:
+ one: "%{count} notat"
+ other: "%{count} notater"
reports:
- one: "%{count} rapport"
- other: "%{count} rapporter"
+ one: "%{count} anmeldelse"
+ other: "%{count} anmeldelser"
action_taken_by: Handling udført af
- are_you_sure: Er du sikker?
+ are_you_sure: Sikker?
assign_to_self: Tildel til mig
assigned: Tildelt moderator
- by_target_domain: Domæne for rapporteret konto
+ by_target_domain: Domæne for anmeldt konto
comment:
none: Ingen
created_at: Anmeldt
- mark_as_resolved: Marker som værende løst
- mark_as_unresolved: Marker som værende uløst
+ forwarded: Videresendt
+ forwarded_to: Videresendt til %{domain}
+ mark_as_resolved: Markér som løst
+ mark_as_unresolved: Markér som ikke-løst
notes:
create: Tilføj notat
create_and_resolve: Løs med notat
- create_and_unresolve: Genåbne med notat
+ create_and_unresolve: Genåbn med notat
delete: Slet
- placeholder: Beskriv hvilke handlinger der er blevet udført, eller andre relevante opdateringer...
- reopen: Genåben anmeldelse
+ placeholder: Beskriv de udførte handlinger eller andre relevante opdateringer...
+ reopen: Genåbn anmeldelse
report: 'Anmeldelse #%{id}'
reported_account: Anmeldt konto
reported_by: Anmeldt af
resolved: Løst
- resolved_msg: Anmeldelse er sat til at være løst!
+ resolved_msg: Anmeldelse er nu løst!
status: Status
title: Anmeldelser
unassign: Utildel
- unresolved: Uløst
+ unresolved: Ikke-løst
updated_at: Opdateret
+ rules:
+ add_new: Tilføj regel
+ delete: Slet
+ description_html: Mens de fleste hævder at have læst og accepteret tjenestevilkårene, så læser folk normalt ikke disse, før et problem er opstået. Gør det lettere med ét blik at se din servers regler ved at opliste disse på en punktsliste. Prøv at holde individuelle regler korte og enkle, men undgå også at opdele dem i mange separate underpunkter.
+ edit: Redigér regel
+ empty: Ingen serverregler defineret endnu.
+ title: Serverregler
settings:
activity_api_enabled:
desc_html: Antal af lokalt opslåede statusser, aktive brugere, og nye registreringer i ugentlige opdelinger
- title: Offentliggør samlede statistikker vedrørende brugeraktivitet
+ title: Offentliggør samlede statistikker vedr. brugeraktivitet i API'en
bootstrap_timeline_accounts:
- desc_html: Opdel flere brugernavne ved hjælp af komma. Kun lokale og ulåste konti vil virke. Standard hvis tom er alle lokale administratorer.
+ desc_html: Adskil flere brugernavne med kommaer. Kun lokale og ulåste konti vil fungere. Standard, hvis tom, er alle lokale admins.
title: Standard følger for nye brugere
contact_information:
- email: Forretnings email
- username: Kontakt brugernavn
+ email: Forretningse-mail
+ username: Kontaktbrugernavn
custom_css:
desc_html: Ændre udseendet med CSS indlæst på hver side
- title: Brugerdefineret CSS
+ title: Tilpasset CSS
+ default_noindex:
+ desc_html: Påvirker alle brugere, som ikke selv har ændret denne indstilling
+ title: Fravælge som standard søgemaskineindekseringer for brugere
domain_blocks:
all: Til alle
disabled: Til ingen
- title: Vis domæne blokeringer
- enable_bootstrap_timeline_accounts:
- title: Aktiver standard følger for nye brugere
+ title: Vis domæneblokeringer
+ users: Til indloggede lokale brugere
+ domain_blocks_rationale:
+ title: Vis begrundelse
hero:
- desc_html: Vist på forsiden. Mindst 600x100px anbefales. Hvis ikke sat, vil dette falde tilbage til billedet fra serveren
- title: Billede af helt
+ desc_html: Vist på forsiden. Mindst 600x100px anbefales. Hvis ikke sat, benyttes serverminiaturebillede
+ title: Heltebillede
+ mascot:
+ desc_html: Vist på forsiden. Mindst 293x205px anbefales. Hvis ikke sat, benyttes standardmaskot
+ title: Maskotbillede
peers_api_enabled:
- desc_html: Domæne navne denne server er stødt på i fediverset
- title: Udgiv liste over opdagede server
+ desc_html: Domænenavne, denne server er stødt på i fediverset
+ title: Udgiv liste over opdagede server i API'en
preview_sensitive_media:
- desc_html: Forhåndsvisninger af links på andre websider vil vise et miniaturebillede selv hvis mediet er markeret som følsomt
- title: Vis følsomt medie i OpenGraph forhåndsvisninger
+ desc_html: Linkforhåndsvisninger på andre websteder vil vise et miniaturebillede, selv hvis mediet er markeret som sensitivt
+ title: Vis følsomme medier i OpenGraph-forhåndsvisninger
profile_directory:
- desc_html: Tillad bruger at kunne blive fundet
+ desc_html: Tillad at brugere kan findes
title: Aktivér profilmappe
registrations:
closed_message:
- desc_html: Vist på forsiden når registreringer er lukkede. Du kan bruge HTML tags
- title: Besked for lukkede registreringer
+ desc_html: Vist på forside, når tilmeldingsmuligheder er lukket. HTML-tags kan bruges
+ title: Lukket tilmelding-meddelelse
deletion:
- desc_html: Tillad alle at slette deres konto
- title: Åben konto sletning
+ desc_html: Tillad enhver at slette sin konto
+ title: Åbn kontosletning
min_invite_role:
disabled: Ingen
- title: Tillad invitationer af
+ title: Tillad invitationer fra
+ require_invite_text:
+ desc_html: Når tilmeldnger kræver manuel godkendelse, så gør “Hvorfor ønsker du at deltage?” tekstinput obligatorisk i stedet for valgfri
+ title: Nye brugere afkræves deltagelsesbegrundelse
registrations_mode:
modes:
- approved: Godkendelse påkrævet for tilmelding
+ approved: Godkendelse kræves for tilmelding
none: Ingen kan tilmelde sig
- open: Alle kan tilmelde sig
- title: Tilstand for registreringer
+ open: Enhver kan tilmelde sig
+ title: Tilmeldingstilstand
show_known_fediverse_at_about_page:
- desc_html: Når slået til, vil det vise trut fra hele det kendte fedivers på forhåndsvisning. Ellers vil det kun vise lokale trut.
- title: Vis kendte fedivers på tidslinje forhåndsvisning
+ desc_html: Når deaktiveret, begrænses den offentlige tidslinje linket fra indgangssiden til kun at vise lokalt indhold
+ title: Medtag federeret indhold på ikke-godkendt, offentlig tidslinjeside
show_staff_badge:
- desc_html: Vis personale emblem på en brugerside
- title: Vis personale emblem
+ desc_html: Vis et personaleemblem på en brugerside
+ title: Vis personaleemblem
site_description:
- desc_html: Introduktions afsnit på forsiden. Beskriv hvad der gør denne Mastodon server speciel og alt andet vigtigt. Du kan bruge HTML tags, især <a> og <em>.
- title: Beskrivelse af serveren
+ desc_html: Introduktionsafsnit på API'en. Beskriv, hvad der gør denne Mastodonserver speciel samt alt andet vigtigt. HTML tags kan bruges, især <a> og <em>.
+ title: Serverbeskrivelse
site_description_extended:
- desc_html: Et godt sted for placering af adfærdskodes, regler, retningslinjer og andre ting der gør din server unik. Du kan bruge HTML tags
- title: Brugerdefineret udvidet information
+ desc_html: Et god placering til dit adfærdskodes, regler, retningslinjer mv., som gør din server unik. HTML-tags kan bruges
+ title: Tilpasset udvidet information
site_short_description:
- desc_html: Vist på sidelinjen og meta tags. Beskriv hvad Mastodon er og hvad der gør denne server speciel i et enkelt afsnit. Hvis tomt, vil standard være beskrivelsen af serveren.
- title: Kort beskrivelse af serveren
+ desc_html: Vises på sidebjælke og metatags. Beskriv i et enkelt afsnit, hvad Mastodon er, og hvad der gør denne server speciel.
+ title: Kort serverbeskrivelse
site_terms:
- desc_html: Du kan skrive din egen privatlivpolitik, servicevilkår, eller lignende. Du kan bruge HTML tags
- title: Brugerdefineret servicevilkår
- site_title: Navn af serveren
- spam_check_enabled:
- title: Anti-spam automatisering
+ desc_html: Du kan skrive din egen fortrolighedspolitik, tjenestevilkår el.lign. HTML-tags kan bruges
+ title: Tilpasset tjenestevilkår
+ site_title: Servernavn
thumbnail:
- desc_html: Brugt til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales
- title: Miniaturebillede for serveren
+ desc_html: Bruges til forhåndsvisninger via OpenGraph og API. 1200x630px anbefales
+ title: Serverminiaturebillede
timeline_preview:
- desc_html: Vis offentlig tidslinje på landingssiden
- title: Tidslinje forhåndsvisning
- title: Indstillinger for side
+ desc_html: Vis link til offentlig tidslinje på indgangssiden og lad API'en tilgå den offentlige tidslinje uden godkendelse
+ title: Tillad ikke-godkendt tilgang til offentlig tidslinje
+ title: Webstedsindstillinger
+ trendable_by_default:
+ desc_html: Påvirker hashtags, som ikke blevet nægtet tidligere
+ title: Tillad hashtags at forme tendens uden forudgående gennemsyn
trends:
+ desc_html: Vis tidligere gennemgåede hashtags, som pt. trender
title: Populære hashtags
site_uploads:
- delete: Slet oplagt fil
+ delete: Slet uploadet fil
+ destroyed_msg: Websteds-upload blev slettet!
statuses:
back_to_account: Tilbage til kontosiden
batch:
delete: Slet
- nsfw_off: Marker som værende ikke følsomt
- nsfw_on: Marker som værende følsomt
+ nsfw_off: Markér som ikke-sensitivt
+ nsfw_on: Markér som sensitivt
deleted: Slettet
- failed_to_execute: Udførelsen kunne ikke lade sig gøre
+ failed_to_execute: Udførelse mislykkedes
media:
- title: Multimedier
- no_media: Ingen multimedier
- no_status_selected: Ingen statusser blev ændret eller ingen blev valgt
- title: Konto statusser
- with_media: Med multimedier
+ title: Medier
+ no_media: Ingen medier
+ no_status_selected: Ingen indlæg ændret, da ingen var valgt
+ title: Kontoindlæg
+ with_media: Med medier
+ system_checks:
+ database_schema_check:
+ message_html: Databasemigreringer afventer. Kør dem for at sikre den forventede adfærd fra applikationen
+ rules_check:
+ action: Håndtér serverregler
+ message_html: Ingen serverregler defineret.
+ sidekiq_process_check:
+ message_html: Ingen Sidekiq-proces kører for %{value}-kø(er). Gennemgå din Sidekiq-opsætning
tags:
- accounts_today: Unikke brug i dag
- accounts_week: Unikke brug denne uge
- context: Kontekst
- directory: I mappe
- in_directory: "%{count} i mappe"
- last_active: Sidst aktiv
+ accounts_today: Unikke anvendelser i dag
+ accounts_week: Unikke anvendelser denne uge
+ breakdown: Dagens anvendelse fordelt på kilde
+ last_active: Senest aktiv
most_popular: Mest populære
most_recent: Seneste
name: Hashtag
- review: Gennemgå status
+ review: Gennemsynsstatus
reviewed: Gennemgået
title: Hashtags
trending_right_now: Populære lige nu
unique_uses_today: "%{count} indlæg i dag"
- unreviewed: Ikke gennemlæst
+ unreviewed: Ikke gennemgået
updated_msg: Hashtag-indstillinger opdateret
title: Administration
warning_presets:
add_new: Tilføj ny
delete: Slet
+ edit_preset: Redigér advarselsforvalg
+ empty: Ingen advarselsforvalg defineret endnu.
+ title: Håndtérr advarselsforvalg
admin_mailer:
+ new_pending_account:
+ body: Detaljerne for den nye konto fremgår nedenfor. Du kan godkende eller afvise denne ansøgning.
+ subject: Ny konto til gennemgang på %{instance} (%{username})
new_report:
body: "%{reporter} har anmeldt %{target}"
body_remote: Nogen fra %{domain} har anmeldt %{target}
subject: Ny anmeldelse for %{instance} (#%{id})
+ new_trending_tag:
+ body: 'Hashtagget #%{name} teender i dag, men er ikke tidligere blevet gennemgået. Det vises ikke offentligt, medmindre du tillader det eller blot gemme formularen, som den er, for aldrig at høre om det igen.'
+ subject: Nyt hashtag til gennemsyn på %{instance} (#%{name})
aliases:
add_new: Opret alias
+ created_msg: Nyt alias oprettet. Du kan nu påbegynde flytningen fra den gamle konto.
+ deleted_msg: Alias fjernet. Flytning fra dén konto til denne vil ikke længere være muligt.
empty: Du har ingen aliasser.
+ hint_html: Ønsker du at flytte fra en anden konto til denne, kan du hér oprette det alias, der kræves, for at du kan fortsætte med at flytte følgere fra den gamle konto til denne. Denne handling er i sig selv harmløs og reversibel. Kontomigreringen påbegyndes fra den gamle konto.
+ remove: Fjern aliaslinkning
appearance:
advanced_web_interface: Avanceret webgrænseflade
+ advanced_web_interface_hint: 'Ønsker du udnytte hele skærmbredden, lader den avancerede webgrænseflade dig opsætte mange forskellige kolonner for at se så meget information på samme tid som ønsket: Hjem, notifikationer, federeret tidslinje, et hvilket som helst antal lister og hashtags.'
animations_and_accessibility: Animationer og tilgængelighed
confirmation_dialogs: Bekræftelsesdialoger
discovery: Opdagelse
@@ -622,63 +744,74 @@ da:
body: Mastodon oversættes af frivillige.
guide_link: https://da.crowdin.com/project/mastodon
guide_link_text: Alle kan bidrage.
- sensitive_content: Følsomt indhold
+ sensitive_content: Sensitivt indhold
+ toot_layout: Indlægslayout
application_mailer:
- notification_preferences: Ændre email præferencer
+ notification_preferences: Skift e-mailpræferencer
salutation: "%{name}"
- settings: 'Ændre email præferencer: %{link}'
- view: 'Se:'
- view_profile: Se profil
- view_status: Se status
+ settings: 'Skift e-mailpræferencer: %{link}'
+ view: 'Vis:'
+ view_profile: Vis profil
+ view_status: Vis status
applications:
- created: Applikation blev oprettet
- destroyed: Applikation er blevet slettet
- invalid_url: Det angivne URL er ugyldigt
- regenerate_token: Regenerer adgangs token
- token_regenerated: Adgangs token blev regenereret
- warning: Vær meget forsigtig med disse data. Del dem aldrig med nogen!
- your_token: Din adgangs token
+ created: Applikation oprettet
+ destroyed: Applikation slettet
+ invalid_url: Den angivne URL er ugyldig
+ regenerate_token: Regenerér adgangstoken
+ token_regenerated: Adgangstoken regenereret
+ warning: Vær meget påpasselig med disse data. Del dem aldrig med nogen!
+ your_token: Dit adgangstoken
auth:
apply_for_account: Anmod om en invitation
- change_password: Kodeord
+ change_password: Adgangskode
+ checkbox_agreement_html: Jeg accepterer serverreglerne og tjenestevilkårene
+ checkbox_agreement_without_rules_html: Jeg accepterer tjenestevilkårene
delete_account: Slet konto
- delete_account_html: Hvis du ønsker at slette din konto, kan du gøre det her. Du vil blive bedt om bekræftelse.
+ delete_account_html: Ønsker du at slette din konto, kan du gøre dette hér. Du vil blive bedt om bekræftelse.
description:
- prefix_invited_by_user: "@%{name} inviterer dig til at deltage i denne Mastodons server!"
+ prefix_invited_by_user: "@%{name} inviterer dig til at deltage på denne Mastodon-server!"
prefix_sign_up: Tilmeld dig Mastodon i dag!
- didnt_get_confirmation: Har du endnu ikke modtaget instrukser for bekræftelse?
- dont_have_your_security_key: Har du ikke dine sikkerhedsnøgler?
- forgot_password: Glemt dit kodeord?
- invalid_reset_password_token: Adgangskode nulstillings token er ugyldig eller udløbet. Anmod venligst om en ny.
+ suffix: Du vil med en konto kunne følge personer, indsende opdateringer og udveksle beskeder med brugere fra enhver Mastodon-server, og meget mere!
+ didnt_get_confirmation: Ikke modtaget nogle bekræftelsesinstruktioner?
+ dont_have_your_security_key: Har ikke din sikkerhedsnøgle?
+ forgot_password: Glemt din adgangskode?
+ invalid_reset_password_token: Adgangskodenulstillingstoken ugyldigt eller udløbet. Anmod om et nyt.
+ link_to_otp: Angiv en tofaktorkode fra din mobil, eller en gendannelseskode
+ link_to_webauth: Brug din sikkerhedsnøgleenhed
login: Log ind
logout: Log ud
migrate_account: Flyt til en anden konto
- migrate_account_html: Hvis du ønsker at omdirigere denne konto til en anden, kan du gøre det her.
- or_log_in_with: Eller log in med
+ migrate_account_html: Ønsker du at omdirigere denne konto til en anden, kan du opsætte dette hér.
+ or_log_in_with: Eller log ind med
providers:
cas: CAS
saml: SAML
register: Opret dig
registration_closed: "%{instance} accepterer ikke nye medlemmer"
- resend_confirmation: Gensend bekræftelses instrukser
- reset_password: Nulstil kodeord
+ resend_confirmation: Gensend bekræftelsesinstruktioner
+ reset_password: Nulstil adgangskode
security: Sikkerhed
- set_new_password: Sæt et nyt kodeord
+ set_new_password: Opsæt ny adgangskode
setup:
- email_settings_hint_html: Bekræftelsesmailen blev sendt til %{email}. Hvis denne e-mailadresse ikke er korrekt, kan du ændre den i kontoindstillinger.
+ email_below_hint_html: Er nedenstående e-mailadresse forkert, kan du rette den hér og modtage en ny bekræftelses-e-mail.
+ email_settings_hint_html: Bekræftelsese-mailen er sendt til %{email}. Er denne e-mailadresse forkert, kan du rette den via kontoindstillingerne.
title: Opsætning
status:
account_status: Kontostatus
- confirming: Venter på at e-mail bekræftelsen er fuldført.
- trouble_logging_in: Har du problemer med at logge på?
+ confirming: Afventer færdiggørelse af e-mailbekræftelse.
+ functional: Din konto er fuldt operationel.
+ pending: Din ansøgning afventer gennemgang af vores medarbejdere. Dette kan tage noget tid. Du modtager en e-mail, hvis din ansøgning godkendes.
+ redirecting_to: Din konto er inaktiv, da den pt. er omdirigerer til %{acct}.
+ too_fast: Formularen indsendt for hurtigt, forsøg igen.
+ trouble_logging_in: Indlogningsproblemer?
use_security_key: Brug sikkerhedsnøgle
authorize_follow:
already_following: Du følger allerede denne konto
- already_requested: Du har allerede sendt en følgeanmodning til denne konto
- error: Der opstod desværre en fejl under søgningen af denne fjerne konto
+ already_requested: Du har allerede sendt en følgeanmodning til den konto
+ error: Desværre opstod en fejl under søgning af fjernkontoen
follow: Følg
- follow_request: 'Du har anmodet om at følge:'
- following: 'Succes! Du følger nu:'
+ follow_request: 'Du har sendt en følgeanmodning til:'
+ following: 'Accepteret! Du følger nu:'
post_follow:
close: Du kan også bare lukke dette vindue.
return: Vis brugerens profil
@@ -686,13 +819,13 @@ da:
title: Følg %{acct}
challenge:
confirm: Fortsæt
- hint_html: "Tip: We won't ask you for your password again for the next hour."
+ hint_html: "Tip: Du bliver ikke anmodet om din adgangskode igen den næste time."
invalid_password: Ugyldig adgangskode
- prompt: Bekræft din adgangskode for at fortsætte
+ prompt: Bekræft adgangskode for at fortsætte
crypto:
errors:
- invalid_key: er ikke en gyldig Ed25519 eller Curve25519 nøgle
- invalid_signature: er ikke en gylidig Ed25519 signatur
+ invalid_key: er ikke en gyldig Ed25519- eller Curve25519-nøgle
+ invalid_signature: er ikke en gylidig Ed25519-signatur
date:
formats:
default: "%b %d, %Y"
@@ -700,131 +833,154 @@ da:
datetime:
distance_in_words:
about_x_hours: "%{count}t"
- about_x_months: "%{count} måneder"
- about_x_years: "%{count}år"
- almost_x_years: "%{count}år"
- half_a_minute: Lige nu
- less_than_x_minutes: "%{count}m"
- less_than_x_seconds: Lige nu
- over_x_years: "%{count}år"
- x_days: "%{count}d"
- x_minutes: "%{count}m"
- x_months: "%{count}md"
- x_seconds: "%{count}s"
+ about_x_months: "%{count} md"
+ about_x_years: "%{count} år"
+ almost_x_years: "%{count} år"
+ half_a_minute: Netop nu
+ less_than_x_minutes: "%{count} m"
+ less_than_x_seconds: Netop nu
+ over_x_years: "%{count} år"
+ x_days: "%{count} d"
+ x_minutes: "%{count} m"
+ x_months: "%{count} md"
+ x_seconds: "%{count} s"
deletes:
- challenge_not_passed: De oplysninger, du indtastede var ikke korrekte
- confirm_password: Indtast dit nuværende kodeord for at bekræfte din identitet
- confirm_username: Indtast dit brugernavn for at bekræfte proceduren
+ challenge_not_passed: De angivne oplysninger er forkerte
+ confirm_password: Angiv din nuværende adgangskode for at bekræfte din identitet
+ confirm_username: Angiv dit brugernavn for at bekræfte proceduren
proceed: Slet konto
- success_msg: Din konto er nu blevet slettet
+ success_msg: Din konto er nu slettet
warning:
- email_change_html: Du kan ændre din e-mail-adresse uden at slette din konto
+ before: 'Inder der fortsættes, læs venligst disse notater omhyggeligt:'
+ caches: Indhold, cachelagret af andre servere, kan fortsat eksistere
+ data_removal: Dine indlæg og andre data fjernes permanent
+ email_change_html: Du kan skifte e-mailadresse uden at slette din konto
+ email_contact_html: Hvis det stadig ikke ankommer, kan du sende en e-mail til %{email} for hjælp
+ email_reconfirmation_html: Modtager du ikke bekræftelsese-mailen, kan du anmode om en ny
+ irreversible: Du vil ikke kunne gendanne/genaktivere din konto
+ more_details_html: For yderligere oplysningerer, tjek fortrolighedspolitikken.
username_available: Dit brugernavn vil blive tilgængeligt igen
username_unavailable: Dit brugernavn vil forblive utilgængeligt
directories:
directory: Profilliste
- explanation: Opdag brugere baseret på deres interesser
+ explanation: Find brugere baseret på deres interesser
explore_mastodon: Uforsk %{title}
domain_validator:
invalid_domain: er ikke et gyldigt domænenavn
errors:
- '400': The request you submitted was invalid or malformed.
+ '400': Din indsendte anmodning er ugyldig eller fejlbehæftet.
'403': Du har ikke tilladelse til at se denne side.
'404': Den side du leder efter findes ikke.
- '406': This page is not available in the requested format.
- '410': Den side du leder efter findes ikke mere.
+ '406': Denne side er ikke tilgængelig i det anmodede format.
+ '410': Den side, du leder efter, findes ikke længere.
'422':
- content: Sikkerhedsbekræftelse mislykkedes. Blokerer du cookies?
- title: Sikkerheds godkendelse mislykkedes
- '429': Droslet
+ content: Sikkerhedsbekræftelse mislykkedes. Blokeres cookies?
+ title: Sikkerhedsbekræftelse mislykkedes
+ '429': For mange anmodninger
'500':
- content: Beklager men der gik noget galt i vores ende.
- title: Siden er ikke korrekt
- '503': Siden kunne ikke serveres på grund af en midlertidig serverfejl.
- noscript_html: For at bruge Mastodon web applikationen, aktiver JavaScript. Alternativt kan du prøve en af disse apps til Mastodon for din platform.
+ content: Beklager, noget gik galt hos os.
+ title: Denne side er forkert
+ '503': Siden kunne ikke vises grundet en midlertidig serverfejl.
+ noscript_html: For brug af Mastodon-webapplikationen, så aktivér JavaScript. Alternativt, prøv en af disse apps til Mastodon til din platform.
existing_username_validator:
not_found: kunne ikke finde en lokal bruger med dette brugenavn
not_found_multiple: kunne ikke finde %{usernames}
exports:
archive_takeout:
date: Dato
- download: Hent dit arkiv
- hint_html: Du kan anmode om et arkiv af dine trut og oplagt medie. Den eksporterede data vil være i ActivityPub formattet, læseligt af enhvert kompatibel program. Du kan anmode om et arkiv en gang om ugen.
- in_progress: Udarbejder dit arkiv...
+ download: Download dit arkiv
+ hint_html: Du kan anmode om et arkiv af dine trut og oplagt medie. Den eksporterede data vil være i ActivityPub formattet, læseligt af enhvert kompatibelt program. Du kan anmode om et arkiv én gang om ugen.
+ in_progress: Kompilerer dit arkiv...
request: Anmod om dit arkiv
size: Størrelse
blocks: Du blokerer
bookmarks: Bogmærker
csv: CSV
- domain_blocks: Domæne blokeringer
+ domain_blocks: Domæneblokeringer
lists: Lister
- mutes: Du dæmper
- storage: Medie lager
+ mutes: Du tavsgør
+ storage: Medielagerplads
featured_tags:
- add_new: Tilføj ny
+ add_new: Tilføj nyt
errors:
- limit: Du har allerede vist det maksimale antal hashtags
+ limit: Du har allerede fremhævet det maksimale antal hashtags
+ hint_html: "Hvad er fremhævede hashtags? De vises i en fremtrædende position på din offentlige profil og giver folk mulighed for at gennemse dine offentlige indlæg specifikt under disse hashtags. De er et fantastisk værktøj til at holde styr på kreative værker eller langsigtede projekter."
filters:
contexts:
account: Profiler
- home: Hjemme tidslinje
+ home: Hjemmetidslinje
notifications: Notifikationer
public: Offentlig tidslinje
- thread: Samtaler
+ thread: Konversationer
edit:
- title: Rediger filter
+ title: Redigere filter
errors:
invalid_context: Ingen eller ugyldig kontekst angivet
- invalid_irreversible: Uigenkaldelig filtrering virker kun med hjem eller notifikations kontekst
+ invalid_irreversible: Uigenkaldelig filtrering virker kun med hjemme- eller notifikationskontekster
index:
delete: Slet
empty: Du har ingen filtre.
- title: Filtrer
+ title: Filtre
new:
title: Tilføj nyt filter
footer:
developers: Udviklere
more: Mere…
resources: Ressourcer
- trending_now: Hot lige nu
+ trending_now: Trender lige nu
generic:
all: Alle
- changes_saved_msg: Ændringerne blev gemt!
+ changes_saved_msg: Ændringerne er gemt!
copy: Kopier
delete: Slet
- order_by: Sorter efter
+ no_batch_actions_available: Ingen multihandlinger tilgængelige på denne side
+ order_by: Sortér efter
save_changes: Gem ændringer
validation_errors:
- one: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende fejl forneden
- other: Der er noget der ikke er helt som det bør være! Tag lige et kig på følgende %{count} fejl forneden
+ one: Noget er ikke er helt i vinkel! Tjek fejlen nedenfor
+ other: Noget er ikke er helt i vinkel! Tjek de %{count} fejl nedenfor
+ html_validator:
+ invalid_markup: 'indeholder ugyldig HTML-markup: %{error}'
identity_proofs:
active: Aktiv
- authorize: Ja, tillad
+ authorize: Ja, godkend
+ authorize_connection_prompt: Godkend denne kryptografiske forbindelse?
+ errors:
+ failed: Den kryptografiske forbindelse mislykkedes. Prøv igen fra %{provider}.
+ keybase:
+ invalid_token: Keybase-tokens er hashes af signaturer og skal udgøre 66 hex tegn
+ verification_failed: Keybase genkender ikke dette token som Keybasebruger %{kb_username}s signatur. Forsøg igen fra Keybase.
+ wrong_user: Kan ikke oprette et bevis til %{proving}, når indlogget %{current}. Log ind som %{proving} og forsøg igen.
+ explanation_html: Her kan du kryptografisk forbinde dine andre identiteter fra andre platforme, såsom Keybase. Dette lader andre personer sende dig krypterede beskeder på disse platforme og giver dem mulighed for at stole på, at det indhold, du sender dem, kommer fra dig.
i_am_html: Jeg er %{username} på %{service}.
identity: Identitet
inactive: Inaktiv
publicize_checkbox: 'Og toot dette:'
publicize_toot: 'Det er bevist! Jeg er %{username} på %{service}: %{url}'
remove: Fjern bevis fra konto
- removed: Beviset er fjernet fra kontoen
- status: Status for verifikation
+ removed: Bevis fjernet fra kontoen
+ status: Verifikationsstatus
view_proof: Se bevis
imports:
+ errors:
+ over_rows_processing_limit: indeholder mere end %{count} rækker
modes:
merge: Sammenflet
+ merge_long: Bibehold eksisterende poster og tilføj nye
overwrite: Overskriv
- preface: Du kan importere data du har eksporteret fra en anden server, så som en liste over folk du følger eller blokerer.
- success: Dine data blev succesfuldt uploaded og vil nu blive behandlet hurtigst muligt
+ overwrite_long: Erstat aktuelle poster med de nye
+ preface: Du kan importere data, du har eksporteret fra en anden server, såsom en liste over folk du følger eller blokerer.
+ success: Dine data er uploadet og vil blive behandlet hurtigst muligt
types:
blocking: Blokeringsliste
bookmarks: Bogmærker
- domain_blocking: Domæne blokeringsliste
+ domain_blocking: Domæneblokeringsliste
following: Følgningsliste
- muting: Liste over dæmpninger
- upload: Læg op
+ muting: Tavsgørelsesliste
+ upload: Upload
in_memoriam_html: Til minde om.
invites:
- delete: Deaktiver
+ delete: Deaktivér
expired: Udløbet
expires_in:
'1800': 30 minutter
@@ -834,79 +990,104 @@ da:
'604800': 1 uge
'86400': 1 dag
expires_in_prompt: Aldrig
- generate: Generer
- invited_by: 'Du er blevet inviteret af:'
+ generate: Generér invitationslink
+ invited_by: 'Du blev inviteret af:'
max_uses:
one: 1 benyttelse
other: "%{count} benyttelser"
max_uses_prompt: Ubegrænset
- prompt: Generer og del links med andre for at give dem adgang til denne server
+ prompt: Generér og del links med andre for at give dem adgang til denne server
table:
expires_at: Udløber
uses: Benyttelser
- title: Inviter folk
+ title: Invitere personer
lists:
errors:
- limit: Du har nået det højeste antal lister
+ limit: Maks. listeantal nået
media_attachments:
validations:
- images_and_video: Kan ikke vedhæfte en video til en status der allerede har billeder
- not_ready: Kan ikke vedhæfte filer, der ikke er færdige med behandlingen. Prøv igen om et øjeblik!
- too_many: Kan ikke vedhæfte mere en 4 filer
+ images_and_video: En video kan ikke vedhæftes et indlæg med billedindhold
+ not_ready: Filer under behandling kan ikke vedhæftes. Forsøg igen senere!
+ too_many: Maks. 4 filer kan vedhæftes
migrations:
- acct: username@domain af den nye konto
+ acct: Flyttet til
+ cancel: Afbryd omdirigering
+ cancel_explanation: Afbrydelse af omdirigeringen vil genaktivere din nuværende konto, men bringer ikke følgerne tilbage, som er blevet flyttet til den anden konto.
+ cancelled_msg: Omdirigeringen afbrudt.
errors:
+ already_moved: er den samme konto, som du allerede er flyttet til
missing_also_known_as: er ikke et alias for denne konto
- move_to_self: kan ikke være den nuværende konto
- not_found: kunne ikke bive fundet
+ move_to_self: må ikke være den nuværende konto
+ not_found: kunne ikke findes
on_cooldown: Du er på nedkøling
- followers_count: Følgere på tidspunktet for flytningen
+ followers_count: Følgere på flytningstidspunktet
incoming_migrations: Flytter fra en anden konto
- past_migrations: Tidligere migrationer
+ incoming_migrations_html: For at flytte fra en anden konto til denne skal der først oprettes et kontoalias.
+ moved_msg: Din konto omdirigeres nu til %{acct} og dine følgere overflyttes.
+ not_redirecting: Din konto omdirigerer pt. ikke til nogen anden konto.
+ on_cooldown: Du har for nylig migreret din konto. Denne funktion tilgængeliggøres igen om %{count} dage.
+ past_migrations: Tidligere migreringer
proceed_with_move: Flyt følgere
redirected_msg: Din konto omdirigerer nu til %{acct}.
redirecting_to: Din konto omdirigerer til %{acct}.
+ set_redirect: Opsæt omdirigering
warning:
- other_data: Ingen andre data vil blive flyttet automatisk
+ backreference_required: Den nye konto skal først opsættes til at tilbage-referere til denne
+ before: 'Inder der fortsættes, læs venligst disse notater omhyggeligt:'
+ cooldown: Efter flytningen er der en venteperiode, hvor kontoen ikke kan flyttes igen
+ disabled_account: Efterfølgende er din nuværende konto ikke fuldt funktionsdygtig, der er dog adgang til dataeksport samt genaktivering.
+ followers: Denne handling vil flytte alle følgere fra den aktuelle konto til den nye ditto
+ only_redirect_html: Alternativt kan du oprette en omdirigering for din profil alene.
+ other_data: Ingen øvrige data flyttes automatisk
+ redirect: Din nuværende kontoprofil opdateres med en omdirigeringsnotits og ekskluderes fra søgninger
moderation:
title: Moderatering
+ move_handler:
+ carry_blocks_over_text: Denne bruger er flyttet fra %{acct}, som du har haft blokeret.
+ carry_mutes_over_text: Denne bruger er flyttet fra %{acct}, som du har haft tavsgjort.
+ copy_account_note_text: 'Denne bruger er flyttet fra %{acct}, her er dine tidligere noter om dem:'
notification_mailer:
digest:
action: Se alle notifikationer
- body: Her er en kort gennemgang af de beskeder du gik glip af siden dit sidste besøg den %{since}
+ body: Her er et kort resumé af de beskeder, du er gået glip af siden dit seneste besøg d. %{since}
mention: "%{name} nævnte dig i:"
new_followers_summary:
- one: Du har også fået dig en ny følger mens du var væk! Sådan!
- other: Du har også fået %{count} nye følgere mens du var væk! Fantastisk!
+ one: Du har også fået en ny følger, mens du var væk! Sådan!
+ other: Du har også fået %{count} nye følgere, mens du var væk! Sådan!
subject:
- one: "1 ny notifikation siden du sidst var her \U0001F418"
- other: "%{count} nye notifikationer siden du sidst var her \U0001F418"
+ one: "1 ny notifikation siden dit senest besøg \U0001F418"
+ other: "%{count} nye notifikationer siden dit senest besøg \U0001F418"
title: Mens du var væk...
favourite:
- body: 'Din status blev favoriseret af %{name}:'
- subject: "%{name} favoriserede din status"
+ body: 'Dit indlæg blev favoriseret af %{name}:'
+ subject: "%{name} favoriserede dit indlæg"
title: Ny favorit
follow:
body: "%{name} følger dig nu!"
subject: "%{name} følger dig nu"
title: Ny følger
follow_request:
- action: Håndter følgeranmodninger
+ action: Håndtér følgeanmodninger
body: "%{name} har anmodet om at følge dig"
- subject: 'Følger afventer: %{name}'
- title: Ny følgeranmodning
+ subject: 'Afventende følger: %{name}'
+ title: Ny følgeanmodning
mention:
- action: Svar
+ action: Besvar
body: 'Du blev nævnt af %{name} i:'
subject: Du blev nævnt af %{name}
title: Ny omtale
+ poll:
+ subject: En afstemning fra %{name} er afsluttet
reblog:
- body: 'Din status blev fremhævet af %{name}:'
- subject: "%{name} fremhævede din status"
- title: Ny fremhævelse
+ body: 'Dit indlæg blev boostet af %{name}:'
+ subject: "%{name} boostede dit indlæg"
+ title: Nyt boost
+ status:
+ subject: "%{name} har netop postet"
notifications:
- email_events: Begivenheder for e-mail-meddelelser
- other_settings: Andre indstillinger for notifikationer
+ email_events: Begivenheder for e-mailnotifikationer
+ email_events_hint: 'Vælg begivenheder, som notifikationer skal modtages for:'
+ other_settings: Andre notifikationsindstillinger
number:
human:
decimal_units:
@@ -914,40 +1095,50 @@ da:
units:
billion: mia.
million: mio.
+ quadrillion: kvd.
+ thousand: T
+ trillion: tri.
otp_authentication:
- enable: Aktiver
- wrong_code: Den indtastede kode var ugyldig! Er serverens tid og enhedstid korrekt?
+ code_hint: Angiv koden genereret af din godkendelses-app for at bekræfte
+ description_html: Aktiverer du tofaktorgodkendelse vha. af en godkendelses-app, vil du skulle benytte din mobil, der genererer det token, der skal angives ved indlogning.
+ enable: Aktivér
+ instructions_html: "Skan denne QR-kode i Google Autehnticator eller en lign. TOTP-app på din mobil. Fra nu af, vil appen generere tokens, som vil skulle angives ifm. indlogning."
+ manual_instructions: 'Kan QR-koden ikke skannes, så du er nødt til manuelt at angive den, er her en simplel tekst-hemmelighed:'
+ setup: Sæt op
+ wrong_code: Den angivne kode er ugyldig! Er server- og enhedsklokkeslæt korrekte?
pagination:
newer: Nyere
next: Næste
older: Ældre
- prev: Forrige
- truncate: "...…"
+ prev: Foregående
+ truncate: "…"
polls:
errors:
already_voted: Du har allerede stemt i denne afstemning
- duplicate_options: indeholder dublerede elementer
+ duplicate_options: indeholder dubletelementer
duration_too_long: er for langt ude i fremtiden
- duration_too_short: er for tidligy
+ duration_too_short: er for tidligt
expired: Denne afstemning er allerede afsluttet
- invalid_choice: Den valgte stemmeindstilling findes ikke
- over_character_limit: kan ikke være længere end %{max} tegn hver
- too_few_options: skal have mere end et element
- too_many_options: kan ikke indeholde flere end %{max} elementer
+ invalid_choice: Den valgte afstemningsmulighed findes ikke
+ over_character_limit: må maks. udgøre %{max} tegn hver
+ too_few_options: skal have flere end ét element
+ too_many_options: må maks. indeholde %{max} elementer
preferences:
other: Andet
+ posting_defaults: Indlægsstandarder
public_timelines: Offentlige tidslinjer
reactions:
errors:
- limit_reached: Grænsen for forskellige reaktioner er nået
+ limit_reached: Grænse for forskellige reaktioner nået
unrecognized_emoji: er ikke en genkendt emoji
relationships:
- activity: Aktivitet for konto
+ activity: Kontoaktivitet
+ dormant: I dvale
follow_selected_followers: Følg valgte følgere
followers: Følgere
following: Følger
invited: Inviteret
- last_active: Sidst aktiv
+ last_active: Senest aktiv
most_recent: Seneste
moved: Flyttet
mutual: Fælles
@@ -955,103 +1146,119 @@ da:
relationship: Relation
remove_selected_domains: Fjern alle følgere fra de valgte domæner
remove_selected_followers: Fjern valgte følgere
- remove_selected_follows: Følg ikke valgte brugere
- status: Status for konto
+ remove_selected_follows: Følg ikke længere valgte brugere
+ status: Kontostatus
remote_follow:
- acct: Indtast dit brugernavn@domæne du vil handle fra
- missing_resource: Kunne ikke finde det påkrævede omdirigerings link for din konto
- no_account_html: Har du ikke en konto? Du kan oprette dig her
+ acct: Angiv dit brugernavn@domæne du vil agere fra
+ missing_resource: Nødvendige omdirigerings-URL til din konto ikke fundet
+ no_account_html: Har ingen konto? Du kan oprette en hér
proceed: Fortsæt for at følge
prompt: 'Du er ved at følge:'
+ reason_html: "Hvorfor er dette skridt nødvendigt? %{instance} er måske ikke den server, hvor du er registreret, så du skal først omdirigeres til din hjemmeserver."
+ remote_interaction:
+ favourite:
+ proceed: Fortsæt for at føje til favorit
+ prompt: 'Gør dette indlæg til favorit:'
+ reblog:
+ proceed: Fortsæt for at booste
+ prompt: 'Du ønsker at booste dette indlæg:'
+ reply:
+ proceed: Fortsæt for at besvare
+ prompt: 'Du ønsker at besvare dette indlæg:'
scheduled_statuses:
+ over_daily_limit: Du har nået dagsgrænsen på %{limit} planlagte indlæg
+ over_total_limit: Du har nået grænsen på %{limit} planlagte indlæg
too_soon: Den planlagte dato skal være i fremtiden
sessions:
- activity: Sidste aktivitet
+ activity: Seneste aktivitet
browser: Browser
browsers:
- alipay: Ali-pay
- blackberry: Blackberry OS
- chrome: Google Chrome
- edge: Microsoft edge
- electron: Elektron
- firefox: Mozilla Firefox
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
generic: Ukendt browser
ie: IE
- micro_messenger: Micromessenger
- nokia: Nokia S40 ovi browser
- opera: Opera browser
- otter: Odder
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
phantom_js: FantomJS
- qq: QQ browser
- safari: Apple Safari
+ qq: QQ Browser
+ safari: Safari
uc_browser: UCbrowser
- weibo: Weibo browser
- current_session: Nuværrende session
+ weibo: Weibo
+ current_session: Aktuelle session
description: "%{browser} på %{platform}"
- explanation: Disse er de web browsere der på nuværende tidspunkt er logget ind på din Mastodon konto.
+ explanation: Disse er de webbrowsere, som pt. er pålogget din Mastodon-konto.
ip: IP
platforms:
- adobe_air: Adobe air
+ adobe_air: Adobe Air
android: Android
- blackberry: Blackberry OS
- chrome_os: Chromeos
- firefox_os: Firefox Os
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
ios: iOS
linux: Linux
- mac: Mac.
+ mac: macOS
other: ukendt platform
- windows: Microsoft windows
- windows_mobile: Windows mobil
- windows_phone: Windows fon
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
revoke: Tilbagekald
- revoke_success: Sessionen blev tilbagekaldt
+ revoke_success: Session tilbagekaldt
title: Sessioner
settings:
account: Konto
account_settings: Kontoindstillinger
- aliases: Konto-aliaser
+ aliases: Kontoaliaser
appearance: Udseende
authorized_apps: Godkendte apps
back: Tilbage til Mastodon
- delete: Sletning af konto
+ delete: Kontosletning
development: Udvikling
- edit_profile: Rediger profil
- export: Data eksportering
+ edit_profile: Redigér profil
+ export: Dataeksport
featured_tags: Fremhævede hashtags
- import: Importer
- import_and_export: Importer og eksporter
- migrate: Konto migrering
+ identity_proofs: Identitetsbeviser
+ import: Import
+ import_and_export: Importér og eksportér
+ migrate: Kontomigrering
notifications: Notifikationer
preferences: Præferencer
profile: Profil
relationships: Følger og følgere
- two_factor_authentication: To-faktor godkendelse
+ two_factor_authentication: Tofaktorgodkendelse
webauthn_authentication: Sikkerhedsnøgler
statuses:
attached:
audio:
one: "%{count} lyd"
other: "%{count} lyd"
- description: 'Vedhæftede: %{attached}'
+ description: 'Vedhæftet: %{attached}'
image:
one: "%{count} billede"
other: "%{count} billeder"
video:
one: "%{count} video"
other: "%{count} videoer"
- boosted_from_html: Fremhævet fra %{acct_link}
- content_warning: 'Advarsel om indhold: %{warning}'
+ boosted_from_html: Boostet fra %{acct_link}
+ content_warning: 'Indholdsadvarsel: %{warning}'
disallowed_hashtags:
one: 'indeholdte et ikke tilladt hashtag: %{tags}'
other: 'indeholdte de ikke tilladte hashtags: %{tags}'
- language_detection: Opfang automatisk sprog
+ errors:
+ in_reply_not_found: Indlægget, du forsøger at besvare, ser ikke ud til at findes.
+ language_detection: Detektér sprog automatisk
open_in_web: Åbn i browser
- over_character_limit: grænsen på %{max} tegn er overskredet
+ over_character_limit: grænsen på %{max} tegn er nået
pin_errors:
- limit: Du har allerede fastgjort det maksimale antal trut
- ownership: Du kan ikke fastgøre en anden persons trut
- private: Ikke offentlige trut kan ikke blive fastgjort
- reblog: Fremhævede trut kan ikke fastgøres
+ limit: Du har allerede fastgjort det maksimale antal indlæg
+ ownership: Andres indlæg kan ikke fastgøres
+ private: Ikke-offentlige indlæg kan ikke fastgjøres
+ reblog: Et boost kan ikke fastgøres
poll:
total_people:
one: "%{count} person"
@@ -1060,110 +1267,127 @@ da:
one: "%{count} stemme"
other: "%{count} stemmer"
vote: Stem
- show_more: Vis mere
+ show_more: Vis flere
show_newer: Vis nyere
show_older: Vis ældre
show_thread: Vis tråd
- sign_in_to_participate: Log ind for at deltage i samtalen
+ sign_in_to_participate: Log ind for at deltage i konversationen
title: '%{name}: "%{quote}"'
visibilities:
- private: Kun-følgere
+ direct: Direkte
+ private: Kun følgere
private_long: Vis kun til følgere
public: Offentlig
public_long: Alle kan se
- unlisted: Ikke listet
- unlisted_long: Alle kan se, men vil ikke være listet på offentlige tidslinjer
+ unlisted: Ulistet
+ unlisted_long: Alle kan se, men er ikke listet på offentlige tidslinjer
stream_entries:
- pinned: Fastgjort trut
- reblogged: fremhævede
- sensitive_content: Følsomt indhold
+ pinned: Fastgjort indlæg
+ reblogged: boostet
+ sensitive_content: Sensitivt indhold
tags:
- does_not_match_previous_name: stemmer ikke overens med det forrige navn
+ does_not_match_previous_name: matcher ikke det foregående navn
terms:
- body_html: " Privatlivspolitik
\nHvilke information indsamler vi?
\n\n\n
\n\n
\n\nHvad bruger vi dine oplysninger til?
\n\n\n
\n\n
\n\nHvordan beskytter vi dine oplysninger?
\n\n
\n\n Hvad er vores data retention politik?
\n\n\n
\n\n
\n\n Bruger vi cookies?
\n\n
\n\n Viser vi nogen information til eksterne parter?
\n\n
\n\n Bebyggelse af børn
\n\n
\n\n Ændringer i vores privatlivspolitik
\n\nFortrolighedspolitik
\nHvilke oplysninger indsamler vi?
\n\n\n
\n\n
\n\nHvad bruger vi dine oplysninger til?
\n\n\n
\n\n
\n\nHvordan beskytter vi dine oplysninger?
\n\n
\n\nHvad er vores datalagringspolitik?
\n\n\n
\n\n
\n\nBruger vi cookies?
\n\n
\n\nAfslører vi nogle oplysninger til eksterne parter?
\n\n
\n\nBørns brug af webstedet
\n\n
\n\nÆndringer i vores fortrolighedspolitik
\n\nrel="mig"-attribut. Linkets tekstindhold betyder ikke noget. Her er et eksempel:'
+ verification: Bekræftelse
webauthn_credentials:
add: Tilføj ny sikkerhedsnøgle
create:
+ error: Der var et problem med at tilføje din sikkerhedskode. Forsøg igen.
success: Din sikkerhedsnøgle blev tilføjet.
delete: Slet
+ delete_confirmation: Sikker på, at du vil slette denne sikkerhedsnøgle?
+ description_html: Aktiverer du sikkerhedsnøglegodkendelse, vil indlogning kræve brug af en af dine sikkerhedsnøgler.
destroy:
- success: Din sikkerhedsnøgle blev slettet.
+ error: Der var et problem med at slette din sikkerhedsnøgle. Forsøg igen.
+ success: Din sikkerhedsnøgle er slettet.
invalid_credential: Ugyldig sikkerhedsnøgle
- nickname_hint: Indtast kaldenavnet på din nye sikkerhedsnøgle
+ nickname_hint: Angiv kaldenavnet på din nye sikkerhedsnøgle
not_enabled: Du har endnu ikke aktiveret WebAuthn
not_supported: Denne browser understøtter ikke sikkerhedsnøgler
- registered_on: Registreret den %{date}
+ otp_required: For at bruge sikkerhedsnøgler skal tofaktorgodkendelse først aktiveres.
+ registered_on: Registreret d. %{date}
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 34d03f808..cded342f6 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -26,6 +26,8 @@ de:
Dieser wird für Föderationszwecke verwendet und sollte nicht blockiert werden, es sei denn du möchtest die gesamte Instanz blockieren.
learn_more: Mehr erfahren
privacy_policy: Datenschutzerklärung
+ rules: Server-Regeln
+ rules_html: 'Unten ist eine Zusammenfassung der Regeln, denen du folgen musst, wenn du ein Konto auf diesem Mastodon-Server haben möchtest:'
see_whats_happening: Finde heraus, was gerade in der Welt los ist
server_stats: 'Serverstatistiken:'
source_code: Quellcode
@@ -78,7 +80,6 @@ de:
other: Beiträge
posts_tab_heading: Beiträge
posts_with_replies: Beiträge mit Antworten
- reserved_username: Dieser Profilname ist belegt
roles:
admin: Administrator
bot: Bot
@@ -229,6 +230,7 @@ de:
create_domain_block: Domain blockieren
create_email_domain_block: E-Mail-Domain-Block erstellen
create_ip_block: IP-Regel erstellen
+ create_unavailable_domain: Nicht verfügbare Domain erstellen
demote_user: Benutzer degradieren
destroy_announcement: Ankündigung löschen
destroy_custom_emoji: Eigene Emoji löschen
@@ -237,6 +239,7 @@ de:
destroy_email_domain_block: E-Mail-Domain-Blockade löschen
destroy_ip_block: IP-Regel löschen
destroy_status: Beitrag löschen
+ destroy_unavailable_domain: Nicht verfügbare Domain löschen
disable_2fa_user: 2FA deaktivieren
disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren
disable_user: Benutzer deaktivieren
@@ -260,46 +263,48 @@ de:
update_domain_block: Domain Block aktualisieren
update_status: Beitrag aktualisieren
actions:
- assigned_to_self_report: "%{name} hat sich die Meldung %{target} selbst zugewiesen"
- change_email_user: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert"
- confirm_user: "%{name} hat die E-Mail-Adresse von %{target} bestätigt"
- create_account_warning: "%{name} hat eine Warnung an %{target} gesendet"
- create_announcement: "%{name} hat die neue Ankündigung %{target} erstellt"
- create_custom_emoji: "%{name} hat neues Emoji %{target} hochgeladen"
- create_domain_allow: "%{name} hat die Domain %{target} gewhitelistet"
- create_domain_block: "%{name} hat die Domain %{target} blockiert"
- create_email_domain_block: "%{name} hat die E-Mail-Domain %{target} geblacklistet"
- create_ip_block: "%{name} hat eine Regel für IP %{target} erstellt"
- demote_user: "%{name} stufte Benutzer_in %{target} herunter"
- destroy_announcement: "%{name} hat die neue Ankündigung %{target} gelöscht"
- destroy_custom_emoji: "%{name} zerstörte Emoji %{target}"
- destroy_domain_allow: "%{name} hat die Domain %{target} von der Whitelist entfernt"
- destroy_domain_block: "%{name} hat die Domain %{target} entblockt"
- destroy_email_domain_block: "%{name} hat die E-Mail-Domain %{target} gewhitelistet"
- destroy_ip_block: "%{name} hat eine Regel für IP %{target} gelöscht"
- destroy_status: "%{name} hat einen Beitrag von %{target} entfernt"
- disable_2fa_user: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert"
- disable_custom_emoji: "%{name} hat das %{target} Emoji deaktiviert"
- disable_user: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert"
- enable_custom_emoji: "%{name} hat das %{target} Emoji aktiviert"
- enable_user: "%{name} hat Zugang von Benutzer_in %{target} aktiviert"
- memorialize_account: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt"
- promote_user: "%{name} hat %{target} befördert"
- remove_avatar_user: "%{name} hat das Profilbild von %{target} entfernt"
- reopen_report: "%{name} hat die Meldung %{target} wieder geöffnet"
- reset_password_user: "%{name} hat das Passwort von %{target} zurückgesetzt"
- resolve_report: "%{name} hat die Meldung %{target} bearbeitet"
- sensitive_account: "%{name} markierte %{target}'s Medien als NSFW"
- silence_account: "%{name} hat das Konto von %{target} stummgeschaltet"
- suspend_account: "%{name} hat das Konto von %{target} verbannt"
- unassigned_report: "%{name} hat die Zuweisung der Meldung %{target} entfernt"
- unsensitive_account: "%{name} markierte %{target}'s Medien nicht als NSFW"
- unsilence_account: "%{name} hat die Stummschaltung von %{target} aufgehoben"
- unsuspend_account: "%{name} hat die Verbannung von %{target} aufgehoben"
- update_announcement: "%{name} aktualisierte Ankündigung %{target}"
- update_custom_emoji: "%{name} hat das %{target} Emoji geändert"
- update_domain_block: "%{name} hat den Domain-Block für %{target} aktualisiert"
- update_status: "%{name} hat einen Beitrag von %{target} aktualisiert"
+ assigned_to_self_report_html: "%{name} hat sich die Meldung %{target} selbst zugewiesen"
+ change_email_user_html: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert"
+ confirm_user_html: "%{name} hat die E-Mail-Adresse von %{target} bestätigt"
+ create_account_warning_html: "%{name} hat eine Warnung an %{target} gesendet"
+ create_announcement_html: "%{name} hat die neue Ankündigung %{target} erstellt"
+ create_custom_emoji_html: "%{name} hat neues Emoji %{target} hochgeladen"
+ create_domain_allow_html: "%{name} hat die Domain %{target} gewhitelistet"
+ create_domain_block_html: "%{name} hat die Domain %{target} blockiert"
+ create_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} geblacklistet"
+ create_ip_block_html: "%{name} hat eine Regel für IP %{target} erstellt"
+ create_unavailable_domain_html: "%{name} hat die Lieferung an die Domain %{target} eingestellt"
+ demote_user_html: "%{name} stufte Benutzer_in %{target} herunter"
+ destroy_announcement_html: "%{name} hat die neue Ankündigung %{target} gelöscht"
+ destroy_custom_emoji_html: "%{name} zerstörte Emoji %{target}"
+ destroy_domain_allow_html: "%{name} hat die Domain %{target} von der Whitelist entfernt"
+ destroy_domain_block_html: "%{name} hat die Domain %{target} entblockt"
+ destroy_email_domain_block_html: "%{name} hat die E-Mail-Domain %{target} gewhitelistet"
+ destroy_ip_block_html: "%{name} hat eine Regel für IP %{target} gelöscht"
+ destroy_status_html: "%{name} hat einen Beitrag von %{target} entfernt"
+ destroy_unavailable_domain_html: "%{name} setzte die Lieferung an die Domain %{target} fort"
+ disable_2fa_user_html: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert"
+ disable_custom_emoji_html: "%{name} hat das %{target} Emoji deaktiviert"
+ disable_user_html: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert"
+ enable_custom_emoji_html: "%{name} hat das %{target} Emoji aktiviert"
+ enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert"
+ memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt"
+ promote_user_html: "%{name} hat %{target} befördert"
+ remove_avatar_user_html: "%{name} hat das Profilbild von %{target} entfernt"
+ reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet"
+ reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt"
+ resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet"
+ sensitive_account_html: "%{name} markierte %{target}'s Medien als NSFW"
+ silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet"
+ suspend_account_html: "%{name} hat das Konto von %{target} verbannt"
+ unassigned_report_html: "%{name} hat die Zuweisung der Meldung %{target} entfernt"
+ unsensitive_account_html: "%{name} markierte %{target}'s Medien nicht als NSFW"
+ unsilence_account_html: "%{name} hat die Stummschaltung von %{target} aufgehoben"
+ unsuspend_account_html: "%{name} hat die Verbannung von %{target} aufgehoben"
+ update_announcement_html: "%{name} aktualisierte Ankündigung %{target}"
+ update_custom_emoji_html: "%{name} hat das %{target} Emoji geändert"
+ update_domain_block_html: "%{name} hat den Domain-Block für %{target} aktualisiert"
+ update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert"
deleted_status: "(gelöschter Beitrag)"
empty: Keine Protokolle gefunden.
filter_by_action: Nach Aktion filtern
@@ -314,10 +319,12 @@ de:
new:
create: Ankündigung erstellen
title: Neue Ankündigung
+ publish: Veröffentlichen
published_msg: Ankündigung erfolgreich erstellt!
scheduled_for: Geplant für %{time}
scheduled_msg: Ankündigung ist zur Veröffentlichung vorgemerkt!
title: Ankündigungen
+ unpublish: Veröffentlichung rückgängig machen
unpublished_msg: Ankündigung ist jetzt nicht mehr sichtbar!
updated_msg: Ankündigung erfolgreich geändert!
custom_emojis:
@@ -362,7 +369,6 @@ de:
feature_profile_directory: Profilverzeichnis
feature_registrations: Offene Anmeldung
feature_relay: Föderationsrelais
- feature_spam_check: Anti-Spam
feature_timeline_preview: Zeitleistenvorschau
features: Funktionen
hidden_service: Föderation mit versteckten Diensten
@@ -440,9 +446,34 @@ de:
create: Blockade erstellen
title: Neue E-Mail-Domain-Blockade
title: E-Mail-Domain-Blockade
+ follow_recommendations:
+ description_html: "Folgeempfehlungen helfen neuen Nutzern dabei, schnell interessante Inhalte zu finden. Wenn ein Nutzer noch nicht genug mit anderen interagiert hat, um personalisierte Folgeempfehlungen zu erstellen, werden stattdessen diese Benutzerkonten verwendet. Sie werden täglich basiert auf einer Mischung aus am meisten interagierenden Benutzerkonten und solchen mit den meisten Folgenden für eine bestimmte Sprache neuberechnet."
+ language: Für Sprache
+ status: Status
+ suppress: Folgeempfehlungen unterdrücken
+ suppressed: Unterdrückt
+ title: Folgeempfehlungen
+ unsuppress: Nicht mehr unterdrücken
instances:
+ back_to_all: Alle
+ back_to_limited: Beschränkt
+ back_to_warning: Warnung
by_domain: Domain
+ delivery:
+ all: Alle
+ clear: Zustellfehler löschen
+ restart: Lieferung neu starten
+ stop: Lieferung stoppen
+ title: Zustellung
+ unavailable: Nicht verfügbar
+ unavailable_message: Zustellung funktioniert nicht
+ warning: Warnung
+ warning_message:
+ one: Zustellfehler seit %{count} Tag
+ other: Zustellfehler seit %{count} Tagen
delivery_available: Zustellung funktioniert
+ delivery_error_days: Tage seitdem die Zustellung nicht funktioniert
+ delivery_error_hint: Wenn eine Lieferung für %{count} Tage nicht möglich ist, wird sie automatisch als nicht lieferbar markiert.
empty: Keine Domains gefunden.
known_accounts:
one: "%{count} bekanntes Konto"
@@ -542,6 +573,13 @@ de:
unassign: Zuweisung entfernen
unresolved: Ungelöst
updated_at: Aktualisiert
+ rules:
+ add_new: Regel hinzufügen
+ delete: Löschen
+ description_html: Während die meisten behaupten, die Nutzungsbedingungen gelesen und akzeptiert zu haben, lesen die Menschen sie in der Regel erst nach einem Problem. Vereinfache es, die Regeln deines Servers auf einen Blick zu sehen, indem du sie in einer einfachen Auflistung zur Verfügung stellst. Versuche die einzelnen Regeln kurz und einfach zu halten, aber versuche nicht, sie in viele verschiedene Elemente aufzuteilen.
+ edit: Regel bearbeiten
+ empty: Es wurden bis jetzt keine Server-Regeln definiert.
+ title: Server-Regeln
settings:
activity_api_enabled:
desc_html: Anzahl der lokal geposteten Beiträge, aktiven Nutzern und neuen Registrierungen in wöchentlichen Zusammenfassungen
@@ -565,9 +603,6 @@ de:
users: Für angemeldete lokale Benutzer
domain_blocks_rationale:
title: Rationale anzeigen
- enable_bootstrap_timeline_accounts:
- desc_html: Neue Benutzer automatisch den konfigurierten Konten folgen lassen, sodass ihr Home-Feed nicht leer startet
- title: Aktiviere die Option "Konten, denen Neu-Angemeldete automatisch folgen"
hero:
desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet
title: Bild für Einstiegsseite
@@ -621,9 +656,6 @@ de:
desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen
title: Benutzerdefinierte Geschäftsbedingungen
site_title: Name des Servers
- spam_check_enabled:
- desc_html: Mastodon kann automatisch Server stummschalten und automatisch Konten melden basierend auf Maßnahmen wie die Erkennung von Konten, die wiederholt unerwünschte Nachrichten senden. Es können hierbei mögliche Probleme auftreten.
- title: Anti-Spam
thumbnail:
desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen
title: Vorschaubild des Servers
@@ -654,13 +686,18 @@ de:
no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden
title: Beiträge des Kontos
with_media: Mit Medien
+ system_checks:
+ database_schema_check:
+ message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält
+ rules_check:
+ action: Serverregeln verwalten
+ message_html: Sie haben keine Serverregeln definiert.
+ sidekiq_process_check:
+ message_html: Kein Sidekiq-Prozess läuft für die %{value} Warteschlange(n). Bitte überprüfen Sie Ihre Sidekiq-Konfiguration
tags:
accounts_today: Einzigartige Nutzungen heute
accounts_week: Einzigartige Nutzung dieser Woche
breakdown: Heruntergebrochene Statistiken der heutigen Nutzung nach Quelle
- context: Kontext
- directory: Im Verzeichnis
- in_directory: "%{count} im Verzeichnis"
last_active: Zuletzt aktiv
most_popular: Am beliebtesten
most_recent: Neuste
@@ -677,6 +714,7 @@ de:
add_new: Neu hinzufügen
delete: Löschen
edit_preset: Warnungsvorlage bearbeiten
+ empty: Du hast noch keine Warnungsvorlagen hinzugefügt.
title: Warnungsvorlagen verwalten
admin_mailer:
new_pending_account:
@@ -1038,10 +1076,14 @@ de:
body: "%{name} hat dich erwähnt:"
subject: "%{name} hat dich erwähnt"
title: Neue Erwähnung
+ poll:
+ subject: Eine Umfrage von %{name} ist beendet
reblog:
body: "%{name} hat deinen Beitrag geteilt:"
subject: "%{name} hat deinen Beitrag geteilt"
title: Dein Beitrag wurde geteilt
+ status:
+ subject: "%{name} hat gerade etwas gepostet"
notifications:
email_events: Ereignisse für E-Mail-Benachrichtigungen
email_events_hint: 'Wähle Ereignisse, für die du Benachrichtigungen erhalten möchtest:'
@@ -1164,7 +1206,7 @@ de:
other: unbekannte Plattform
windows: Windows
windows_mobile: Windows Mobile
- windows_phone: Windows Phone
+ windows_phone: Windows Handy
revoke: Schließen
revoke_success: Sitzung erfolgreich geschlossen
title: Sitzungen
@@ -1190,8 +1232,6 @@ de:
relationships: Folgende und Gefolgte
two_factor_authentication: Zwei-Faktor-Auth
webauthn_authentication: Sicherheitsschlüssel
- spam_check:
- spam_detected: Dies ist ein automatisierter Bericht. Es wurde Spam erkannt.
statuses:
attached:
audio:
@@ -1234,6 +1274,7 @@ de:
sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Direktnachricht
private: Nur Folgende
private_long: Nur für Folgende sichtbar
public: Öffentlich
@@ -1404,11 +1445,8 @@ de:
tips: Tipps
title: Willkommen an Bord, %{name}!
users:
- blocked_email_provider: Dieser E-Mail-Anbieter ist nicht erlaubt
follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen
generic_access_help_html: Probleme beim Zugriff auf dein Konto? Du kannst dich mit %{email} in Verbindung setzen, um Hilfe zu erhalten
- invalid_email: Ungültige E-Mail-Adresse
- invalid_email_mx: Die E-Mail-Adresse scheint nicht vorhanden zu sein
invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code
invalid_sign_in_token: Ungültiger Sicherheitscode
otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email}
diff --git a/config/locales/devise.af.yml b/config/locales/devise.af.yml
new file mode 100644
index 000000000..252f9fd5a
--- /dev/null
+++ b/config/locales/devise.af.yml
@@ -0,0 +1 @@
+af:
diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml
index 6c63ca6e8..d8cfdbd42 100644
--- a/config/locales/devise.ar.yml
+++ b/config/locales/devise.ar.yml
@@ -21,6 +21,7 @@ ar:
action: للتحقق من عنوان البريد الإلكتروني
action_with_app: تأكيد ثم العودة إلى %{app}
explanation: لقد قمت بإنشاء حساب على %{host} بواسطة عنوان البريد الإلكتروني الحالي. إنك على بعد خطوات قليلة من تفعليه. إن لم تكن من طلب ذلك، يرجى ألّا تولي اهتماما بهذه الرسالة.
+ explanation_when_pending: لقد تقدمت بطلب دعوة إلى %{host} باستخدام عنوان البريد الإلكتروني هذا، بمجرد تأكيد عنوان البريد الإلكتروني الخاص بك، سنقوم بمراجعة تطبيقك. يمكنك تسجيل الدخول لتغيير التفاصيل الخاصة بك أو حذف حسابك، ولكن لا يمكنك الوصول إلى معظم الوظائف حتى تتم الموافقة على حسابك. إذا تم رفض طلبك، سيتم إزالة بياناتك، لذلك لن يكون هناك أي إجراء آخر مطلوب منك. إذا لم يكن هذا أنت، يرجى تجاهل هذا البريد الإلكتروني.
extra_html: ندعوك إلى الإطلاع على القواعد الخاصة بمثيل الخادوم هذا and و شروط الخدمة الخاصة بنا.
subject: 'ماستدون: تعليمات التأكيد لمثيل الخادوم %{instance}'
title: للتحقق من عنوان البريد الإلكتروني
@@ -59,6 +60,23 @@ ar:
title: تم استبدال رموز استرجاع 2FA
unlock_instructions:
subject: 'ماستدون: تعليمات فك القفل'
+ webauthn_credential:
+ added:
+ explanation: تم إضافة مفتاح الأمان التالي إلى حسابك
+ subject: 'ماستدون: مفتاح أمان جديد'
+ title: تم إضافة مفتاح أمان جديد
+ deleted:
+ explanation: تم إزالة مفتاح الأمان التالي من حسابك
+ subject: 'ماستدون: تم حذف مفتاح الأمان'
+ title: تم حذف أحد مفاتيح الأمان الخاصة بك
+ webauthn_disabled:
+ explanation: تم تعطيل الاستيثاق مع مفاتيح الأمان لحسابك. تسجيل الدخول الآن ممكن باستخدام الرمز (token) الذي تم إنشاؤه بواسطة تطبيق TOTP المقترن.
+ subject: 'ماستدون: الاستيثاق مع مفاتيح الأمان معطلة'
+ title: مفاتيح الأمان معطلة
+ webauthn_enabled:
+ explanation: تم تفعيل استيثاق مفتاح الأمان للحساب الخاص بك. يمكن الآن استخدام مفتاح الأمان الخاص بك لتسجيل الدخول.
+ subject: 'ماستدون: تم تفعيل نظام استيثاق مفتاح الأمان'
+ title: مفاتيح الأمان مفعلة
omniauth_callbacks:
failure: تعذرت المصادقة من %{kind} بسبب "%{reason}".
success: تمت المصادقة بنجاح عبر حساب %{kind}.
diff --git a/config/locales/devise.bg.yml b/config/locales/devise.bg.yml
index 3c04af81b..c3773bcae 100644
--- a/config/locales/devise.bg.yml
+++ b/config/locales/devise.bg.yml
@@ -12,18 +12,71 @@ bg:
last_attempt: Разполагаш с още един опит преди профилът ти да бъде заключен.
locked: Профилът ти е заключен.
not_found_in_database: Невалиден %{authentication_keys}.
+ pending: Вашият акаунт все още е в процес на проверка.
timeout: Сесията ти изтече, моля влез отново, за да продължиш.
unauthenticated: Преди да продължиш, трябва да влезеш в профила си или да се регистрираш.
unconfirmed: Преди да продължиш, трябва да потвърдиш регистрацията си.
mailer:
confirmation_instructions:
+ action: Потвърдете имейл адреса
+ action_with_app: Потвърдете и се върнете към %{app}
+ explanation: Създали сте акаунт на %{host} с този имейл адрес. Само на едно щракване разстояние сте от активирането му. Ако това не сте били вие, моля, игнорирайте този имейл.
+ explanation_when_pending: Кандидатствахте за покана до %{host} с този имейл адрес. След като потвърдите своя имейл адрес, ние ще разгледаме вашето заявление. Можете да влезете, за да промените данните си или да изтриете акаунта си, но нямате достъп до повечето функции, докато акаунтът ви не бъде одобрен. Ако вашето заявление бъде отхвърлено, вашите данни ще бъдат премахнати, така че няма да се изискват допълнителни действия от вас. Ако това не сте били вие, моля, игнорирайте този имейл.
+ extra_html: Моля, проверете правилата на сървъра и нашите условия за обслужване.
subject: 'Mastodon: Инструкции за потвърждаване %{instance}'
+ title: Потвърдете имейл адреса
+ email_changed:
+ explanation: 'Имейл адресът на вашия акаунт се променя на:'
+ extra: Ако не сте сменили имейла си, вероятно някой е получил достъп до вашия акаунт. Моля, сменете паролата си незабавно или се свържете с администратора на сървъра, ако сте блокирани от акаунта си.
+ subject: 'Mastodon: Имейлът е променен'
+ title: Нов имейл адрес
password_change:
+ explanation: Паролата за вашия акаунт е променена.
+ extra: Ако не сте променили паролата си, вероятно някой е получил достъп до вашия акаунт. Моля, сменете паролата си незабавно или се свържете с администратора на сървъра, ако сте блокирани от акаунта си.
subject: 'Mastodon: Паролата е променена'
+ title: Паролата е променена
+ reconfirmation_instructions:
+ explanation: Потвърдете новия адрес, за да промените имейла си.
+ extra: Ако тази промяна не е инициирана от вас, моля, игнорирайте този имейл. Имейл адресът за акаунта на Mastodon няма да се промени, докато не влезете във връзката по-горе.
+ subject: 'Mastodon: Потвърдете имейла за %{instance}'
+ title: Потвърдете имейл адреса
reset_password_instructions:
+ action: Промяна на парола
+ explanation: Поискахте нова парола за вашия акаунт.
+ extra: Ако не сте поискали това, моля, игнорирайте този имейл. Паролата ви няма да се промени, докато не влезете във връзката по-горе и не създадете нова.
subject: Инструкции за смяна на паролата
+ title: Нулиране на парола
+ two_factor_disabled:
+ explanation: Двуфакторното удостоверяване за вашия акаунт е деактивирано. Влизането вече е възможно, като се използват само имейл адрес и парола.
+ subject: 'Mastodon: Двуфакторното удостоверяване е деактивирано'
+ title: 2FA деактивирано
+ two_factor_enabled:
+ explanation: За вашия акаунт е активирано двуфакторно удостоверяване. За влизане ще е необходим ключ, генериран от сдвоеното приложение TOTP.
+ subject: 'Mastodon: Двуфакторното удостоверяване е активирано'
+ title: 2FA активирано
+ two_factor_recovery_codes_changed:
+ explanation: Предишните кодове за възстановяване са обезсилени и се генерират нови.
+ subject: 'Mastodon: Възстановени са двуфакторни кодове за възстановяване'
+ title: 2FA кодове за възстановяване са променени
unlock_instructions:
subject: Инструкции за отключване
+ webauthn_credential:
+ added:
+ explanation: Следният ключ за сигурност е добавен към вашия акаунт
+ subject: 'Mastodon: Нов ключ за сигурност'
+ title: Добавен е нов ключ за сигурност
+ deleted:
+ explanation: Следният ключ за сигурност е изтрит от вашия акаунт
+ subject: 'Mastodon: Ключът за сигурност е изтрит'
+ title: Един от вашите ключове за сигурност е изтрит
+ webauthn_disabled:
+ explanation: Удостоверяването с ключове за сигурност е деактивирано за вашия акаунт. Влизането вече е възможно, използвайки само ключа, генериран от сдвоеното приложение TOTP.
+ subject: 'Mastodon: Удостоверяването с ключове за сигурност е деактивирано'
+ title: Ключовете за сигурност са деактивирани
+ webauthn_enabled:
+ explanation: Удостоверяването с ключ за сигурност е активирано за вашия акаунт. Вашият ключ за сигурност вече може да се използва за вход.
+ subject: 'Mastodon: Активирано удостоверяване с ключ за сигурност'
+ title: Ключовете за сигурност са активирани
omniauth_callbacks:
failure: Не успяхме да те упълномощим чрез %{kind}, защото "%{reason}".
success: Успешно упълномощаване чрез %{kind} профил.
@@ -38,6 +91,7 @@ bg:
signed_up: Привет! Регистрирацията ти е успешна.
signed_up_but_inactive: Регистрирацията ти е успешна. Въпреки това, не можеш да влезеш в профила си, защото той все още не е потвърден.
signed_up_but_locked: Регистрирацията ти е успешна. Въпреки това, не можеш да влезеш в профила си, защото той е заключен.
+ signed_up_but_pending: На вашия имейл адрес е изпратено съобщение с връзка за потвърждение. След като щракнете върху връзката, ние ще прегледаме вашето заявление. Ще бъдете уведомени, ако то е одобрено.
signed_up_but_unconfirmed: Писмо с връзка за потвърждаване на профила ти беше изпратено на твоя имейл адрес. Моля, отвори връзката, за да активираш своя профил.
update_needs_confirmation: Профилът ти е успешно променен, но ние трябва да проверим твоя нов имейл адрес. Моля, провери пощата си и отвори връзката за потвърждаване на новия адрес.
updated: Профилът ти е успешно променен.
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index 56ec4637d..be39a8f17 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -21,7 +21,7 @@ cs:
action: Potvrdit e-mailovou adresu
action_with_app: Potvrdit a vrátit se do %{app}
explanation: S touto e-mailovou adresou jste si již účet na serveru %{host} vytvořili. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyli vy, považujte tento e-mail za bezpředmětný.
- explanation_when_pending: S touto e-mailovou adresou jste si již pozvánku na server %{host} vyžádali. Jakmile svou e-mailovou adresu potvrdíte, vaši žádost posoudíme. Můžete se přihlásit, změnit podrobnosti svého účtu nebo ho smazat, ale do schválení účtu nebudete mít k většině funkcí přístup. Pokud bude vaše žádost zamítnuta, vaše data budou odstraněna, a nebude od vás vyžadována žádná další akce. Pokud jste to nebyli vy, považujte tento e-mail za bezpředmětný.
+ explanation_when_pending: Pro tuto e-mailovou adresu bylo požádáno o pozvánku na %{host}. Jakmile svou e-mailovou adresu potvrdíte, vaši žádost posoudíme. Můžete se přihlásit, změnit podrobnosti svého účtu nebo ho smazat, ale do schválení účtu nebudete mít k většině funkcí přístup. Pokud bude vaše žádost zamítnuta, vaše data budou odstraněna, a nebude od vás vyžadována žádná další akce. Pokud jste to nebyli vy, považujte tento e-mail za bezpředmětný.
extra_html: Přečtěte si prosím také pravidla tohoto serveru a naše podmínky používání.
subject: 'Mastodon: Potvrzení účtu na serveru %{instance}'
title: Potvrďte e-mailovou adresu
@@ -70,8 +70,12 @@ cs:
subject: 'Mastodon: Bezpečnostní klíč byl smazán'
title: Jeden z vašich bezpečnostních klíčů byl smazán
webauthn_disabled:
+ explanation: Pro váš účet bylo vypnuto ověření bezpečnostními klíči. Přihlášení je nyní možné pouze s tokenem vygenerovaným spárovanou TOTP aplikací.
+ subject: 'Mastodon: Přihlašování bezpečnostními klíči vypnuto'
title: Bezpečnostní klíče zakázány
webauthn_enabled:
+ explanation: Pro váš účet bylo povoleno ověření bezpečnostními klíči. Nyní můžete svůj bezpečnostní klíč použít pro přihlášení.
+ subject: 'Mastodon: Přihlašování bezpečnostními klíči povoleno'
title: Bezpečnostní klíče povoleny
omniauth_callbacks:
failure: Nelze vás ověřit z %{kind}, protože „%{reason}“.
diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml
index c23d2bbbf..9f5ef3b14 100644
--- a/config/locales/devise.da.yml
+++ b/config/locales/devise.da.yml
@@ -3,8 +3,8 @@ da:
devise:
confirmations:
confirmed: Din e-mail er nu bekræftet.
- send_instructions: Du vil modtage en mail med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
- send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage en email med instrukser for hvordan du bekræfter din email adresse om få minutter. Tjek gerne din spam mappe hvis du ikke modtager denne email.
+ send_instructions: Du vil om få minutter modtage en e-mailvejledning til, hvordan du bekræfter din e-mailadresse. Tjek din spammappe, hvis du modtager denne e-mail.
+ send_paranoid_instructions: Findes din e-mailadresse allerede i vores database, vil du om få minutter modtage en e-mailvejledning til, hvordan du bekræfter din e-mailadresse. Tjek din spammappe, hvis du ikke modtager denne e-mail.
failure:
already_authenticated: Du er allerede logget ind.
inactive: Din konto er endnu ikke aktiveret.
@@ -13,97 +13,103 @@ da:
locked: Din konto er låst.
not_found_in_database: Ugyldig %{authentication_keys} eller adgangskode.
pending: Din konto er stadig under bedømmelse.
- timeout: Din session er udløbet. Log venligst ind igen for at fortsætte.
- unauthenticated: Du er nødt til at logge ind eller oprette dig for at fortsætte.
- unconfirmed: Du er nødt til at bekræfte din email adresse for at fortsætte.
+ timeout: Din session udløb. Log ind igen for at fortsætte.
+ unauthenticated: Du skal logge ind eller tilmelde dig for at fortsætte.
+ unconfirmed: Du skal bekræfte din e-mailadresse for at fortsætte.
mailer:
confirmation_instructions:
- action: Bekræft email adresse
- action_with_app: Bekræft og vend tilbage til %{app}
- explanation: Du har oprettet en konto på %{host} med denne email adresse. Du er et klik fra at aktivere din konto. Hvis du ikke har oprettet dig, ignorer venligst denne email.
- explanation_when_pending: Du har ansøgt om en invitation til %{host} med denne mailadresse. Når du bekræfter din mailadresse vil vi bedømme din ansøgning. Indtil da kan du ikke logge ind. Din data slettes hvis din ansøgning bliver afvist så du behøver ikke foretage yderligere handlinger. Hvis dette ikke var dig kan du ignorere denne mail.
- extra_html: Tjek også reglerne for serveren og vores betingelser.
- subject: 'Mastodon: Bekræftelses instrukser for %{instance}'
- title: Bekræft email adresse
+ action: Bekræft e-mailadresse
+ action_with_app: Bekræft og returnér til %{app}
+ explanation: Du har oprettet en konto på %{host} med denne e-mailadresse og er nu et klik fra at aktivere din konto. Har du ikke oprettet dig, så ignorér blot denne e-mail.
+ explanation_when_pending: Du ansøgte om en invitation til %{host} med denne e-mailadresse. Når du har bekræftet din e-mailadresse, gennemgår vi din ansøgning. Du kan logge ind for at ændre dine oplysninger eller slette din konto, men du kan ikke tilgå de fleste af funktionerne, før din konto er godkendt. Afvises din ansøgning, fjernes dine data, så ingen yderligere handling fra dig er nødvendig. Har du ikke ansøgt, så ignorér blot denne e-mail.
+ extra_html: Tjek også reglerne for serveren samt vores tjenestevilkår.
+ subject: 'Mastodon: Bekræftelsesinstrukser for %{instance}'
+ title: Bekræft e-mailadresse
email_changed:
- explanation: 'Email adressen for din konto bliver ændret til:'
- extra: Hvis du ikke har ændret din email adresse er det muligt, at nogen har fået adgang til din konto. Venligst ændre dit kodeord med det samme eller kontakt administratoren på serveren hvis du er låst ude af din konto.
- subject: 'Mastodon: Email ændret'
- title: Ny email adresse
+ explanation: 'Din kontos e-mailadressen ændres til:'
+ extra: Har du ikke selv skiftet din e-mailadresse, er det muligt, at nogen har fået adgang til din konto. Skift venligst din adgangskode med det samme eller kontakt serveradministratoren, hvis du er låst ude af din konto.
+ subject: 'Mastodon: E-mail skiftet'
+ title: Ny e-mailadresse
password_change:
- explanation: Kodeordet for din konto er blevet ændret.
- extra: Hvis du ikke har ændret dit kodeord er det muligt, at nogen har fået adgang til din konto. Venligst ændre dit kodeord med det samme eller kontakt administratoren på serveren hvis du er låst ude af din konto.
- subject: 'Mastodon: Kodeord ændret'
- title: Kodeordet er blevet ændret
+ explanation: Din kontoadgangskode er skiftet.
+ extra: Har du ikke selv ændret dim adgangskode, er det muligt, at nogen har fået adgang til din konto. Skift venligst din adgangskode med det samme eller kontakt serveradministratoren, hvis du er låst ude af din konto.
+ subject: 'Mastodon: Adgangskode skiftet'
+ title: Adgangskode skiftet
reconfirmation_instructions:
- explanation: Bekræft den nye adresse for at ændre din email.
- extra: Hvis denne ændring ikke blev foretaget af dig, ignorer denne email. Email adressen for denne Mastodon konto vil ikke blive ændret før du følger linket foroven.
- subject: 'Mastodon: Bekræft email for %{instance}'
- title: Bekræft email adresse
+ explanation: Bekræft den nye adresse for at skifte din e-mail.
+ extra: Er denne ændring ikke iværksat af dig, så ignorér denne e-mail. E-mailadressen til Mastodon-kontoen ændres ikke, før du tilgår linket ovenfor.
+ subject: 'Mastodon: Bekræft e-mail for %{instance}'
+ title: Bekræft e-mailadresse
reset_password_instructions:
- action: Ændre kodeord
- explanation: Du anmodede om en ny adgangskode for din konto.
- extra: Hvis du ikke har anmodet om dette, ignorer denne email. Din adgangskode vil ikke blive ændret før du har fulgt linket foroven og oprettet en ny.
- subject: 'Mastodon: Instrukser for nulstilling af adgangskode'
- title: Kodeordet er blevet nulstillet
+ action: Skift adgangskode
+ explanation: Du har anmodet om en ny kontoadgangskode.
+ extra: Har du ikke anmodet om dette, så ignorér denne e-mail. Din adgangskode skiftes først, når du via linket ovenfor har oprettet en ny.
+ subject: 'Mastodon: Nulstil adgangskode-instruktioner'
+ title: Adgangskode nulstillet
two_factor_disabled:
- explanation: To-trins godkendelse for din konto er blevet deaktiveret. Det nu kun muligt at logge ind med email og kodeord.
- subject: 'Mastodon: To-trins godkendelse er deaktiveret'
+ explanation: Tofaktorgodkendelse for din konto er blevet deaktiveret. Indlogning er nu kun mulig via email og adgangskode.
+ subject: 'Mastodon: Tofaktorgodkendelse deaktiveret'
title: 2FA deaktiveret
two_factor_enabled:
- explanation: To-trins godkendelse er blevet aktiveret for din konto. En token fra den parrede TOTP app vil være påkrævet for at logge ind.
- subject: 'Mastodon: To-trins godkendelse er nu aktiveret'
+ explanation: Tofaktorgodkendelse er blevet aktiveret for din konto. Et token genereret af den parrede TOTP-app vil være nødvendig for at logge ind.
+ subject: 'Mastodon: Tofaktorgodkendelse aktiveret'
title: 2FA aktiveret
two_factor_recovery_codes_changed:
- explanation: De tidligere gendannelseskoder er ugyldige og nye genereret.
- subject: 'Mastodan: To-trins gendannelseskoder er fornyet'
- title: 2FA gendannelseskoder er ændret
+ explanation: De tidligere gendannelseskoder er ugyldiggjorte og nye er genereret.
+ subject: 'Mastodan: Tofaktorgendannelseskoder genereret igen'
+ title: 2FA gendannelseskoder skiftet
unlock_instructions:
- subject: 'Mastodon: Instruktioner for oplåsning'
+ subject: 'Mastodon: Oplåsningsinstruktioner'
webauthn_credential:
added:
+ explanation: Flg. sikkerhedsnøgle er tilføjet din konto
subject: 'Mastodon: Ny sikkerhedsnøgle'
- title: En ny sikkerhedsnøgle er blevet tilføjet
+ title: En ny sikkerhedsnøgle er tilføjet
deleted:
+ explanation: Flg. sikkerhedsnøgle er slettet din konto
subject: 'Mastodon: Sikkerhedsnøgle slettet'
title: En af dine sikkerhedsnøgler er blevet slettet
webauthn_disabled:
+ explanation: Godkendelse med sikkerhedsnøgler er blevet deaktiveret for din konto. Indlogning er nu kun mulig via token genereret af den parrede TOTP-app.
+ subject: 'Mastodon: Godkendelse med sikkerhedsnøgler deaktiveret'
title: Sikkerhedsnøgler deaktiveret
webauthn_enabled:
+ explanation: Sikkerhedsnøglegodkendelse er aktiveret for din konto. Din sikkerhedsnøgle kan nu bruges til indlogning.
+ subject: 'Mastodon: Sikkerhedsnøglegodkendelse aktiveret'
title: Sikkerhedsnøgler aktiveret
omniauth_callbacks:
failure: Kunne ikke godkende dig fra %{kind} fordi "%{reason}".
- success: Godkendelse fra %{kind} konto lykkedes.
+ success: Godkendt fra %{kind}-konto.
passwords:
- no_token: Du kan ikke tilgå denne side uden at komme fra en email om nulstilling af adgangskode. Hvis du kommer fra en email om nulstilling af adgangskode, tjek om du brugte det fulde link der blev angivet.
- send_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
- send_paranoid_instructions: Hvis din email adresse allerede findes i vores database, vil du modtage et link til nulstilling af adgangskode til din email adresse om få minutter. Tjek din spam mappe hvis du ikke har modtaget denne email.
- updated: Din adgangskode er nu blevet ændret. Du er nu logget ind.
- updated_not_active: Din adgangskode blev ændret.
+ no_token: Du kan kun tilgå denne side via linket fra en adgangskodenulstillings e-mail. Kommer du fra en sådan e-mail, så sørg for at benytte den angivne, komplette URL.
+ send_instructions: Er din e-mail-adresse allerede registreret, e-mailer vi dig et link til adgangskodenulstilling. Tjek din spammappe, hvis du ikke ser e-mailen i din indbakke indenfor få minutter.
+ send_paranoid_instructions: Er din e-mail-adresse allerede registreret, e-mailer vi dig et link til adgangskodegendannelse. Tjek din spammappe, hvis du ikke ser e-mailen i din indbakke indenfor få minutter.
+ updated: Din adgangskode er skiftet, og du er nu logget ind.
+ updated_not_active: Din adgangskode er skiftet.
registrations:
destroyed: Farvel! Din konto er nu annulleret. Vi håber snart at se dig igen.
signed_up: Velkommen! Du har nu tilmeldt dig.
- signed_up_but_inactive: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto endnu ikke er aktiveret.
- signed_up_but_locked: Du har nu oprettet dig. Vi kunne dog ikke logge dig ind da din konto er låst.
- signed_up_but_pending: En besked med et bekræftelseslink er blevet sendt til din mailadresse. Vi vil behandle din ansøgning når du har trykket på dette link. Du får en meddelelse hvis din ansøgning bliver accepteret.
- signed_up_but_unconfirmed: En besked med et bekræftelses link er nu blevet sendt til din email adresse. Følg linket for at aktivere din konti. Tjek din spam mappe hvis du ikke har modtaget denne email.
- update_needs_confirmation: Du har succesfuldt opdateret din konto, men vi er nødt til at bekræfte din email adresse. Tjek venligst din email og følg bekræftelses linket for at bekræfte din nye email adresse. Tjek venligst din spam mappe hvis du ikke har modtaget denne email.
- updated: Din konto er nu blevet opdateret.
+ signed_up_but_inactive: Du har nu oprettet dig. Da din konto endnu ikke er aktiveret, kan du dog pt. ikke logge ind.
+ signed_up_but_locked: Du har nu oprettet dig. Da din konto er låst, kan du pt. ikke logge ind.
+ signed_up_but_pending: En besked med et bekræftelseslink er e-mailet til dig. Når du har klikket på linket, gennemgår vi din ansøgning, og du får besked, hvis den godkendes.
+ signed_up_but_unconfirmed: En besked med et bekræftelseslink er e-mailet til dig. Følg linket for at aktivere din konto. Tjek din spammappe, hvis du ikke ser denne e-mail i din indbakke.
+ update_needs_confirmation: Du har opdateret din konto. Din nye e-mailadresse skal dog bekræftes. For at gøre dette, tjek din e-mail og følg bekræftelseslinket. Tjek din spammappe, hvis du ikke ser denne e-mail i din indbakke indenfor få minutter.
+ updated: Din konto er nu opdateret.
sessions:
already_signed_out: Du er nu logget ud.
signed_in: Du er nu logget ind.
signed_out: Du er nu logget ud.
unlocks:
- send_instructions: Du vil modtage en email med instrukser for hvordan du låser op for din konto om nogle få minutter. Venligst tjek din spam mappe hvis du ikke har modtaget denne email.
- send_paranoid_instructions: Hvis din konto findes, vil du modtage en email med instrukser for hvordan du låser op for den om få minutter. Tjek venligst din spam mappe hvis du ikke har modtaget denne mail.
- unlocked: Din konto er succesfuldt blevet låst op. Log venligst ind for at fortsætte.
+ send_instructions: Instruktioner mailes til dig om, hvordan du oplåser din konto. Er denne e-mail ikke er i din indbakke inden for få minutter, så tjek spammappe.
+ send_paranoid_instructions: Findes din konto, mailes du instrukser om, hvordan du oplåser den. Ser du ikke denne e-mail i din indbakke undenfor få minutter, så tjek spammappen.
+ unlocked: Din konto er nu oplåst. Log ind for at fortsætte.
errors:
messages:
- already_confirmed: er allerede blevet bekræftet, prøv venligst at logge ind
- confirmation_period_expired: skal bekræftes indenfor %{period}, anmod venligst om en ny
- expired: er udløbet, anmod venligst en ny
+ already_confirmed: er allerede bekræftet. Prøv at logge ind
+ confirmation_period_expired: skal bekræftes indenfor %{period}. Anmod om en ny
+ expired: er udløbet. Anmod en ny
not_found: ikke fundet
not_locked: blev ikke låst
not_saved:
- one: '1 fejl forhindrede denne %{resource} fra at blive gemt:'
- other: "%{count} fejl forhindrede denne %{resource} fra at blive gemt:"
+ one: '1 fejl forhindrede denne %{resource} i at blive gemt:'
+ other: "%{count} fejl forhindrede denne %{resource} i at blive gemt:"
diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml
index a3f2c5796..458fa6d75 100644
--- a/config/locales/devise.en.yml
+++ b/config/locales/devise.en.yml
@@ -68,7 +68,7 @@ en:
deleted:
explanation: The following security key has been deleted from your account
subject: 'Mastodon: Security key deleted'
- title: One of you security keys has been deleted
+ title: One of your security keys has been deleted
webauthn_disabled:
explanation: Authentication with security keys has been disabled for your account. Login is now possible using only the token generated by the paired TOTP app.
subject: 'Mastodon: Authentication with security keys disabled'
@@ -78,7 +78,7 @@ en:
subject: 'Mastodon: Security key authentication enabled'
title: Security keys enabled
omniauth_callbacks:
- failure: Could not authenticate you from %{kind} because "%{reason}".
+ failure: Could not authenticate you from %{kind} because “%{reason}”.
success: Successfully authenticated from %{kind} account.
passwords:
no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
index 0631d1c07..7b6f6783b 100644
--- a/config/locales/devise.eo.yml
+++ b/config/locales/devise.eo.yml
@@ -60,6 +60,23 @@ eo:
title: Reakiraj kodoj de 2FA estas ŝanĝitaj
unlock_instructions:
subject: 'Mastodon: Instrukcioj por malŝlosi'
+ webauthn_credential:
+ added:
+ explanation: La sekva sekureca ŝlosilo estis aldonita al via konto
+ subject: 'Mastodon: Nova sekureca ŝlosilo'
+ title: Nova sekureca ŝlosilo estis aldonita
+ deleted:
+ explanation: La sekva sekureca ŝlosilo estis forigita de via konto
+ subject: 'Mastodon: sekureca ŝlosilo forigita'
+ title: Unu el viaj sekurecaj ŝlosiloj estis forigita
+ webauthn_disabled:
+ explanation: Aŭtentikigo per sekurecaj ŝlosiloj estis malebligita por via konto. Ensaluto nun eblas per nur la signo generita de la parigita TOTP-programo.
+ subject: 'Mastodon: sekureca-ŝlosila aŭtentigo malebligita'
+ title: Sekurecaj ŝlosiloj malaktivigitaj
+ webauthn_enabled:
+ explanation: Sekureca ŝlosila aŭtentokontrolo estis ebligita por via konto. Via sekureca ŝlosilo nun uzeblas por ensaluti.
+ subject: 'Mastodon: sekureca-ŝlosila aŭtentigo ebligita'
+ title: Sekurecaj ŝlosiloj aktivigitaj
omniauth_callbacks:
failure: 'Ni ne povis aŭtentigi vin per %{kind}: ''%{reason}''.'
success: Aŭtentigita sukcese per %{kind}.
diff --git a/config/locales/devise.es-MX.yml b/config/locales/devise.es-MX.yml
new file mode 100644
index 000000000..83b425d44
--- /dev/null
+++ b/config/locales/devise.es-MX.yml
@@ -0,0 +1,115 @@
+---
+es-MX:
+ devise:
+ confirmations:
+ confirmed: Su dirección de correo electrónico ha sido confirmada correctamente.
+ send_instructions: Recibirás un correo electrónico con instrucciones para confirmar tu dirección de correo electrónico en unos minutos. Por favor, comprueba tu carpeta de spam si no recibiste este correo electrónico.
+ send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
+ failure:
+ already_authenticated: Usted ya está registrado.
+ inactive: Su cuenta no ha sido activada aún.
+ invalid: "%{authentication_keys} o contraseña inválida."
+ last_attempt: Tiene un intento más antes de que tu cuenta sea bloqueada.
+ locked: Tu cuenta está bloqueada.
+ not_found_in_database: Incorrecto %{authentication_keys} o contraseña.
+ pending: Su cuenta aun se encuentra bajo revisión.
+ timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar.
+ unauthenticated: Necesita iniciar sesión o registrarse antes de continuar.
+ unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar.
+ mailer:
+ confirmation_instructions:
+ action: Verifica tu dirección de correo electrónico
+ action_with_app: Confirmar y volver a %{app}
+ explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estás a un solo clic de activarlo. Si no fuiste tú, por favor ignora este correo electrónico.
+ explanation_when_pending: Has solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirmes tu dirección de correo electrónico, revisaremos tu solicitud. Puedes iniciar sesión para cambiar tus datos o eliminar tu cuenta, pero no puedes acceder a la mayoría de las funciones hasta que tu cuenta sea aprobada. Si su solicitud es rechazada, sus datos serán eliminados, por lo que no será necesaria ninguna acción adicional por su parte. Si no fuiste tú, por favor ignora este correo electrónico.
+ extra_html: Por favor, revisa las reglas del servidor y nuestros términos de servicio.
+ subject: 'Mastodon: Instrucciones de confirmación para %{instance}'
+ title: Verificar dirección de correo electrónico
+ email_changed:
+ explanation: 'El correo electrónico para su cuenta esta siendo cambiada a:'
+ extra: Si usted no ha cambiado su correo electrónico, es probable que alguien haya conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte al administrador de la instancia si usted no puede iniciar sesión.
+ subject: 'Mastodon: Correo electrónico cambiado'
+ title: Nueva dirección de correo electrónico
+ password_change:
+ explanation: La contraseña de su cuenta a sido cambiada.
+ extra: Si usted no a cambiado su contraseña. es probable que alguien a conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte a el administrador de la instancia si usted esta bloqueado de su cuenta.
+ subject: 'Mastodon: Contraseña cambiada'
+ title: Contraseña cambiada
+ reconfirmation_instructions:
+ explanation: Confirme la nueva dirección para cambiar su coreo electrónico.
+ extra: Si no iniciaste este cambio, por favor ignora este correo. Esta dirección de correo para la cuenta de Mastodon no cambiará hasta que accedas al vinculo arriba.
+ subject: 'Mastodon: Confirme correo electrónico para %{instance}'
+ title: Verifique dirección de correo electrónico
+ reset_password_instructions:
+ action: Cambiar contraseña
+ explanation: Solicitaste una nueva contraseña para tu cuenta.
+ extra: Si no solicitaste esto, por favor ignora este correo. Tu contraseña no cambiará hasta que tu accedas al vinculo arriba y crees una nueva.
+ subject: 'Mastodon: Instrucciones para reiniciar contraseña'
+ title: Reiniciar contraseña
+ two_factor_disabled:
+ explanation: La autenticación de dos factores para tu cuenta ha sido deshabilitada. Ahora puedes conectarte solamente usando la dirección de correo electrónico y la contraseña.
+ subject: 'Mastodon: La autenticación de dos factores está deshabilitada'
+ title: 2FA desactivada
+ two_factor_enabled:
+ explanation: La autenticación de dos factores para tu cuenta ha sido habilitada. Se requiere un token generado por la aplicación TOTP emparejada para ingresar.
+ subject: 'Mastodon: La autenticación de dos factores está habilitada'
+ title: 2FA activada
+ two_factor_recovery_codes_changed:
+ explanation: Los códigos de recuperación previos han sido invalidados y se generaron códigos nuevos.
+ subject: 'Mastodon: Los códigos de recuperación de dos factores fueron regenerados'
+ title: Códigos de recuperación 2FA cambiados
+ unlock_instructions:
+ subject: 'Mastodon: Instrucciones para desbloquear'
+ webauthn_credential:
+ added:
+ explanation: La siguiente clave de seguridad ha sido añadida a su cuenta
+ subject: 'Mastodon: Nueva clave de seguridad'
+ title: Se ha añadido una nueva clave de seguridad
+ deleted:
+ explanation: La siguiente clave de seguridad ha sido eliminada de su cuenta
+ subject: 'Mastodon: Clave de seguridad eliminada'
+ title: Una de sus claves de seguridad ha sido eliminada
+ webauthn_disabled:
+ explanation: La autenticación con claves de seguridad ha sido desactivada para tu cuenta. El inicio de sesión es ahora posible únicamente utilizando el token generado por la aplicación emparejada TOTP.
+ subject: 'Mastodon: Autenticación con claves de seguridad desactivada'
+ title: Claves de seguridad desactivadas
+ webauthn_enabled:
+ explanation: La autenticación con clave de seguridad ha sido habilitada para su cuenta. Su clave de seguridad ahora puede ser usada para iniciar sesión.
+ subject: 'Mastodon: Autenticación con clave de seguridad activada'
+ title: Claves de seguridad activadas
+ omniauth_callbacks:
+ failure: No podemos autentificarle desde %{kind} debido a "%{reason}".
+ success: Autentificado con éxito desde la cuenta %{kind} .
+ passwords:
+ no_token: No puede acceder a esta página sin provenir desde el correo de reinicio de contraseña. Si viene desde el correo de reinicio de contraseña, por favor asegúrese que está utilizando la dirección completa proporcionada.
+ send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo reiniciar su contraseña en pocos minutos.
+ send_paranoid_instructions: Si su correo electrónico existe en nuestra base de datos, recibirá un enlace de recuperación de contraseña en su dirección de correo en pocos minutos.
+ updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado.
+ updated_not_active: Su contraseña ha sido cambiada con éxito.
+ registrations:
+ destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo."
+ signed_up: "¡Bienvenido! Se ha registrado con éxito."
+ signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía.
+ signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada.
+ signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada.
+ signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta.
+ update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo.
+ updated: su cuenta ha sido actualizada con éxito.
+ sessions:
+ already_signed_out: Cerró sesión con éxito.
+ signed_in: Se registró con éxito.
+ signed_out: Cerró sesión con éxito.
+ unlocks:
+ send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo desbloquear su cuenta en pocos minutos.
+ send_paranoid_instructions: Si su cuenta existe, recibirá un correo electrónico con instrucciones sobre cómo desbloquearla en pocos minutos.
+ unlocked: Su cuenta ha sido desbloqueada con éxito. Por favor inicie sesión para continuar.
+ errors:
+ messages:
+ already_confirmed: ya fue confirmado, por favor intente iniciar sesión
+ confirmation_period_expired: necesita ser confirmado dentro de %{period}, por favor pida una nueva
+ expired: ha expirado, por favor pida una nueva
+ not_found: no encontrado
+ not_locked: no fue bloqueada
+ not_saved:
+ one: '1 error prohibió este %{resource} de ser guardado:'
+ other: "%{count} errores prohibieron este %{resource} de ser guardado:"
diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml
index 11ec46594..7cfae2da6 100644
--- a/config/locales/devise.es.yml
+++ b/config/locales/devise.es.yml
@@ -2,27 +2,27 @@
es:
devise:
confirmations:
- confirmed: Su direccion de email ha sido confirmada con exito.
- send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
+ confirmed: Su dirección de correo electrónico ha sido confirmada correctamente.
+ send_instructions: Recibirás un correo electrónico con instrucciones para confirmar tu dirección de correo electrónico en unos minutos. Por favor, comprueba tu carpeta de spam si no recibiste este correo electrónico.
send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
failure:
already_authenticated: Usted ya está registrado.
- inactive: Su cuenta todavía no está activa.
- invalid: Inválido %{authentication_keys} o contraseña.
- last_attempt: Tiene un intento más antes de que su cuenta sea bloqueada.
- locked: Su cuenta está bloqueada.
- not_found_in_database: Inválido %{authentication_keys} o contraseña.
+ inactive: Su cuenta no ha sido activada aún.
+ invalid: "%{authentication_keys} o contraseña inválida."
+ last_attempt: Tiene un intento más antes de que tu cuenta sea bloqueada.
+ locked: Tu cuenta está bloqueada.
+ not_found_in_database: Incorrecto %{authentication_keys} o contraseña.
pending: Su cuenta aun se encuentra bajo revisión.
timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar.
unauthenticated: Necesita iniciar sesión o registrarse antes de continuar.
unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar.
mailer:
confirmation_instructions:
- action: Verificar dirección de correo electrónico
- action_with_app: Confirmar y regresar a %{app}
- explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estas a un clic de activarla. Si no fue usted, por favor ignore este correo electrónico.
- explanation_when_pending: Usted ha solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirme su dirección de correo electrónico, revisaremos su aplicación. No puede iniciar sesión hasta que su aplicación sea revisada. Si su solicitud está rechazada, sus datos serán eliminados, así que no será necesaria ninguna acción adicional por ti. Si no fuera usted, por favor ignore este correo electrónico.
- extra_html: Por favor revise las reglas de la instancia y nuestros términos de servicio.
+ action: Verifica tu dirección de correo electrónico
+ action_with_app: Confirmar y volver a %{app}
+ explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estás a un solo clic de activarlo. Si no fuiste tú, por favor ignora este correo electrónico.
+ explanation_when_pending: Has solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirmes tu dirección de correo electrónico, revisaremos tu solicitud. Puedes iniciar sesión para cambiar tus datos o eliminar tu cuenta, pero no puedes acceder a la mayoría de las funciones hasta que tu cuenta sea aprobada. Si su solicitud es rechazada, sus datos serán eliminados, por lo que no será necesaria ninguna acción adicional por su parte. Si no fuiste tú, por favor ignora este correo electrónico.
+ extra_html: Por favor, revisa las reglas del servidor y nuestros términos de servicio.
subject: 'Mastodon: Instrucciones de confirmación para %{instance}'
title: Verificar dirección de correo electrónico
email_changed:
@@ -64,52 +64,52 @@ es:
added:
explanation: La siguiente clave de seguridad ha sido añadida a su cuenta
subject: 'Mastodon: Nueva clave de seguridad'
- title: Se agregó una nueva clave de seguridad
+ title: Se ha añadido una nueva clave de seguridad
deleted:
- explanation: La siguiente clave de seguridad ha sido eliminada de su cuenta
+ explanation: La siguiente clave de seguridad ha sido eliminada de tu cuenta
subject: 'Mastodon: Clave de seguridad eliminada'
- title: Una de sus claves de seguridad ha sido eliminada
+ title: Una de tus claves de seguridad ha sido eliminada
webauthn_disabled:
- explanation: La autenticación con claves de seguridad ha sido desactivada para tu cuenta. El inicio de sesión es ahora posible únicamente utilizando el token generado por la aplicación emparejada TOTP.
- subject: 'Mastodon: Autenticación con claves de seguridad desactivada'
- title: Claves de seguridad desactivadas
+ explanation: La autenticación con claves de seguridad ha sido deshabilitada para tu cuenta. Ahora el inicio de sesión solo es posible utilizando el token generado por la aplicación TOTP emparejada.
+ subject: 'Mastodon: Autenticación con claves de seguridad deshabilitada'
+ title: Claves de seguridad deshabilitadas
webauthn_enabled:
- explanation: La autenticación con clave de seguridad ha sido habilitada para su cuenta. Su clave de seguridad ahora puede ser usada para iniciar sesión.
- subject: 'Mastodon: Autenticación con clave de seguridad activada'
- title: Claves de seguridad activadas
+ explanation: La autenticación con clave de seguridad ha sido habilitada para tu cuenta. Ahora tu clave de seguridad puede ser utilizada para iniciar sesión.
+ subject: 'Mastodon: Autenticación de clave de seguridad habilitada'
+ title: Claves de seguridad habilitadas
omniauth_callbacks:
- failure: No podemos autentificarle desde %{kind} debido a "%{reason}".
- success: Autentificado con éxito desde la cuenta %{kind} .
+ failure: No se te pudo autenticar desde %{kind} porque “%{reason}”.
+ success: Autenticado correctamente desde la cuenta de %{kind}.
passwords:
- no_token: No puede acceder a esta página sin provenir desde el correo de reinicio de contraseña. Si viene desde el correo de reinicio de contraseña, por favor asegúrese que está utilizando la dirección completa proporcionada.
- send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo reiniciar su contraseña en pocos minutos.
- send_paranoid_instructions: Si su correo electrónico existe en nuestra base de datos, recibirá un enlace de recuperación de contraseña en su dirección de correo en pocos minutos.
- updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado.
- updated_not_active: Su contraseña ha sido cambiada con éxito.
+ no_token: No puedes acceder a esta página si no vienes desde un correo electrónico de restablecimiento de contraseña. Si vienes desde un correo electrónico de restablecimiento de contraseña, por favor asegúrate de utilizar la URL completa proporcionada.
+ send_instructions: Si tu dirección de correo electrónico existe en nuestra base de datos, recibirás un enlace de recuperación de contraseña en tu dirección de correo electrónico en pocos minutos. Por favor, comprueba tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ send_paranoid_instructions: Si tu dirección de correo electrónico existe en nuestra base de datos, recibirás un enlace de recuperación de contraseña en tu dirección de correo electrónico en pocos minutos. Por favor, comprueba tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ updated: Tu contraseña ha sido cambiada con éxito. Has iniciado sesión.
+ updated_not_active: Tu contraseña se ha cambiado con éxito.
registrations:
- destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo."
- signed_up: "¡Bienvenido! Se ha registrado con éxito."
- signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía.
- signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada.
- signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada.
- signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta.
- update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo.
- updated: su cuenta ha sido actualizada con éxito.
+ destroyed: "¡Hasta otra! Tu cuenta ha sido cancelada con éxito. Esperamos verte de nuevo pronto."
+ signed_up: "¡Bienvenido! Te has registrado correctamente."
+ signed_up_but_inactive: Te has registrado con éxito. Sin embargo, no se ha podido iniciar sesión porque tu cuenta aún no está activada.
+ signed_up_but_locked: Te has registrado con éxito. Sin embargo, no se ha podido iniciar sesión porque tu cuenta está bloqueada.
+ signed_up_but_pending: Un mensaje con un enlace de confirmación ha sido enviado a tu dirección de correo electrónico. Después de hacer clic en el enlace, revisaremos tu solicitud. Serás notificado si se aprueba.
+ signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a tu dirección de correo electrónico. Por favor, sigue el enlace para activar tu cuenta. Por favor, comprueba tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ update_needs_confirmation: Has actualizado tu cuenta con éxito, pero necesitamos verificar tu nueva dirección de correo electrónico. Por favor, comprueba tu correo electrónico y sigue el enlace de confirmación para confirmar tu nueva dirección de correo electrónico. Por favor, comprueba tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ updated: Tu cuenta se ha actualizado con éxito.
sessions:
- already_signed_out: Cerró sesión con éxito.
- signed_in: Se registró con éxito.
- signed_out: Cerró sesión con éxito.
+ already_signed_out: Sesión cerrada con éxito.
+ signed_in: Sesión iniciada con éxito.
+ signed_out: Sesión cerrada con éxito.
unlocks:
- send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo desbloquear su cuenta en pocos minutos.
- send_paranoid_instructions: Si su cuenta existe, recibirá un correo electrónico con instrucciones sobre cómo desbloquearla en pocos minutos.
- unlocked: Su cuenta ha sido desbloqueada con éxito. Por favor inicie sesión para continuar.
+ send_instructions: En unos minutos recibirás un correo electrónico con instrucciones para desbloquear tu cuenta. Por favor, comprueba tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ send_paranoid_instructions: Si tu cuenta existe, en unos minutos recibirás un correo electrónico con instrucciones para desbloquearla. Por favor, revisa tu carpeta de correo no deseado si no recibes dicho correo electrónico.
+ unlocked: Tu cuenta ha sido desbloqueada con éxito. Por favor, inicia sesión para continuar.
errors:
messages:
- already_confirmed: ya fue confirmado, por favor intente iniciar sesión
- confirmation_period_expired: necesita ser confirmado dentro de %{period}, por favor pida una nueva
- expired: ha expirado, por favor pida una nueva
+ already_confirmed: ya estaba confirmada, por favor intenta iniciar sesión
+ confirmation_period_expired: necesita confirmarse dentro de %{period}, por favor, solicita una nueva
+ expired: ha caducado, por favor solicita una nueva
not_found: no encontrado
- not_locked: no fue bloqueada
+ not_locked: no estaba bloqueada
not_saved:
- one: '1 error prohibió este %{resource} de ser guardado:'
- other: "%{count} errores prohibieron este %{resource} de ser guardado:"
+ one: '1 error impidió que este %{resource} se guardase:'
+ other: "%{count} errores impidieron que este %{resource} se guardase:"
diff --git a/config/locales/devise.eu.yml b/config/locales/devise.eu.yml
index 473246d8a..1e71181d1 100644
--- a/config/locales/devise.eu.yml
+++ b/config/locales/devise.eu.yml
@@ -60,6 +60,23 @@ eu:
title: 2FA berreskuratze kodeak aldatuta
unlock_instructions:
subject: 'Mastodon: Desblokeatzeko argibideak'
+ webauthn_credential:
+ added:
+ explanation: Segurtasun gako hau zure kontuan gehitu da
+ subject: 'Mastodon: Segurtasun gako berria'
+ title: Segurtasun gako berri bat gehitu da
+ deleted:
+ explanation: Segurtasun gako hau zure kontutik ezabatu da
+ subject: 'Mastodon: Segurtasun gakoa ezabatu da'
+ title: Zure segurtasun gakoetako bat ezabatu da
+ webauthn_disabled:
+ explanation: Segurtasun gako bidezko autentifikazioa desgaitu da zure kontuan. Saioa hasteko modu bakarra parekatutako TOTP aplikazioak sortutako tokena erabiltzea da orain.
+ subject: 'Mastodon: Segurtasun gakoekin autentifikatzea desgaituta'
+ title: Segurtasun gakoak desgaituta
+ webauthn_enabled:
+ explanation: Segurtasun gako bidezko autentifikazioa gaitu da zure kontuan. Orain zure segurtasun gakoa erabil dezakezu saioa hasteko.
+ subject: 'Mastodon: Segurtasun gako bidezko autentifikazioa gaituta'
+ title: Segurtasun gakoak gaituta
omniauth_callbacks:
failure: Ezin izan zaizu %{kind} motatik autentifikatu arrazoia "%{reason}" dela.
success: Ongi egin da autentifikazioa %{kind} kontuarekin.
diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml
index 84a471459..3716bf4af 100644
--- a/config/locales/devise.fi.yml
+++ b/config/locales/devise.fi.yml
@@ -2,7 +2,7 @@
fi:
devise:
confirmations:
- confirmed: Sähköpostiosoitteesi vahvistus onnistui.
+ confirmed: Sähköpostiosoitteesi on vahvistettu onnistuneesti.
send_instructions: Saat pian sähköpostitse ohjeet sähköpostiosoitteesi vahvistamiseen. Jos et saanut viestiä, tarkista roskapostikansiosi.
send_paranoid_instructions: Jos sähköpostiosoitteesi on tietokannassamme, saat pian ohjeet osoitteesi vahvistamiseen. Jos et saanut viestiä, tarkista roskapostikansiosi.
failure:
diff --git a/config/locales/devise.gd.yml b/config/locales/devise.gd.yml
new file mode 100644
index 000000000..7b0f0a7bc
--- /dev/null
+++ b/config/locales/devise.gd.yml
@@ -0,0 +1,117 @@
+---
+gd:
+ devise:
+ confirmations:
+ confirmed: Chaidh an seòladh puist-d agad a dhearbhadh.
+ send_instructions: Gheibh thu post-d an ceann corra mionaid le stiùireadh air mar a dhearbhas tu an seòladh puist-d agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ send_paranoid_instructions: Ma tha an seòladh puist-d agad san stòr-dàta againn, gheibh thu post-d an ceann corra mionaid le stiùireadh air mar a dhearbhas tu an seòladh puist-d agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ failure:
+ already_authenticated: Tha thu air do chlàradh a-steach mu thràth.
+ inactive: Cha deach an cunntas agad a ghnìomhachadh fhathast.
+ invalid: "%{authentication_keys} no facal-faire mì-dhligheach."
+ last_attempt: Tha aon oidhirp eile agad mus dèid an cunntas agad a ghlasadh.
+ locked: Tha an cunntas agad glaiste.
+ not_found_in_database: "%{authentication_keys} no facal-faire mì-dhligheach."
+ pending: Tha an cunntas agad fo lèirmheas fhathast.
+ timeout: Dh’fhalbh an ùine air an t-seisean agad. Clàraich a-steach a-rithist airson leantainn air adhart.
+ unauthenticated: Feumaidh tu clàradh a-steach no clàradh leinn mus lean thu air adhart.
+ unconfirmed: Feumaidh tu an seòladh puist-d agad a dhearbhadh mus lean thu air adhart.
+ mailer:
+ confirmation_instructions:
+ action: Dearbh an seòladh puist-d
+ action_with_app: Dearbh ’s till gu %{app}
+ explanation: Tha thu air cunntas a chruthachadh air %{host} leis an t-seòladh puist-d seo. Chan eil ach aon bhriogadh a dhìth gus am bi e gnìomhach. Mur e tusa a bh’ ann, leig seachad am post-d seo.
+ explanation_when_pending: Chuir thu iarrtas a-steach ach am faigh thu cuireadh dha %{host} air an t-seòladh puist-d seo. Nuair a bhios tu air an seòladh puist-d agad a dhearbhadh, nì sinn lèirmheas air d’ iarrtas. ’S urrainn dhut clàradh a-steach airson am fiosrachadh mu d’ dhèidhinn atharrachadh no an cunntas agad a sguabadh às ach chan fhaigh thu cothrom air a’ mhòrchuid a ghleusan gus am bi an cunntas agad air a dhearbhadh. Ma thèid d’ iarrtas a dhiùltadh, thèid an dàta agad a thoirt air falbh is cha leig thu leas dad sam bith eile a dhèanamh. Mur e tusa a bh’ ann, leig seachad am post-d seo.
+ extra_html: Thoir sùil air riaghailtean an fhrithealaiche agus teirmichean na seirbheise againn cuideachd.
+ subject: 'Mastodon: Stiùireadh dearbhaidh airson %{instance}'
+ title: Dearbh an seòladh puist-d
+ email_changed:
+ explanation: 'Tha an seòladh puist-d dhan chunntas agad ’ga atharrachadh gu:'
+ extra: Mur an do dh’atharraich thu fhèin am post-d agad, tha deagh theans gun d’ fhuair cuideigin eile grèim air a’ chunntas agad. Atharraich am facal-faire agad sa bhad no cuir fios gu rianaire an fhrithealaiche ma chaidh do ghlasadh a-mach às a’ chunntas agad.
+ subject: 'Mastodon: Chaidh am post-d atharrachadh'
+ title: Seòladh puist-d ùr
+ password_change:
+ explanation: Chaidh facal-faire a’ chunntais agad atharrachadh.
+ extra: Mur an do dh’atharraich thu fhèin am facal-faire agad, tha deagh theans gun d’ fhuair cuideigin eile grèim air a’ chunntas agad. Atharraich am facal-faire agad sa bhad no cuir fios gu rianaire an fhrithealaiche ma chaidh do ghlasadh a-mach às a’ chunntas agad.
+ subject: 'Mastodon: Chaidh am facal-faire atharrachadh'
+ title: Chaidh am facal-faire atharrachadh
+ reconfirmation_instructions:
+ explanation: Dearbh an seòladh ùr airson am post-d agad atharrachadh.
+ extra: Mura rinn thu fhèin an t-atharrachadh seo, leig seachad am post-d seo. Chan atharraich seòladh puist-d a’ chunntais Mastodon agad gus am briog thu air a’ cheangal gu h-àrd.
+ subject: 'Mastodon: Dearbh am post-d airson %{instance}'
+ title: Dearbh an seòladh puist-d
+ reset_password_instructions:
+ action: Atharraich am facal-faire
+ explanation: Dh’iarr thu facal-faire ùr dhan chunntas agad.
+ extra: Mur an do dh’iarr thu fhèin seo, leig seachad am post-d seo. Chan atharraich am facal-faire agad gus an inntrig thu an ceangal gu h-àrd ’s an cruthaich thu facal-faire ùr.
+ subject: 'Mastodon: Stiùireadh air ath-shuidheachadh an fhacail-fhaire'
+ title: Ath-shuidheachadh an fhacail-fhaire
+ two_factor_disabled:
+ explanation: Chaidh an dearbhadh dà-cheumnach a chur à comas dhan chunntas agad. ’S urrainn dhut clàradh a-steach le seòladh puist-d is facal-faire a-mhàin a-nis.
+ subject: 'Mastodon: Tha an dearbhadh dà-cheumnach à comas'
+ title: Dearbhadh dà-cheumnach à comas
+ two_factor_enabled:
+ explanation: Chaidh an dearbhadh dà-cheumnach a chur an comas dhan chunntas agad. Bidh feum air tòcan a ghineas an aplacaid TOTP a chaidh a phaidhreachadh airson clàradh a-steach.
+ subject: 'Mastodon: Tha an dearbhadh dà-cheumnach an comas'
+ title: Dearbhadh dà-cheumnach an comas
+ two_factor_recovery_codes_changed:
+ explanation: Tha na còdan aisig a bh’ agad cheana mì-dhligheach a-nis agus chaidh feadhainn ùra a ghintinn.
+ subject: 'Mastodon: Chaidh còdan aisig dà-cheumnach ath-ghintinn'
+ title: Dh’atharraich còdan aisig an dearbhaidh dà-cheumnaich
+ unlock_instructions:
+ subject: 'Mastodon: Stiùireadh neo-ghlasaidh'
+ webauthn_credential:
+ added:
+ explanation: Chaidh an iuchair tèarainteachd a leanas a chur ris a’ chunntas agad
+ subject: 'Mastodon: Iuchair tèarainteachd ùr'
+ title: Chaidh iuchair tèarainteachd ùr a chur ris
+ deleted:
+ explanation: Chaidh an iuchair tèarainteachd a leanas a sguabadh às on chunntas agad
+ subject: 'Mastodon: Chaidh iuchair tèarainteachd a sguabadh às'
+ title: Chaidh tè dhe na h-iuchraichean tèarainteachd agad a sguabadh às
+ webauthn_disabled:
+ explanation: Chaidh an dearbhadh le iuchraichean tèarainteachd a chur à comas dhan chunntas agad. ’S urrainn dhut clàradh a-steach leis an tòcan a ghineas an aplacaid TOTP paidhrichte a-mhàin a-nis.
+ subject: 'Mastodon: Tha dearbhadh le iuchraichean tèarainteachd à comas'
+ title: Chaidh na h-iuchraichean tèarainteachd a chur à comas
+ webauthn_enabled:
+ explanation: Chaidh an dearbhadh le iuchair tèarainteachd a chur an comas dhan chunntas agad. ’S urrainn dhut an iuchair tèarainteachd agad a chleachdadh airson clàradh a-steach a-nis.
+ subject: 'Mastodon: Tha dearbhadh le iuchair tèarainteachd an comas'
+ title: Chaidh na h-iuchraichean tèarainteachd a chur an comas
+ omniauth_callbacks:
+ failure: Cha b’ urrainn dhuinn dearbhadh cò thusa o %{kind} air adhbhar “%{reason}”.
+ success: Chaidh dearbhadh cò thusa o chunntas %{kind}.
+ passwords:
+ no_token: Chan urrainn dhut an duilleag seo inntrigeadh ach o phost-d ath-shuidheachadh facail-fhaire. Mas ann gun tàinig thu o phost-d dhen leithid, dèan cinnteach gun do chleachd thu an URL slàn a chaidh a thoirt dhut.
+ send_instructions: Ma tha an seòladh puist-d agad san stòr-dàta againn, gheibh thu post-d le ceangal aiseag facail-fhaire an ceann corra mionaid. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ send_paranoid_instructions: Ma tha an seòladh puist-d agad san stòr-dàta againn, gheibh thu post-d le ceangal aiseag facail-fhaire an ceann corra mionaid. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ updated: Chaidh am facal-faire agad atharrachadh ’s do chlàradh a-steach.
+ updated_not_active: Chaidh am facal-faire agad atharrachadh.
+ registrations:
+ destroyed: Soraidh slàn leat! Chaidh crìoch a chur air a’ chunntas agad. Tha sinn an dòchas nach bi thu fada gun tilleadh.
+ signed_up: Fàilte ort! Tha thu air clàradh leinn.
+ signed_up_but_inactive: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s nach deach an cunntas agad a ghnìomhachadh fhathast.
+ signed_up_but_locked: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s gu bheil an cunntas agad glaiste.
+ signed_up_but_pending: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Nuair a bhios tu air briogadh air a’ cheangal, nì sinn lèirmheas air d’ iarrtas. Leigidh sinn fios dhut ma thèid aontachadh ris.
+ signed_up_but_unconfirmed: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Lean ris a’ cheangal ud a ghnìomhachadh a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ update_needs_confirmation: Chaidh an cunntas agad ùrachadh ach feumaidh sinn an seòladh puist-d ùr agad a dhearbhadh. Thoir sùil air a’ phost-d agad agus lean ris a’ cheangal dearbhaidh a dhearbhadh an t-seòlaidh puist-d ùir agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ updated: Chaidh an cunntas agad ùrachadh.
+ sessions:
+ already_signed_out: Chaidh do chlàradh a-mach.
+ signed_in: Chaidh do chlàradh a-steach.
+ signed_out: Chaidh do chlàradh a-mach.
+ unlocks:
+ send_instructions: Gheibh thu post-d an ceann corra mionaid le stiùireadh air mar a bheir thu a’ ghlas far a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ send_paranoid_instructions: Ma tha an cunntas agad ann, gheibh thu post-d an ceann corra mionaid le stiùireadh air mar a bheir thu a’ ghlas fo bhàrr. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+ unlocked: Chaidh a’ ghlas a thoirt far a’ chunntais agad. Clàraich a-steach airson leantainn air adhart.
+ errors:
+ messages:
+ already_confirmed: "– chaidh a dhearbhadh mu thràth, feuch is clàraich a-steach"
+ confirmation_period_expired: "– feumaidh tu a dhearbhadh am broinn %{period}, iarr fear ùr"
+ expired: "– dh’fhalbh an ùine air, iarr fear ùr"
+ not_found: "– cha deach seo a lorg"
+ not_locked: "– cha deach seo a ghlasadh"
+ not_saved:
+ few: 'Dh’adhbharaich %{count} mearachdan nach gabh a’ %{resource} seo a shàbhaladh:'
+ one: 'Dh’adhbharaich %{count} mhearachd nach gabh a’ %{resource} seo a shàbhaladh:'
+ other: 'Dh’adhbharaich %{count} mearachd nach gabh a’ %{resource} seo a shàbhaladh:'
+ two: 'Dh’adhbharaich %{count} mhearachd nach gabh a’ %{resource} seo a shàbhaladh:'
diff --git a/config/locales/devise.hi.yml b/config/locales/devise.hi.yml
index 62048c9f5..423d69fd0 100644
--- a/config/locales/devise.hi.yml
+++ b/config/locales/devise.hi.yml
@@ -4,7 +4,6 @@ hi:
confirmations:
confirmed: आपका ईमेल पता का सफलतापूर्वक पुष्टि कर लिया गया था
failure:
- already_authenticated: आप पहले से ही साइन इन है|
inactive: आपका खाता सक्रिय नहीं है!
locked: आपके अकाउंट को ब्लॉक किया गया है।
mailer:
diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml
index a60d2e88b..d05985f4d 100644
--- a/config/locales/devise.hu.yml
+++ b/config/locales/devise.hu.yml
@@ -2,19 +2,19 @@
hu:
devise:
confirmations:
- confirmed: Az e-mail címed sikeresen megerősítésre került.
- send_instructions: Pár percen belül kapni fogsz egy e-mailt az e-mail címed megerősítéséhez szükséges lépésekről.
- send_paranoid_instructions: Ha az e-mail címed létezik az adatbázisunkban, pár percen belül kapni fogsz egy e-mailt az e-mail címed megerősítéséhez szükséges lépésekről.
+ confirmed: Az e-mail címedet sikeresen megerősítettük.
+ send_instructions: Néhány percen belül kapni fogsz egy levelet az e-mail cím megerősítésére vonatkozó utasításokkal. Kérjük, ellenőrizd a spam mappádat, ha nem látod az e-mailt a beérkezett e-mailek közt.
+ send_paranoid_instructions: Ha az e-mail címed már szerepel az adatbázisunkban, néhány percen belül kapsz egy levelet az e-mail cím megerősítésére vonatkozó utasításokkal. Kérjük, ellenőrizd a spam mappád, ha nem látod az e-mailt.
failure:
already_authenticated: Már bejelentkeztél.
- inactive: Fiókodat még nem aktiválták.
+ inactive: A fiókod még nincs aktiválva.
invalid: Helytelen %{authentication_keys} vagy jelszó.
- last_attempt: Már csak egy próbálkozásod maradt mielőtt a fiókodat lezárjuk.
- locked: Fiókod le van zárva.
+ last_attempt: Már csak egy próbálkozásod maradt, mielőtt a fiókodat zároljuk.
+ locked: A fiókodat zároltuk.
not_found_in_database: Helytelen %{authentication_keys} vagy jelszó.
- pending: Fiókod még engedélyezés alatt áll.
- timeout: A munkamenet lejárt. Jelentkezz be újra a folytatáshoz.
- unauthenticated: A folytatás előtt be kell jelentkezned.
+ pending: A fiókod még felülvizsgálat alatt áll.
+ timeout: A munkameneted lejárt. Kérjük, a folytatáshoz jelentkezz be újra.
+ unauthenticated: A folytatás előtt be kell jelentkezned vagy regisztrálnod kell.
unconfirmed: A folytatás előtt meg kell erősítened az e-mail címed.
mailer:
confirmation_instructions:
@@ -23,11 +23,11 @@ hu:
explanation: Ezzel az e-mail címmel kezdeményeztek regisztrációt a(z) %{host} oldalon. Csak egy kattintás, és a felhasználói fiókodat aktiváljuk. Ha a regisztrációt nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak.
explanation_when_pending: Ezzel az e-mail címmel meghívást kértél a(z) %{host} oldalon. Ahogy megerősíted az e-mail címed, átnézzük a jelentkezésedet. Ennek ideje alatt nem tudsz belépni. Ha a jelentkezésed elutasítjuk, az adataidat töröljük, más teendőd nincs. Ha a kérelmet nem te kezdeményezted, kérjük tekintsd ezt az e-mailt tárgytalannak.
extra_html: Kérjük tekintsd át a a szerver szabályzatát és a felhasználási feltételeket.
- subject: 'Mastodon: Megerősítési lépések %{instance}'
+ subject: 'Mastodon: Megerősítési lépések ehhez az instancehez: %{instance}'
title: E-mail cím megerősítése
email_changed:
- explanation: 'A fiókodhoz tartozó e-mail címet az alábbira módosítod:'
- extra: Ha nem te kezdeményezted a fiókodhoz tartozó e-mail cím módosítását, valaki hozzáférhetett a fiókodhoz. Legjobb, ha azonnal megváltoztatod a jelszavadat; ha nem férsz hozzá a fiókodhoz, vedd fel a kapcsolatot a szervered adminisztrátorával.
+ explanation: 'A fiókodhoz tartozó e-mail cím a következőre változik:'
+ extra: Ha nem változtattad meg az e-mail címed, akkor valószínű, hogy valaki hozzáférhetett a fiókodhoz. Kérjük, azonnal változtasd meg a jelszavadat, vagy lépj kapcsolatba a szerver adminisztrátorával, ha ki vagy zárva a fiókodból.
subject: 'Mastodon: a fiókodhoz tartozó e-mail címet megváltoztattuk'
title: Új e-mail cím
password_change:
@@ -47,11 +47,11 @@ hu:
subject: 'Mastodon: Jelszó visszaállítási lépések'
title: Jelszó visszaállítása
two_factor_disabled:
- explanation: A fiókod kétlépcsős hitelesítését letiltottuk. A bejelentkezés most már csak e-mail címmel és jelszóval lehetséges.
- subject: Kétlépcsős azonosítás letiltva
- title: Kétlépcsős hitelesítés engedélyezve
+ explanation: A fiókod kétlépcsős hitelesítését kikapcsoltuk. A bejelentkezés mostantól csak az e-mail cím és a jelszó használatával lesz lehetséges.
+ subject: Kétlépcsős azonosítás kikapcsolva
+ title: Kétlépcsős hitelesítés kikapcsolva
two_factor_enabled:
- explanation: Kétlépcsős hitelesítés engedélyezve van a fiókodban. Bejelentkezéshez a párosított TOTP alkalmazás által létrehozott tokenre lesz szükség.
+ explanation: A kétlépcsős hitelesítést engedélyeztük a fiókodban. A bejelentkezéshez a párosított TOTP alkalmazás által generált tokenre lesz szükség.
subject: Kétlépcsős azonosítás engedélyezve
title: Kétlépcsős hitelesítés engedélyezve
two_factor_recovery_codes_changed:
@@ -91,8 +91,8 @@ hu:
signed_up: Üdvözlünk! Sikeresen regisztráltál.
signed_up_but_inactive: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókodat még nem aktiválták.
signed_up_but_locked: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókod le van zárva.
- signed_up_but_pending: Egy üzenetet a megerősítési linkkel kiküldtünk az e-mail címedre. Ha kattintasz a linkre, átnézzük a kérelmedet. Értesítünk, ha jóváhagytuk.
- signed_up_but_unconfirmed: Egy üzenetet a megerősítési linkkel kiküldtünk az e-mail címedre. Kérjük használd a linket a fiókod aktiválásához.
+ signed_up_but_pending: Egy megerősítési hivatkozással ellátott üzenetet kiküldtünk az e-mail címedre. Ha kattintasz a hivatkozásra, átnézzük a kérelmedet. Értesítünk, ha jóváhagytuk.
+ signed_up_but_unconfirmed: Egy megerősítési hivatkozással ellátott üzenetet kiküldtünk az e-mail címedre. Kérjük használd a hivatkozást a fiókod aktiválásához. Ellenőrizd a spam mappádat, ha nem kaptad meg ezt a levelet.
update_needs_confirmation: Sikeresen frissítetted a fiókodat, de szükségünk van az e-mail címed megerősítésére. Kérlek ellenőrizd az e-mailedet és kövesd a levélben szereplő megerősítési linket az e-mail címed megerősítéséhez. Ellenőrizd a levélszemét mappád, ha nem kaptál volna ilyen levelet.
updated: Fiókod frissítése sikeres.
sessions:
diff --git a/config/locales/devise.id.yml b/config/locales/devise.id.yml
index 6fe6c257d..2e51a69dc 100644
--- a/config/locales/devise.id.yml
+++ b/config/locales/devise.id.yml
@@ -18,36 +18,36 @@ id:
unconfirmed: Anda harus mengkonfirmasi alamat email terlebih dahulu.
mailer:
confirmation_instructions:
- action: Verifikasi alamat surel
+ action: Verifikasi alamat email
action_with_app: Konfirmasi dan kembali ke %{app}
- explanation: Anda membuat akun di %{host} dengan surel ini. Anda hanya perlu satu klik untuk mengaktifkannya. Jika ini bukan Anda, abaikan surel ini.
- explanation_when_pending: Anda melamar undangan ke %{host} dengan surel ini. Saat Anda mengonfirmasi alamat surel Anda, kami akan meninjaunya. Anda dapat masuk untuk mengubah detail Anda atau menghapus akun Anda, tapi Anda tak dapat mengakses mayoritas fungsi sampai akun disetujui. Jika lamaran anda ditolak, data Anda akan dihapus, tak ada aksi lain yang dilakukan dari Anda. Jika ini bukan Anda, abaikan surel ini.
+ explanation: Anda membuat akun di %{host} dengan email ini. Anda hanya perlu satu klik untuk mengaktifkannya. Jika ini bukan Anda, abaikan email ini.
+ explanation_when_pending: Anda melamar undangan ke %{host} dengan email ini. Saat Anda mengonfirmasi alamat email Anda, kami akan meninjaunya. Anda dapat masuk untuk mengubah detail Anda atau menghapus akun Anda, tapi Anda tak dapat mengakses mayoritas fungsi sampai akun disetujui. Jika lamaran Anda ditolak, data Anda akan dihapus, jadi Anda tak perlu melakukan apa-apa. Jika ini bukan Anda, abaikan email ini.
extra_html: Tolong cek juga peraturan server dan ketentuan layanan kami.
subject: 'Mastodon: Petunjuk mengkonfirmasi untuk %{instance}'
- title: Verifikasi alamat surel
+ title: Verifikasi alamat email
email_changed:
- explanation: 'Alamat surel akun Anda diubah menjadi:'
- extra: Jika Anda tak mengganti surel Anda, mungkin seseorang telah mendapatkan akses ke Akun Anda. Mohon ubah kata sandi secepatnya atau hubungi admin server jika Anda dikunci dari akun Anda.
- subject: 'Mastodon: Surel diganti'
- title: Alamat surel baru
+ explanation: 'Alamat email akun Anda diubah menjadi:'
+ extra: Jika Anda tak mengganti email Anda, mungkin seseorang telah mendapatkan akses ke akun Anda. Mohon ubah kata sandi secepatnya atau hubungi admin server jika akun Anda terkunci.
+ subject: 'Mastodon: Email diganti'
+ title: Alamat email baru
password_change:
explanation: Kata sandi akun Anda telah diganti.
extra: Jika Anda tak mengubah kata sandi Anda, mungkin seseorang telah mendapatkan akses ke akun Anda. Mohon ubah kata sandi secepatnya atau hubungi admin server jika Anda dikunci dari akun Anda.
subject: 'Mastodon: Kata sandi telah diubah'
title: Kata sandi diubah
reconfirmation_instructions:
- explanation: Konfirmasi alamat baru untuk mengubah surel Anda.
- extra: Jika perubahan ini tidak dimulai dari Anda, abaikan surel ini. Alamat surel untuk akun Mastodon tak berubah sampai Anda mengakses tautan di atas.
- subject: 'Mastodon: Konfirmasi surel untuk %{instance}'
- title: Verifikasi alamat surel
+ explanation: Konfirmasi alamat baru untuk mengubah email Anda.
+ extra: Jika perubahan ini tidak dimulai dari Anda, abaikan email ini. Alamat email untuk akun Mastodon tak berubah sampai Anda mengakses tautan di atas.
+ subject: 'Mastodon: Konfirmasi email untuk %{instance}'
+ title: Verifikasi alamat email
reset_password_instructions:
action: Ubah kata sandi
explanation: Kata sandi baru yang diminta untuk akun Anda.
- extra: Jika Anda tak meminta ini, abaikan surel ini. Kata sandi tak berubah sampai Anda mengakses tautan di atas dan membuatnya yang baru.
+ extra: Jika Anda tak meminta ini, abaikan email ini. Kata sandi tak berubah sampai Anda mengakses tautan di atas dan membuatnya yang baru.
subject: 'Mastodon: Petunjuk mereset kata sandi'
title: Reset kata sandi
two_factor_disabled:
- explanation: Otentifikasi dua-faktor untuk akun Anda dimatikan. Kini Masuk dapat dilakukan hanya dengan alamat surel dan kata sandi.
+ explanation: Otentifikasi dua-faktor untuk akun Anda dimatikan. Kini Masuk dapat dilakukan hanya dengan alamat email dan kata sandi.
subject: 'Mastodon: Otentifikasi dua-faktor dimatikan'
title: 2FA dimatikan
two_factor_enabled:
@@ -91,7 +91,7 @@ id:
signed_up: Selamat datang! Pendaftaran anda berhasil.
signed_up_but_inactive: Anda berhasil melakukan pendaftaran. Tetapi kami tidak dapat memasukkan anda karena akun anda belum diaktifkan.
signed_up_but_locked: Anda berhasil melakukan pendaftaran. Tetapi kami tidak dapat memasukkan anda karena akun anda dikunci.
- signed_up_but_pending: Pesan dengan tautan konfirmasi telah dikirim ke alamat surel Anda. Setelah Anda mengklik tautan, kami akan meninjau lamaran Anda. Anda akan diberitahu jika diterima.
+ signed_up_but_pending: Pesan dengan tautan konfirmasi telah dikirim ke alamat email Anda. Setelah Anda mengklik tautan, kami akan meninjau lamaran Anda. Anda akan diberitahu jika diterima.
signed_up_but_unconfirmed: Sebuah pesan berisi link konfirmasi telah dikirim ke alamat email anda. Silakan ikuti link tersebut untuk mengaktifkan akun anda.
update_needs_confirmation: Akun anda telah berhasil diubah, tetapi kami harus memverifikasi alamat email anda yang baru. Mohon cek email anda dan ikuti link untuk mengkonfirmasi alamat email anda yang baru.
updated: Akun anda berhasil diubah.
diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml
index 31e3c7f94..53e8169e4 100644
--- a/config/locales/devise.it.yml
+++ b/config/locales/devise.it.yml
@@ -20,7 +20,7 @@ it:
confirmation_instructions:
action: Verifica indirizzo email
action_with_app: Conferma e torna a %{app}
- explanation: Hai creato un account su %{host} con questo indirizzo email. Sei lonatno solo un clic dall'attivarlo. Se non sei stato tu, per favore ignora questa email.
+ explanation: Hai creato un account su %{host} con questo indirizzo email. Sei lontano solo un clic dall'attivarlo. Se non sei stato tu, per favore ignora questa email.
explanation_when_pending: Hai richiesto un invito a %{host} con questo indirizzo email. Una volta confermato il tuo indirizzo e-mail, analizzeremo la tua richiesta. Non potrai eseguire l'accesso fino a quel momento. Se la tua richiesta sarà rifiutata, i tuoi dati saranno rimossi, quindi nessun'altra azione ti sarà richiesta. Se non fossi stato tu, per favore ignora questa email.
extra_html: Per favore controllale regole del server e i nostri termini di servizio.
subject: 'Mastodon: Istruzioni di conferma per %{instance}'
diff --git a/config/locales/devise.kw.yml b/config/locales/devise.kw.yml
new file mode 100644
index 000000000..b2cfc12ff
--- /dev/null
+++ b/config/locales/devise.kw.yml
@@ -0,0 +1 @@
+kw:
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index fadc48126..bf3b02e3f 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -51,7 +51,7 @@ nl:
subject: 'Mastodon: Tweestapsverificatie uitgeschakeld'
title: Tweestapsverificatie uitgeschakeld
two_factor_enabled:
- explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen aanmelden is een door een tweestapsverificatie-app genereerde aanmeldcode nodig.
+ explanation: Tweestapsverificatie voor jouw account is ingeschakeld. Om te kunnen aanmelden is een door een tweestapsverificatie-app genereerde toegangscode nodig.
subject: 'Mastodon: Tweestapsverificatie ingeschakeld'
title: Tweestapsverificatie ingeschakeld
two_factor_recovery_codes_changed:
@@ -78,7 +78,7 @@ nl:
subject: 'Mastodon: Verificatie met beveiligingssleutels is ingeschakeld'
title: Beveiligingssleutels ingeschakeld
omniauth_callbacks:
- failure: Kon je niet inloggen met jouw %{kind} account, omdat "%{reason}".
+ failure: Kon je niet inloggen met jouw %{kind} account, omdat “%{reason}”.
success: Succesvol met jouw %{kind} account ingelogd.
passwords:
no_token: Je kunt deze pagina niet benaderen zonder dat je een e-mail om je wachtwoord opnieuw in te stellen hebt ontvangen.
diff --git a/config/locales/devise.pa.yml b/config/locales/devise.pa.yml
new file mode 100644
index 000000000..bb8a6c834
--- /dev/null
+++ b/config/locales/devise.pa.yml
@@ -0,0 +1 @@
+pa:
diff --git a/config/locales/devise.pt-PT.yml b/config/locales/devise.pt-PT.yml
index 496ce7b1d..0bd6bb3cd 100644
--- a/config/locales/devise.pt-PT.yml
+++ b/config/locales/devise.pt-PT.yml
@@ -9,7 +9,7 @@ pt-PT:
already_authenticated: A tua sessão já está aberta.
inactive: A tua conta ainda não está ativada.
invalid: "%{authentication_keys} ou palavra-passe inválida."
- last_attempt: Tens mais uma tentativa antes de a tua conta ficar bloqueada.
+ last_attempt: Tens mais uma tentativa antes de a tua conta ser bloqueada.
locked: A tua conta está bloqueada.
not_found_in_database: "%{authentication_keys} ou palavra-passe inválida."
pending: A sua conta está ainda a aguardar revisão.
@@ -21,7 +21,7 @@ pt-PT:
action: Verificar o endereço de e-mail
action_with_app: Confirmar e regressar a %{app}
explanation: Criou uma conta em %{host} com este endereço de e-mail. Está a um clique de activá-la. Se não foi você que fez este registo, por favor ignore esta mensagem.
- explanation_when_pending: Você solicitou um convite para %{host} com este endereço de e-mail. Logo que confirme o seu endereço de e-mail, iremos rever a sua inscrição. Pode iniciar sessão para alterar os seus dados ou eliminar a sua conta, mas não poderá aceder à maioria das funções até que a sua conta seja aprovada. Se a sua inscrição for rejeitada, os seus dados serão removidos, pelo que não será necessária qualquer acção adicional da sua parte. Se não solicitou este convite, por favor, ignore este e-mail.
+ explanation_when_pending: Você solicitou um convite para %{host} com este endereço de e-mail. Logo que confirme o seu endereço de e-mail, iremos rever a sua inscrição. Pode iniciar sessão para alterar os seus dados ou eliminar a sua conta, mas não poderá aceder à maioria das funções até que a sua conta seja aprovada. Se a sua inscrição for rejeitada, os seus dados serão eliminados, pelo que não será necessária qualquer ação adicional da sua parte. Se não solicitou este convite, por favor, ignore este e-mail.
extra_html: Por favor leia as regras da instância e os nossos termos de serviço.
subject: 'Mastodon: Instruções de confirmação %{instance}'
title: Verificar o endereço de e-mail
@@ -66,9 +66,9 @@ pt-PT:
subject: 'Mastodon: Nova chave de segurança'
title: Foi adicionada uma nova chave de segurança
deleted:
- explanation: A seguinte chave de segurança foi removida da sua conta
- subject: 'Mastodon: Chave de segurança removida'
- title: Uma das suas chaves de segurança foi removida
+ explanation: A seguinte chave de segurança foi eliminada da sua conta
+ subject: 'Mastodon: Chave de segurança eliminada'
+ title: Uma das suas chaves de segurança foi eliminada
webauthn_disabled:
explanation: A autenticação com chave de segurança foi desativada para sua conta. É agora possível aceder à sua conta utilizando apenas o token gerado pelo aplicativo TOTP pareado.
subject: 'Mastodon: Autenticação com chave de segurança desativada'
@@ -90,7 +90,7 @@ pt-PT:
destroyed: Adeus! A tua conta foi cancelada. Esperamos ver-te em breve.
signed_up: Bem-vindo! A tua conta foi registada com sucesso.
signed_up_but_inactive: A tua conta foi registada. No entanto ainda não está activa.
- signed_up_but_locked: A tua conta foi registada. No entanto está bloqueada.
+ signed_up_but_locked: A sua conta foi registada com sucesso. No entanto, não pudemos iniciar a sua sessão porque a conta está bloqueada.
signed_up_but_pending: Uma mensagem com um link de confirmação foi enviada para o seu endereço de e-mail. Depois de clicar no link, iremos rever a sua inscrição. Será notificado se a sua conta é aprovada.
signed_up_but_unconfirmed: Uma mensagem com um link de confirmação foi enviada para o teu email. Por favor segue esse link para activar a tua conta.
update_needs_confirmation: Alteraste o teu endereço de email ou palavra-passe, mas é necessário confirmar essa alteração. Por favor vai ao teu email e segue link que te enviámos.
@@ -102,7 +102,7 @@ pt-PT:
unlocks:
send_instructions: Vais receber um email com instruções para desbloquear a tua conta dentro de alguns minutos.
send_paranoid_instructions: Se a tua conta existe, vais receber um email com instruções a detalhar como a desbloquear dentro de alguns minutos.
- unlocked: A sua conta foi desbloqueada. Por favor inica uma nova sessão para continuar.
+ unlocked: A sua conta foi desbloqueada com sucessos. Por favor, inicie uma nova sessão para continuar.
errors:
messages:
already_confirmed: já confirmado, por favor tente iniciar sessão
diff --git a/config/locales/devise.sc.yml b/config/locales/devise.sc.yml
index 0256c4674..02bcab0d1 100644
--- a/config/locales/devise.sc.yml
+++ b/config/locales/devise.sc.yml
@@ -3,36 +3,36 @@ sc:
devise:
confirmations:
confirmed: S'indiritzu tuo de posta eletrònica est istadu cunfirmadu.
- send_instructions: As a retzire unu messàgiu de posta eletrònica cun is istrutziones pro sa cunfirma de s'indiritzu de posta eletrònica tra pagos minutos. Controlla sa cartella de s'arga si no as retzidu custu messàgiu de posta eletrònica.
- send_paranoid_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire unu messàgiu de posta eletrònica cun is istrutziones pro sa cunfirma de s'indiritzu de posta eletrònica tra pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ send_instructions: As a retzire unu messàgiu de posta eletrònica cun is istrutziones pro sa cunfirma de s'indiritzu de posta eletrònica de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ send_paranoid_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire unu messàgiu de posta eletrònica cun is istrutziones pro sa cunfirma de s'indiritzu de posta eletrònica de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
failure:
already_authenticated: Ses giai intradu.
inactive: Su contu tuo no est ancora ativadu.
- invalid: "%{authentication_keys} o crae de intrada non vàlida."
+ invalid: "%{authentication_keys} o crae non vàlida."
last_attempt: Tenes ancora un'àteru tentativu, in antis chi su contu tuo bèngiat blocadu.
locked: Su contu tuo est blocadu.
- not_found_in_database: "%{authentication_keys} o crae de intrada non vàlida."
+ not_found_in_database: "%{authentication_keys} o crae non vàlida."
pending: Su contu tuo est ancora in revisione.
timeout: Sa sessione tua est iscadida. Torra·bi a intrare pro sighire.
unauthenticated: Tocat a ti autenticare o ti registrare prima de sighire.
- unconfirmed: Deves cunfirmare s'indiritzu tuo de posta eletrònica prima de sighire.
+ unconfirmed: Depes cunfirmare s'indiritzu tuo de posta eletrònica prima de sighire.
mailer:
confirmation_instructions:
action: Verìfica s'indiritzu de posta eletrònica
action_with_app: Cunfirma e torra a %{app}
explanation: As creadu unu contu in %{host} cun custu indiritzu de posta eletrònica. T'ammancat unu clic pro s'ativatzione. Si non fias tue, non càrcules custu messàgiu de posta eletrònica.
explanation_when_pending: As pedidu un'invitu a %{host} cun custu indiritzu de posta eletrònica. Cunfirmadu s'indiritzu de posta eletrònica, amus a revisionare sa dimanda tua. Podes intrare pro cambiare is detàllios o cantzellare su contu tuo, ma non podes atzèdere a sa majoria de is funtziones finas a chi su contu tuo siat aprovadu. Si sa dimanda tua est refudada, is datos ant a èssere bogados, duncas no t'ant a pedire prus peruna atzione. Si non fias tue, non càrcules custu messàgiu de posta eletrònica.
- extra_html: Verìfica puru is règulas de su server e is cunditziones de servìtziu nostras.
+ extra_html: Verìfica puru is règulas de su serbidore e is cunditziones de servìtziu nostras.
subject: 'Mastodon: Istrutziones de cunfirma pro %{instance}'
title: Verìfica s'indiritzu de posta eletrònica
email_changed:
- explanation: 'Custu indiritzu de posta eletrònica pro su contu tuo est istadu mudadu a:'
- extra: Si no as mudadu indiritzu de posta, forsis un'àtera persone at otentu s'atzessu de su contu tuo. Muda sa crae tua a sa lestra o chistiona cun s'amministratzione de su server si ses blocadu a foras dae su contu tuo.
+ explanation: 'Custu indiritzu de posta eletrònica pro su contu tuo est essende mudadu a:'
+ extra: Si no as mudadu indiritzu de posta, forsis un'àtera persone at otentu s'atzessu de su contu tuo. Muda sa crae tua a sa lestra o chistiona cun s'amministratzione de su serbidore si ses blocadu a foras dae su contu tuo.
subject: 'Mastodon: Indiritzu de posta mudadu'
title: Indiritzu de posta eletrònica nou
password_change:
explanation: Sa crae de su contu tuo est istada mudada.
- extra: Si no as mudadu sa crae tua, forsis un'àtera persone at otentu s'atzessu de su contu tuo. Muda sa crae tua a sa lestra o chistiona cun s'amministratzione de su server si ses blocadu a foras dae su contu tuo.
+ extra: Si no as mudadu sa crae tua, forsis un'àtera persone at otentu s'atzessu de su contu tuo. Muda sa crae tua a sa lestra o chistiona cun s'amministratzione de su serbidore si ses blocadu a foras dae su contu tuo.
subject: 'Mastodon: Crae mudada'
title: Crae mudada
reconfirmation_instructions:
@@ -45,7 +45,7 @@ sc:
explanation: As pedidu una crae noa pro su contu tuo.
extra: Si no dd'as pedida tue, non càrcules custu messàgiu de posta eletrònica. Custa crae no at a mudare finas a s'atzessu tuo a su ligàmene in subra pro sa creatzione de una noa.
subject: 'Mastodon: Istrutziones pro resetare sa crae'
- title: Crae resetada
+ title: Càmbiu de crae
two_factor_disabled:
explanation: S'autenticatzione a duos fatores est istada disativada pro su contu tuo. Immoe podes intrare impreende isceti indiritzu de posta eletrònica e crae.
subject: 'Mastodon: Autenticatzione a duos fatores disativada'
@@ -70,38 +70,38 @@ sc:
subject: 'Mastodon: Crae de seguresa cantzellada'
title: Una de is craes de seguresa tuas est istada cantzellada
webauthn_disabled:
- explanation: S'autenticatzione cun craes de seguresa est istada disabilitada pro su contu tuo. S'intrada como est possìbile impreende isceti su getone ingendradu dae s'aplicatzione TOTP ligada.
+ explanation: S'autenticatzione cun craes de seguresa est istada disabilitada pro su contu tuo. S'intrada immoe est possìbile impreende isceti su getone ingendradu dae s'aplicatzione TOTP ligada.
subject: 'Mastodon: Autenticatzione cun craes de seguresa disabilitada'
title: Craes de seguresa disabilitadas
webauthn_enabled:
- explanation: S'autenticatzione cun crae de seguresa est istada abilitada pro su contu tuo. Sa crae de seguresa tua como si podet èssere impreare pro intrare.
+ explanation: S'autenticatzione cun crae de seguresa est istada abilitada pro su contu tuo. Sa crae de seguresa tua immoe si podet impreare pro intrare.
subject: 'Mastodon: Autenticatzione cun sa crae de seguresa ativada'
title: Craes de seguresa abilitadas
omniauth_callbacks:
- failure: Autenticatzione dae %{kind} fallida, ca "%{reason}".
- success: Autenticadu dae su contu de %{kind}.
+ failure: Faddina in s'autenticatzione dae %{kind}, ca "%{reason}".
+ success: Autenticatzione curreta dae su contu de %{kind}.
passwords:
- no_token: No podes intrare a custa pàgina chene passare dae unu messàgiu de posta eletrònica pro resetare sa crae. Si benes dae su messàgiu de posta pro resetare sa crae, faghe in modu de impreare s'URL intreu chi t'ant donadu.
- send_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire una unu ligàmene de recùperu de sa crae a s'indiritzu tuo de posta eletrònica tra pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
- send_paranoid_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire una unu ligàmene de recùperu de sa crae a s'indiritzu tuo de posta eletrònica tra pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
- updated: Sa crae tua est istada mudada. Immoe ses intradu.
+ no_token: No podes intrare a custa pàgina sena passare dae unu messàgiu de posta eletrònica pro resetare sa crae. Si benes dae su messàgiu de posta pro resetare sa crae, faghe in modu de impreare s'URL intreu chi t'ant donadu.
+ send_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire unu ligàmene de recùperu de sa crae a s'indiritzu tuo de posta eletrònica de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ send_paranoid_instructions: Si s'indiritzu de posta eletrònica tuo esistit in sa base de datos nostra, as a retzire unu ligàmene de recùperu de sa crae a s'indiritzu tuo de posta eletrònica de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ updated: Sa crae tua est istada mudada. Autenticatzione curreta.
updated_not_active: Sa crae tua est istada mudada.
registrations:
destroyed: A si bìdere! Su contu tuo est istadu cantzelladu. Isperamus de ti torrare a bìdere chitzi.
- signed_up: Registratzione curreta. Ti donamus sa benebènnida!
+ signed_up: Registratzione curreta. Ti donamus sa benebènnida.
signed_up_but_inactive: Registratzione curreta. Mancari de aici, si no ti faghimus intrare est ca su contu tuo no est ancora ativu.
signed_up_but_locked: Registratzione curreta. Mancari de aici, si no ti faghimus intrare est ca su contu tuo est blocadu.
signed_up_but_pending: Unu ligàmene de cunfirma est istadu imbiadu a s'indiritzu tuo de posta eletrònica. A pustis chi incarcas in su ligàmene, amus a revisionare sa dimanda tua. Si aprovada, t'at a arribare una notìfica.
- signed_up_but_unconfirmed: Unu ligàmene de cunfirma est istadu imbiadu a s'indiritzu tuo de posta eletrònica. Sighi su ligàmene pro ativare su contu tuo. Controlla sa cartella de s'arga si no as retzidu custu messàgiu de posta eletrònica.
- update_needs_confirmation: Su contu tuo est istadu atualizadu, ma devimus verificare s'indiritzu tuo de posta eletrònica nou. Controlla sa posta eletrònica e sighi su ligàmene pro cunfirmare s'indiritzu nou de posta eletrònica. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ signed_up_but_unconfirmed: Unu ligàmene de cunfirma est istadu imbiadu a s'indiritzu tuo de posta eletrònica. Sighi su ligàmene pro ativare su contu tuo. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ update_needs_confirmation: Su contu tuo est istadu atualizadu, ma depimus verificare s'indiritzu tuo de posta eletrònica nou. Controlla sa posta eletrònica e sighi su ligàmene pro cunfirmare s'indiritzu nou de posta eletrònica. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
updated: Su contu tuo est istadu atualizadu.
sessions:
already_signed_out: Sessione serrada.
signed_in: Atzessu curretu.
signed_out: Sessione serrada.
unlocks:
- send_instructions: As a retzire unu messàgiu de posta eletrònica cun is istrutziones pro isblocare su contu tuo tra pagos minutos. Controlla sa cartella de s'arga si no as retzidu custu messàgiu de posta eletrònica.
- send_paranoid_instructions: Si su contu tuo esistit, as a retzire unu messàgiu de posta eletrònica cun istrutziones pro ddu isblocare tra pagos minutos. Controlla sa cartella de s'arga si no as retzidu custu messàgiu de posta eletrònica.
+ send_instructions: As a retzire unu messàgiu de posta eletrònica cun is istrutziones pro isblocare su contu tuo de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
+ send_paranoid_instructions: Si su contu tuo esistit, as a retzire unu messàgiu de posta eletrònica cun istrutziones pro ddu isblocare de immoe a pagos minutos. Controlla sa cartella de s'àliga si no as retzidu custu messàgiu de posta eletrònica.
unlocked: Su contu tuo est istadu isblocadu. Intra pro sighire.
errors:
messages:
@@ -111,5 +111,5 @@ sc:
not_found: no agatadu
not_locked: no fiat blocadu
not_saved:
- one: '1 faddina at proibidu de sarvare custu %{resource}:'
+ one: '1 faddina at proibidu de sarvare %{resource}:'
other: "%{count} faddinas ant proibidu de sarvare %{resource}:"
diff --git a/config/locales/devise.si.yml b/config/locales/devise.si.yml
new file mode 100644
index 000000000..346b13be4
--- /dev/null
+++ b/config/locales/devise.si.yml
@@ -0,0 +1,27 @@
+---
+si:
+ devise:
+ failure:
+ locked: ඔබගේ ගිණුම අගුළු දමා ඇත.
+ mailer:
+ confirmation_instructions:
+ title: වි. තැපැල් ලිපිනය තහවුරු කරන්න
+ email_changed:
+ title: නව විද්යුත් තැපැල් ලිපිනය
+ password_change:
+ title: මුරපදය වෙනස් කරන ලදි
+ reconfirmation_instructions:
+ title: වි. තැපැල් ලිපිනය තහවුරු කරන්න
+ reset_password_instructions:
+ action: මුරපදය වෙනස් කරන්න
+ webauthn_disabled:
+ title: ආරක්ෂක යතුරු අබල කර ඇත
+ webauthn_enabled:
+ title: ආරක්ෂක යතුරු සබල කර ඇත
+ registrations:
+ update_needs_confirmation: ඔබ ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කළ නමුත් අපට ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කළ යුතුය. කරුණාකර ඔබගේ විද්යුත් තැපෑල පරීක්ෂා කර තහවුරු කිරීමේ සබැඳිය අනුගමනය කර ඔබගේ නව විද්යුත් තැපැල් ලිපිනය තහවුරු කරන්න. ඔබට මෙම විද්යුත් තැපෑල නොලැබුනේ නම් කරුණාකර ඔබගේ අයාචිත තැපැල් බහාලුම පරීක්ෂා කරන්න.
+ updated: ඔබගේ ගිණුම සාර්ථකව යාවත්කාලීන කර ඇත.
+ sessions:
+ already_signed_out: සාර්ථකව නික්මුනි.
+ signed_in: සාර්ථකව පිවිසුනි.
+ signed_out: සාර්ථකව නික්මුනි.
diff --git a/config/locales/devise.sq.yml b/config/locales/devise.sq.yml
index 97b97ce48..6e2f1b411 100644
--- a/config/locales/devise.sq.yml
+++ b/config/locales/devise.sq.yml
@@ -4,7 +4,7 @@ sq:
confirmations:
confirmed: Adresa juaj email u ripohua me sukses.
send_instructions: Brenda pak minutash, do të merrni një email me udhëzime se si të ripohoni adresën tuaj email. Ju lutemi, kontrolloni dosjen e mesazheve të padëshiruar, nëse nuk e morët këtë email.
- send_paranoid_instructions: Nëse adresa juaj email gjendet në bazën tonë të të dhënave, brenda pak minutash, do të merrni një email me udhëzime se si të ripohoni adresën tuaj email. Ju lutemi, kontrolloni dosjen e mesazheve të padëshiruar, nëse nuk e morët këtë email.
+ send_paranoid_instructions: Nëse adresa juaj email gjendet në bazën tonë të të dhënave, brenda pak minutash, do të merrni një email me udhëzime se si të ripohoni adresën tuaj email. Ju lutemi, nëse nuk e morët këtë email, kontrolloni dosjen e mesazheve të padëshiruar.
failure:
already_authenticated: Jeni tashmë i futur.
inactive: Llogaria juaj s’është aktivizuar ende.
diff --git a/config/locales/devise.sr.yml b/config/locales/devise.sr.yml
index baffc2701..9739ee21d 100644
--- a/config/locales/devise.sr.yml
+++ b/config/locales/devise.sr.yml
@@ -12,6 +12,7 @@ sr:
last_attempt: Имате још један покушај пре него што Ваш налог буде закључан.
locked: Ваш налог је закључан.
not_found_in_database: Неисправан %{authentication_keys} или лозинка.
+ pending: Ваш рачун је још увек у прегледу.
timeout: Време трајања Ваше сесије је истекло. За наставак пријавите се поново.
unauthenticated: За наставак се морате пријавити или регистровати.
unconfirmed: Пре наставка морате потврдити свој налог.
@@ -20,6 +21,7 @@ sr:
action: Потврдите адресу е-поште
action_with_app: Потврди и врати се на %{app}
explanation: Направили сте налог на %{host} са адресом ове е-поште. На један клик сте удаљени од активирања. Ако ово нисте ви, молимо игноришите ову е-пошту.
+ explanation_when_pending: Пријавили сте се за позив %{host} са овим имејлом. Када потврдите свој имејл, прегледаћемо вашу пријаву. Можете се пријавити да бисте променили детаље или избрисали налог, али не можете приступити већини функција док вам налог не буде одобрен. Ако ваша пријава буде одбијена, ваши подаци ће бити уклоњени, тако да од вас неће бити потребне даље радње. Ако ово нисте били ви, занемарите овај имејл.
extra_html: Молимо да такође проверите правила ове инстанце и наше услове коришћења.
subject: 'Мастодонт: Упутство за потврду корисничког налога на инстанци %{instance}'
title: Потврдите адресу е-поште
@@ -44,8 +46,37 @@ sr:
extra: Ако нисте затражили ово, молимо игноришите ову е-пошту. Ваша лозинка неће бити промењена док не приступите повезници/вези изнад и не направите нову.
subject: 'Мастодонт: Упутство за ресетовање лозинке'
title: Лозинка ресетована
+ two_factor_disabled:
+ explanation: Двофакторска аутентификација за ваш налог је онемогућена. Пријава је сада могућа само помоћу имејла и лозинке.
+ subject: 'Mastodon: Двофакторска аутентификација је онемогућена'
+ title: 2FA искључена
+ two_factor_enabled:
+ explanation: Двофакторска аутентификација је омогућена за ваш налог. За пријаву ће бити потребан токен који генерише упарена ТОТП апликација.
+ subject: 'Mastodon: Двофакторска аутентификација је омогућена'
+ title: 2FA укључена
+ two_factor_recovery_codes_changed:
+ explanation: Претходни кодови за опоравак су поништени и генерисани су нови.
+ subject: 'Mastodon: Поново су генерисани кодови за опоравак'
+ title: 2FA кодови опоравка промењени
unlock_instructions:
subject: 'Мастодонт: Упутство за откључавање корисничког налога'
+ webauthn_credential:
+ added:
+ explanation: Следећи безбедносни кључ је додат на ваш налог
+ subject: 'Mastodon: Нови сигурносни кључ'
+ title: Додан је нови безбедносни кључ
+ deleted:
+ explanation: Следећи безбедносни кључ је уклоњен из вашег налога
+ subject: 'Mastodon: Сигурносни кључ је избрисан'
+ title: Један од ваших безбедносних кључева је избрисан
+ webauthn_disabled:
+ explanation: Аутентификација помоћу безбедносних кључева је онемогућена за ваш налог. Пријава је сада могућа само помоћу токена који генерише упарена ТОТП апликација.
+ subject: 'Mastodon: Аутентификација са сигурносним кључевима онемогућена'
+ title: Сигурносни кључеви су онемогућени
+ webauthn_enabled:
+ explanation: Аутентификација са безбедносним кључем је омогућена за ваш налог. Ваш сигурносни кључ се сада може користити за пријављивање.
+ subject: 'Mastodon: Омогућена аутентификација са безбедним кључем'
+ title: Сигурносни кључеви су омогућени
omniauth_callbacks:
failure: Нисмо у могућности ауторизовати Вас са %{kind} налогом због "%{reason}".
success: Успешна ауторизација са %{kind} налога.
@@ -60,6 +91,7 @@ sr:
signed_up: Добродошли! Успешно сте се регистровали.
signed_up_but_inactive: Успешно сте се регистровали. Нажалост не можете се пријавити зато што Ваш налог још није активиран.
signed_up_but_locked: Успешно сте се регистровали. Нажалост не можете се пријавити зато што је Ваш налог закључан.
+ signed_up_but_pending: На ваш имејл послата је порука са везом за потврду. Након што кликнете на везу, прегледаћемо вашу пријаву. Бићете обавештени ако буде одобрено.
signed_up_but_unconfirmed: Порука за потврду Вашег налога је послата на Вашу имејл адресу. Кликните на везу у имејлу да потврдите свој налог. Молимо проверите и спам фасциклу ако нисте примили поруку.
update_needs_confirmation: Uспешно сте ажурирали свој налог, али треба да потврдимо нову адресу Ваше е-поште. Молимо Вас да проверите е-пошту и пратите линк за потврду нове адресе Ваше е-поште.
updated: Ваш налог је успешно ажуриран.
diff --git a/config/locales/devise.sv.yml b/config/locales/devise.sv.yml
index 071f00878..b16532606 100644
--- a/config/locales/devise.sv.yml
+++ b/config/locales/devise.sv.yml
@@ -2,41 +2,41 @@
sv:
devise:
confirmations:
- confirmed: Din e-postadress har bekräftats.
- send_instructions: Du kommer att få ett mail med instruktioner för hur du bekräftar din e-postadress om några minuter. Kontrollera din spammapp om du inte fick det här e-postmeddelandet.
- send_paranoid_instructions: Om din e-postadress finns i vår databas får du ett mail med instruktioner för hur du bekräftar din e-postadress inom några minuter. Kontrollera din spammapp om du inte fick det här e-postmeddelandet.
+ confirmed: Din e-postadress har framgångsfullt bekräftats.
+ send_instructions: Du kommer att få ett mail med instruktioner för hur du bekräftar din e-postadress om några minuter. Kontrollera din spammapp om du inte fick det e-postmeddelandet.
+ send_paranoid_instructions: Om din e-postadress finns i vår databas får du ett mail med instruktioner för hur du bekräftar din e-postadress inom några minuter. Kontrollera din spammapp om du inte fick det e-postmeddelandet.
failure:
- already_authenticated: Du är redan inloggad.
- inactive: Ditt konto är inte aktiverat än..
- invalid: Ogiltigt %{authentication_keys} eller lösenord.
- last_attempt: Du har ytterligare ett försök innan ditt konto blir låst.
+ already_authenticated: Du har redan loggat in.
+ inactive: Ditt konto är ännu inte aktiverat.
+ invalid: Ogiltig %{authentication_keys} eller lösenord.
+ last_attempt: Du har ytterligare ett försök innan ditt konto är låst.
locked: Ditt konto är låst.
not_found_in_database: Ogiltigt %{authentication_keys} eller lösenord.
pending: Ditt konto granskas fortfarande.
- timeout: Din session löpte ut. Vänligen logga in igen för att fortsätta.
+ timeout: Din session har avslutats. Vänligen logga in igen för att fortsätta.
unauthenticated: Du måste logga in eller registrera dig innan du fortsätter.
unconfirmed: Du måste bekräfta din e-postadress innan du fortsätter.
mailer:
confirmation_instructions:
- action: Verifiera e-postadress
+ action: Verifiera e-post adressen
action_with_app: Bekräfta och återgå till %{app}
- explanation: Du har skapat ett konto på %{host} med den här e-postadressen. Du är ett klick bort från att aktivera det. Om det inte var du ignorerar det här e-postmeddelandet.
- explanation_when_pending: Du ansökte om en inbjudan till %{host} med denna e-postadress. När du har bekräftat din e-postadress kommer vi att granska din ansökan. Du kan logga in för att ändra dina uppgifter eller ta bort ditt konto, men du kan inte komma åt de flesta funktionerna förrän ditt konto har godkänts. Om din ansökan avvisas kommer dina uppgifter att tas bort, så ingen ytterligare åtgärd kommer att krävas av dig. Om detta inte var du, vänligen ignorera detta mail.
- extra_html: Kolla gärna också instansens regler och våra användarvillkor.
- subject: 'Mastodon: Bekräftelsesinstruktioner för %{instance}'
- title: Verifiera e-postadress
+ explanation: Du har skapat ett konto på %{host} med den här e-post adressen. Du är ett klick från att aktivera det. Om det inte var du, ignorera det här e-post meddelandet.
+ explanation_when_pending: Du ansökte om en inbjudan till %{host} med denna e-post adress. När du har bekräftat din e-post adress kommer vi att granska din ansökan. Du kan logga in för att ändra dina uppgifter eller ta bort ditt konto, men du kan inte komma åt de flesta funktionerna förrän ditt konto har godkänts. Om din ansökan avvisas kommer dina uppgifter att tas bort, så ingen ytterligare åtgärd kommer att krävas av dig. Om detta inte var du, vänligen ignorera detta mail.
+ extra_html: Vänligen observera systemets regler och våra användarvillkor.
+ subject: 'Mastodon: Bekräftelse instruktioner för %{instance}'
+ title: Verifiera e-post adress
email_changed:
- explanation: 'E-postadressen för ditt konto ändras till:'
- extra: Om du inte ändrade din e-post är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta instansadministratören om du är låst ur ditt konto.
- subject: 'Mastodon: E-post ändrad'
- title: Ny e-postadress
+ explanation: 'E-post adressen för ditt konto ändras till:'
+ extra: Om du inte ändrade din e-post är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta dataserver administratören om du är utelåst från ditt konto.
+ subject: 'Mastodon: e-post ändrad'
+ title: Ny e-post adress
password_change:
explanation: Lösenordet för ditt konto har ändrats.
- extra: Om du inte ändrade ditt lösenord är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta instansadministratören om du är utelåst från ditt konto.
- subject: 'Mastodon: Lösenord ändrat'
- title: lösenordet ändrat
+ extra: Om du inte ändrade ditt lösenord är det troligt att någon har fått tillgång till ditt konto. Vänligen ändra ditt lösenord omedelbart eller kontakta server administratören om du är utelåst från ditt konto.
+ subject: 'Mastodon: Lösenordet har ändrats'
+ title: Lösenordet har ändrats
reconfirmation_instructions:
- explanation: Bekräfta den nya adressen för att ändra din e-postadress.
+ explanation: Bekräfta den nya adressen för att ändra din e-post adress.
extra: Om den här ändringen inte initierades av dig kan du ignorerar det här e-postmeddelandet. E-postadressen för Mastodon-kontot ändras inte förrän du kommer åt länken ovan.
subject: 'Mastodon: Bekräfta e-post för %{instance}'
title: Verifiera e-postadress
@@ -62,15 +62,20 @@ sv:
subject: 'Mastodon: Lås upp instruktioner'
webauthn_credential:
added:
+ explanation: Följande säkerhetsnyckel har lagts till i ditt konto
subject: 'Mastodon: Ny säkerhetsnyckel'
title: En ny säkerhetsnyckel har lagts till
deleted:
explanation: Följande säkerhetsnyckel har tagits bort från ditt konto
subject: 'Mastodon: Säkerhetsnyckeln borttagen'
- title: En av dina säkerhetsnycklar har tagits bort
+ title: En av dina säkerhetsnycklar har raderats
webauthn_disabled:
+ explanation: Autentisering med säkerhetsnycklar till ditt konto har inaktiverats. Inloggning är nu endast möjligt med den token som genereras av den sammankopplade TOTP-appen.
+ subject: 'Mastodon: Autentisering med säkerhetsnycklar är inaktiverat'
title: Säkerhetsnycklar inaktiverade
webauthn_enabled:
+ explanation: Autentisering med säkerhetsnyckel till ditt konto har aktiverats. Din säkerhetsnyckel kan nu användas för inloggning.
+ subject: 'Mastodon: Autentisering med säkerhetsnyckel är aktiverat'
title: Säkerhetsnycklar aktiverade
omniauth_callbacks:
failure: Det gick inte att autentisera dig från %{kind} för "%{reason}".
diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml
index 371a497ad..0b5524a74 100644
--- a/config/locales/devise.th.yml
+++ b/config/locales/devise.th.yml
@@ -14,7 +14,7 @@ th:
not_found_in_database: "%{authentication_keys} หรือรหัสผ่านไม่ถูกต้อง"
pending: บัญชีของคุณยังอยู่ระหว่างการตรวจทาน
timeout: เซสชันของคุณหมดอายุแล้ว โปรดลงชื่อเข้าอีกครั้งเพื่อดำเนินการต่อ
- unauthenticated: คุณต้องลงชื่อเข้าหรือลงทะเบียนก่อนดำเนินการต่อ
+ unauthenticated: คุณจำเป็นต้องลงชื่อเข้าหรือลงทะเบียนก่อนดำเนินการต่อ
unconfirmed: คุณต้องยืนยันที่อยู่อีเมลของคุณก่อนดำเนินการต่อ
mailer:
confirmation_instructions:
@@ -68,6 +68,7 @@ th:
deleted:
explanation: ลบกุญแจความปลอดภัยดังต่อไปนี้ออกจากบัญชีของคุณแล้ว
subject: 'Mastodon: ลบกุญแจความปลอดภัยแล้ว'
+ title: ลบหนึ่งในกุญแจความปลอดภัยของคุณแล้ว
webauthn_disabled:
subject: 'Mastodon: ปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยแล้ว'
title: ปิดใช้งานกุญแจความปลอดภัยแล้ว
@@ -75,7 +76,7 @@ th:
subject: 'Mastodon: เปิดใช้งานการรับรองความถูกต้องด้วยกุญแจความปลอดภัยแล้ว'
title: เปิดใช้งานกุญแจความปลอดภัยแล้ว
omniauth_callbacks:
- failure: ไม่สามารถรับรองความถูกต้องของคุณจาก %{kind} เนื่องจาก "%{reason}"
+ failure: ไม่สามารถรับรองความถูกต้องคุณจาก %{kind} เนื่องจาก “%{reason}”
success: รับรองความถูกต้องจากบัญชี %{kind} สำเร็จ
passwords:
no_token: คุณไม่สามารถเข้าถึงหน้านี้โดยไม่ได้มาจากอีเมลการตั้งรหัสผ่านใหม่ หากคุณมาจากอีเมลการตั้งรหัสผ่านใหม่ โปรดตรวจสอบให้แน่ใจว่าคุณได้ใช้ URL แบบเต็มที่ให้มา
@@ -103,7 +104,7 @@ th:
errors:
messages:
already_confirmed: ได้รับการยืนยันไปแล้ว โปรดลองลงชื่อเข้า
- confirmation_period_expired: ต้องได้รับการยืนยันภายใน %{period} โปรดขออีเมลใหม่
+ confirmation_period_expired: จำเป็นต้องได้รับการยืนยันภายใน %{period} โปรดขออีเมลใหม่
expired: หมดอายุแล้ว โปรดขออีเมลใหม่
not_found: ไม่พบ
not_locked: ไม่ได้ล็อคอยู่
diff --git a/config/locales/devise.tt.yml b/config/locales/devise.tt.yml
index 5eab4abff..3b73d0fab 100644
--- a/config/locales/devise.tt.yml
+++ b/config/locales/devise.tt.yml
@@ -1 +1,15 @@
+---
tt:
+ devise:
+ confirmations:
+ confirmed: Сезнең э. почта адресыгыз уңышлы расланган.
+ mailer:
+ reset_password_instructions:
+ action: Серсүзне үзгәртү
+ title: Серсүзне алыштыру
+ webauthn_credential:
+ deleted:
+ subject: 'Mastodon: Иминлек ачкычы бетерелгән'
+ errors:
+ messages:
+ not_found: табылмады
diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml
index a83070893..e727e47c7 100644
--- a/config/locales/devise.zh-CN.yml
+++ b/config/locales/devise.zh-CN.yml
@@ -13,9 +13,9 @@ zh-CN:
locked: 你的帐户已被锁定。
not_found_in_database: "%{authentication_keys}或密码错误。"
pending: 你的帐号仍在审核中。
- timeout: 您的会话已过期。请重新登录再继续操作。
+ timeout: 你的会话已过期。请重新登录再继续操作。
unauthenticated: 继续操作前请注册或者登录。
- unconfirmed: 您必须先确认您的电子邮件地址才能继续。
+ unconfirmed: 你必须先确认你的电子邮件地址才能继续。
mailer:
confirmation_instructions:
action: 验证电子邮件地址
@@ -62,19 +62,19 @@ zh-CN:
subject: Mastodon:帐户解锁信息
webauthn_credential:
added:
- explanation: 以下安全密钥已添加到您的帐户
+ explanation: 以下安全密钥已添加到你的帐户
subject: Mastodon:新的安全密钥
title: 已添加一个新的安全密钥
deleted:
- explanation: 以下安全密钥已从您的账户中删除
+ explanation: 以下安全密钥已从你的账户中删除
subject: Mastodon:安全密钥已删除
- title: 您的安全密钥之一已被删除
+ title: 你的安全密钥之一已被删除
webauthn_disabled:
- explanation: 您的帐户已禁用安全密钥认证。现在只能使用配对的 TOTP 应用程序生成的令牌登录。
+ explanation: 你的帐户已禁用安全密钥认证。现在只能使用配对的 TOTP 应用程序生成的令牌登录。
subject: Mastodon:安全密钥认证已禁用
title: 安全密钥已禁用
webauthn_enabled:
- explanation: 您的帐户已启用安全密钥身份验证。您的安全密钥现在可以用于登录。
+ explanation: 你的帐户已启用安全密钥身份验证。你的安全密钥现在可以用于登录。
subject: Mastodon:安全密钥认证已启用
title: 已启用安全密钥
omniauth_callbacks:
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index f7b087824..910c77e8a 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -2,14 +2,14 @@
zh-TW:
devise:
confirmations:
- confirmed: 您的電子信箱位址已確認成功。
+ confirmed: 您的電子信箱地址已確認成功。
send_instructions: 幾分鐘後您將收到確認信件。若未收到此信件,請檢查垃圾郵件資料夾。
send_paranoid_instructions: 如果您的電子信箱存在於我們的資料庫,您將會在幾分鐘內收到確認信。若未收到請檢查垃圾郵件資料夾。
failure:
already_authenticated: 您已登入。
inactive: 您的帳戶尚未啟用。
invalid: 無效的 %{authentication_keys} 或密碼。
- last_attempt: 在帳號鎖定前,您還有最後一次嘗試機會。
+ last_attempt: 在帳戶鎖定前,您還有最後一次嘗試機會。
locked: 已鎖定您的帳戶。
not_found_in_database: 無效的 %{authentication_keys} 或密碼。
pending: 您的帳戶仍在審核中。
@@ -18,28 +18,28 @@ zh-TW:
unconfirmed: 您必須先確認電子信箱才能繼續使用。
mailer:
confirmation_instructions:
- action: 驗證電子信箱位址
+ action: 驗證電子信箱地址
action_with_app: 確認並返回 %{app}
- explanation: 您已經在 %{host} 上以此電子信箱位址建立了一支帳戶。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
- explanation_when_pending: 您使用此電子信箱位址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳號,但直到您的帳號被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。
+ explanation: 您已經在 %{host} 上以此電子信箱地址建立了一支帳戶。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
+ explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳戶,但直到您的帳戶被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。
extra_html: 同時也請看看伺服器規則與服務條款。
subject: Mastodon:%{instance} 確認說明
- title: 驗證電子信箱位址
+ title: 驗證電子信箱地址
email_changed:
- explanation: 您帳戶的電子信箱位址將變更為:
+ explanation: 您帳戶的電子信箱地址將變更為:
extra: 若您未變更電子信箱,那麼很有可能是某人取得了您帳戶的存取權限。請立刻變更密碼,或當帳戶被鎖定時,請聯絡伺服器的管理員。
subject: Mastodon:已變更電子信箱
- title: 新電子信箱位址
+ title: 新電子信箱地址
password_change:
explanation: 您帳戶的密碼已變更。
extra: 若您未變更密碼,那麼很有可能是某人取得了您帳戶的存取權限。請立刻變更密碼,或若帳戶被鎖定時,請聯絡伺服器的管理員。
subject: Mastodon:已變更密碼
title: 密碼已變更
reconfirmation_instructions:
- explanation: 請確認新的電子信箱位址以變更。
- extra: 若此次變更不是由您開啟的,請忽略此信件。Mastodon 帳戶的電子信箱位址在您存取上面的連結前不會變更。
- subject: Mastodon:確認 %{instance} 的電子信箱位址
- title: 驗證電子信箱位址
+ explanation: 請確認新的電子信箱地址以變更。
+ extra: 若此次變更不是由您開啟的,請忽略此信件。Mastodon 帳戶的電子信箱地址在您存取上面的連結前不會變更。
+ subject: Mastodon:確認 %{instance} 的電子信箱地址
+ title: 驗證電子信箱地址
reset_password_instructions:
action: 變更密碼
explanation: 您已請求帳戶的新密碼。
@@ -82,8 +82,8 @@ zh-TW:
success: 成功透過 %{kind} 帳戶登入。
passwords:
no_token: 您必須透過密碼重設信件才能存取此頁面。若確實如此,請確定輸入的網址是完整的。
- send_instructions: 若電子信箱位址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
- send_paranoid_instructions: 若電子信箱位址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
+ send_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
+ send_paranoid_instructions: 若電子信箱地址存在於我們的資料庫,幾分鐘後您將在信箱中收到密碼復原連結。若未收到請檢查垃圾郵件資料夾。
updated: 您的密碼已成功變更,現在已經登入。
updated_not_active: 您的密碼已成功變更。
registrations:
@@ -92,16 +92,16 @@ zh-TW:
signed_up_but_inactive: 您已註冊成功,但由於您的帳戶尚未啟用,我們暫時無法讓您登入。
signed_up_but_locked: 您已註冊成功,但由於您的帳戶已被鎖定,我們無法讓您登入。
signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。
- signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳號。若未收到請檢查垃圾郵件資料夾。
- update_needs_confirmation: 已成功更新您的帳號,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱位址。若未收到請檢查垃圾郵件資料夾。
+ signed_up_but_unconfirmed: 包含確認連結的訊息已寄到您的電子信箱。請前往連結以啟用帳戶。若未收到請檢查垃圾郵件資料夾。
+ update_needs_confirmation: 已成功更新您的帳戶,但仍需驗證您的新信箱。請檢查電子信箱並前往確認連結來確認新信箱地址。若未收到請檢查垃圾郵件資料夾。
updated: 您的帳戶已成功更新。
sessions:
already_signed_out: 已成功登出。
signed_in: 已成功登入。
signed_out: 已成功登出。
unlocks:
- send_instructions: 幾分鐘後您將收到解鎖帳號的指引信件。若未收到請檢查垃圾郵件資料夾。
- send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。
+ send_instructions: 幾分鐘後您將收到解鎖帳戶的指引信件。若未收到請檢查垃圾郵件資料夾。
+ send_paranoid_instructions: 若此帳戶存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。
unlocked: 已解鎖您的帳戶,請登入繼續。
errors:
messages:
diff --git a/config/locales/doorkeeper.af.yml b/config/locales/doorkeeper.af.yml
new file mode 100644
index 000000000..252f9fd5a
--- /dev/null
+++ b/config/locales/doorkeeper.af.yml
@@ -0,0 +1 @@
+af:
diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml
index b391a1354..03863a338 100644
--- a/config/locales/doorkeeper.ar.yml
+++ b/config/locales/doorkeeper.ar.yml
@@ -73,16 +73,20 @@ ar:
index:
application: التطبيق
created_at: صُرّح له في
- date_format: "%Y-%m-%d %H:%M:%S"
+ date_format: "%d-%m-%Y %H:%M:%S"
scopes: المجالات
title: تطبيقاتك المرخص لها
errors:
messages:
access_denied: لقد رفض مالك المَورِدِ أو تصريح السيرفر طلبك.
+ credential_flow_not_configured: فشل تدفق بيانات اعتماد كلمة سر مالك المورد بسبب عدم تهيئة Doorkeeper.configure.resource_owner_from_credentials.
invalid_client: فشلت المصادقة مع العميل لأنه العميل مجهول أو لغياب المصادقة ضمن العميل أو أنّ أسلوب المصادقة غير مدعومة.
invalid_grant: إنّ التصريح المقدَّم غير صالح، سواء انتهت مدة صلاحيته أو تم إلغاؤه أو أنه لا يتطابق مع عنوان إعادة التحويل في طلب التصريح أو أنّ هذا التصريح قد تم تقديمه لعميل آخر.
invalid_redirect_uri: إنّ عنوان إعادة التحويل غير صالح.
- invalid_request: إنّ هذا الطلب يستلزم مؤشرا أو يحمل قيمة مُعامِل غير مدعومة أو فيه خلل ما.
+ invalid_request:
+ missing_param: 'فقدان أحد المعلمات المطلوبة: %{value}.'
+ request_not_authorized: الطلب بحاجة إلى تفويض، المعلمة المطلوبة لترخيص الطلب مفقودة أو غير صالحة.
+ unknown: يفتقد الطلب إلى معلمة مطلوبة، أو يتضمن قيمة معملمة غير مدعومة، أو هناك خلل ما.
invalid_resource_owner: إنّ المُعرِّفات التي قدّمها صاحب المورِد غير صحيحة أو أنه لا وجود لصاحب المورِد
invalid_scope: المجال المطلوب غير صحيح أو مجهول أو مُعبَّر عنه بشكل خاطئ.
invalid_token:
diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml
index f36187e12..083d19bb2 100644
--- a/config/locales/doorkeeper.bg.yml
+++ b/config/locales/doorkeeper.bg.yml
@@ -5,6 +5,8 @@ bg:
doorkeeper/application:
name: Име
redirect_uri: URI за пренасочване
+ scopes: Обхват
+ website: Уебсайт на приложение
errors:
models:
doorkeeper/application:
@@ -33,9 +35,14 @@ bg:
redirect_uri: Използвай един ред за всяко URI
scopes: Разделяй диапазоните с интервал. Остави празно, за да използваш диапазона по подразбиране.
index:
+ application: Приложение
callback_url: URL за обратно повикване
+ delete: Изтриване
+ empty: Нямате приложения.
name: Име
new: Ново приложение
+ scopes: Обхват
+ show: Показване
title: Твоите приложения
new:
title: Ново приложение
@@ -56,6 +63,8 @@ bg:
able_to: Ще е възможно
prompt: Приложението %{client_name} заявява достъп до твоя акаунт
title: Изисква се упълномощаване
+ show:
+ title: Копирайте този код за удостоверяване и го поставете в приложението.
authorized_applications:
buttons:
revoke: Отмяна
@@ -64,6 +73,7 @@ bg:
index:
application: Приложение
created_at: Създадено на
+ date_format: "%Y-%m-%d %H:%M:%S"
scopes: Диапазони
title: Твоите упълномощени приложения
errors:
@@ -73,7 +83,10 @@ bg:
invalid_client: Удостоверяването на клиента предизвика грешка, поради непознат клиент, липсващо клиентско удостоверяване, или заради това, че методът на удостоверяване не се поддържа.
invalid_grant: Предоставеното удостоверение за достъп е невалидно, изтекло, отхвърлено, не съвпада с пренасочващото URI, използвано в заявката за удостоверение, или е бил издадено от друг клиент.
invalid_redirect_uri: Наличното пренасочващо URI е невалидно.
- invalid_request: Заявката е с липсващ задължителен параметър, включва стойност на параметъра, която не се поддържа, или е изкривена по друг начин.
+ invalid_request:
+ missing_param: 'Липсва задължителен параметър: %{value}.'
+ request_not_authorized: Заявката трябва да бъде упълномощена. Необходимият параметър за разрешаване на заявка липсва или е невалиден.
+ unknown: Заявката е с липсващ задължителен параметър, включва стойност на параметъра, която не се поддържа, или е изкривена по друг начин.
invalid_resource_owner: Предоставените идентификационни данни на притежателя на ресурса са невалидни, или притежателят не може да бъде намерен.
invalid_scope: Заявеният диапазон е невалиден, неизвестен или изкривен.
invalid_token:
@@ -105,6 +118,37 @@ bg:
application:
title: Нужно е упълномощаване по OAuth
scopes:
+ admin:read: прочит на всички данни на сървъра
+ admin:read:accounts: прочит на деликатна информация от всички акаунти
+ admin:read:reports: прочит на деликатна информация от всички докладвания и докладвани акаунти
+ admin:write: промяна на всички данни на сървъра
+ admin:write:accounts: извършване на действия за модериране на акаунти
+ admin:write:reports: извършване на действия за модериране на докладвания
follow: следването, блокирането, деблокирането и отмяната на следването на акаунтите
+ push: получаване на вашите изскачащи известия
read: четенето на данните от твоя акаунт
+ read:accounts: преглед на информация за акаунти
+ read:blocks: преглед на вашите блокирания
+ read:bookmarks: преглед на вашите отметки
+ read:favourites: преглед на вашите любими
+ read:filters: преглед на вашите филтри
+ read:follows: преглед на вашите последвания
+ read:lists: преглед на вашите списъци
+ read:mutes: преглед на вашите заглушавания
+ read:notifications: преглед на вашите известия
+ read:reports: преглед на вашите докладвания
+ read:search: търсене от ваше име
+ read:statuses: преглед на всички състояния
write: публикуването от твое име
+ write:accounts: промяна на вашия профил
+ write:blocks: блокиране на акаунти и домейни
+ write:bookmarks: отмятане на състояния
+ write:favourites: любими състояния
+ write:filters: създаване на филтри
+ write:follows: последване на хора
+ write:lists: създаване на списъци
+ write:media: качване на мултимедийни файлове
+ write:mutes: заглушаване на хора и разговори
+ write:notifications: изчистване на вашите известия
+ write:reports: докладване на други хора
+ write:statuses: публикуване на състояния
diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml
index 3de9d4bab..d85738ec2 100644
--- a/config/locales/doorkeeper.ca.yml
+++ b/config/locales/doorkeeper.ca.yml
@@ -83,7 +83,10 @@ ca:
invalid_client: La autentificació del client ha fallat perquè és un client desconegut o no està inclòs l'autentificació del client o el mètode d'autenticació no està confirmat.
invalid_grant: La concessió d'autorizació oferida és invàlida, ha vençut, s'ha revocat, no coincideix amb l'URI de redirecció utilizada en la petició d'autorizació, o fou emesa per a un altre client.
invalid_redirect_uri: L'URI de redirecció inclòs no és vàlid.
- invalid_request: En la petició manca un paràmetre necessari o inclou un valor de paràmetre no suportat o te un altre tipus de format incorrecte.
+ invalid_request:
+ missing_param: 'Falta paràmetre requerit: %{value}.'
+ request_not_authorized: La petició ha de ser autoritzada. Falta o és invàlid un paràmetre requerit per l'autorització de la petició.
+ unknown: En la petició manca un paràmetre necessari o inclou un valor de paràmetre no suportat o te un altre tipus de format incorrecte.
invalid_resource_owner: Les credencials del propietari del recurs proporcionat no son vàlides, o el propietari del recurs no pot ser trobat
invalid_scope: L'àmbit demanat és invàlid, desconegut o erroni.
invalid_token:
diff --git a/config/locales/doorkeeper.co.yml b/config/locales/doorkeeper.co.yml
index a4c8cd4fc..6819d8fc6 100644
--- a/config/locales/doorkeeper.co.yml
+++ b/config/locales/doorkeeper.co.yml
@@ -62,7 +62,7 @@ co:
new:
able_to: St’applicazione puderà
prompt: L’applicazione %{client_name} hà dumandatu d’avè accessu à u vostru contu
- title: Permessu riquestu
+ title: Permessu richiestu
show:
title: Codice d’auturizazione da cupià indè l’applicazione.
authorized_applications:
@@ -73,7 +73,7 @@ co:
index:
application: Applicazione
created_at: Auturizata u
- date_format: "%d-%m-%Y %H:%M:%S"
+ date_format: "%Y-%m-%d %H:%M:%S"
scopes: Scopi
title: E vostre applicazione auturizate
errors:
@@ -83,7 +83,10 @@ co:
invalid_client: L’autintificazione di u cliente hà fiascatu perchè u cliente ùn hè micca cunnisciutu, l’identificazione di u cliente ùn hè cumpresa, o u modu d’identificazione ùn marchja micca.
invalid_grant: L’accunsentu d’auturizazione furnitu ùn hè currettu, hè spiratu, sguassatu, ùn và micca cù l’indirizzu di ridirezzione usatu in a dumanda d’auturizazione, o hè statu emessu per un’altru cliente.
invalid_redirect_uri: L’URI di ridirezzione ùn hè curretta.
- invalid_request: Ci manca un parametru riquestu indè a dumanda, cuntene un parametru ch’ùn esiste micca, o altru sbagliu di forma.
+ invalid_request:
+ missing_param: 'Parametru richiestu mancante: %{value}.'
+ request_not_authorized: A dumanda deve esse auturizata. Ci manca o hè invalidu un parametru richiestu per a dumanda d'auturizazione.
+ unknown: Ci manca un parametru richiestu indè a dumanda, cuntene un parametru ch’ùn esiste micca, o altru sbagliu di forma.
invalid_resource_owner: L’idintificanti di u pruprietariu di a risorsa ùn sò curretti, o u pruprietariu ùn pò micca esse trovu
invalid_scope: U scopu dumandatu ùn hè currettu, hè scunnisciutu, o altru sbagliu di forma.
invalid_token:
@@ -113,7 +116,7 @@ co:
applications: Applicazione
oauth2_provider: Furnitore OAuth2
application:
- title: Auturizazione OAuth riquestata
+ title: Auturizazione OAuth richiestata
scopes:
admin:read: leghje tutti i dati nant'à u servore
admin:read:accounts: leghje i cuntinuti sensibili di tutti i conti
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index aecb781c9..120a21b65 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -83,7 +83,10 @@ cs:
invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentizaci či nepodporované autentizační metodě.
invalid_grant: Poskytnuté oprávnění je neplatné, vypršela jeho platnost, bylo zamítnuto, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu.
invalid_redirect_uri: URI pro přesměrování není platné.
- invalid_request: Požadavku chybí povinný parametr, obsahuje nepodporovanou hodnotu parametru, či je jinak špatné formulovaný.
+ invalid_request:
+ missing_param: 'Chybí potřebný parametr: %{value}.'
+ request_not_authorized: Požadavek musí být autorizován. Potřebný parametr pro autorizaci požadavku chybí nebo není platný.
+ unknown: Požadavku chybí potřebný parametr, obsahuje nepodporovanou hodnotu parametru nebo je jinak špatně formulován.
invalid_resource_owner: Poskytnuté přihlašovací údaje vlastníka zdroje nejsou platné, nebo vlastník zdroje nemůže být nalezen
invalid_scope: Požadovaný rozsah je neplatný, neznámý, nebo špatně formulovaný.
invalid_token:
@@ -135,12 +138,12 @@ cs:
read:notifications: vidět vaše oznámení
read:reports: vidět vaše hlášení
read:search: vyhledávat za vás
- read:statuses: vidět všechny tooty
+ read:statuses: vidět všechny příspěvky
write: měnit všechna data vašeho účtu
write:accounts: měnit váš profil
write:blocks: blokovat účty a domény
- write:bookmarks: přidávat tooty do záložek
- write:favourites: označovat tooty jako oblíbené
+ write:bookmarks: přidávat příspěvky do záložek
+ write:favourites: oblibovat si příspěvky
write:filters: vytvářet filtry
write:follows: sledovat lidi
write:lists: vytvářet seznamy
@@ -148,4 +151,4 @@ cs:
write:mutes: skrývat lidi a konverzace
write:notifications: mazat vaše oznámení
write:reports: nahlašovat jiné uživatele
- write:statuses: zveřejňovat tooty
+ write:statuses: zveřejňovat příspěvky
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
index fcc59b98d..93c618da9 100644
--- a/config/locales/doorkeeper.cy.yml
+++ b/config/locales/doorkeeper.cy.yml
@@ -83,7 +83,6 @@ cy:
invalid_client: Methwyd dilysu cleient oherwydd cleient anhysbys, methiant i gynnwys dilysu cleient, neu defnydd o ddull dilysu nid yw'n cael ei gefnodi.
invalid_grant: Mae'r grant dilysu a ddarparwyd yn annilys, wedi dod i ben, wedi'i wrthod, ddim yn cyfateb a'r URI ailgyferio a ddefnyddiwyd yn y cais dilysu, neu wedi ei ddarparu i gleient arall.
invalid_redirect_uri: Nid yw'r uri ailgyfeirio cynnwysiedig yn gyfredol.
- invalid_request: Nid yw'r cais yn cynnwys paramedr angenrheidiol, yn cynnwys paramader paramedr nad yw'n cael ei gefnogi, neu wedi ei gamffurfio mewn rhyw fodd arall.
invalid_resource_owner: Nid yw meini prawf perchennog yr adnodd yn ddilys, neu ni ellir canfod perchennog yr adnodd
invalid_scope: Mae'r sgôp a geisiwyd amdano yn annilys, anhysbys, neu'n gamffurfiedig.
invalid_token:
diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml
index cf630195f..05fac0036 100644
--- a/config/locales/doorkeeper.da.yml
+++ b/config/locales/doorkeeper.da.yml
@@ -3,37 +3,37 @@ da:
activerecord:
attributes:
doorkeeper/application:
- name: Navn på program
+ name: Applikationsnavn
redirect_uri: Link
scopes: Områder
- website: Webside for applikation
+ website: Applikationswebsted
errors:
models:
doorkeeper/application:
attributes:
redirect_uri:
fragment_present: kan ikke indeholde et fragment.
- invalid_uri: skal være et gyldigt URI.
+ invalid_uri: skal være en gyldigt URI.
relative_uri: skal være en absolut URI.
- secured_uri: skal være en HTTPS/SSL URI.
+ secured_uri: skal være en HTTPS-/SSL-URI.
doorkeeper:
applications:
buttons:
authorize: Godkend
- cancel: Annuller
- destroy: Destruer
- edit: Rediger
+ cancel: Afbryd
+ destroy: Destruér
+ edit: Redigér
submit: Indsend
confirmations:
- destroy: Er du sikker?
+ destroy: Sikker?
edit:
- title: Rediger applikation
+ title: Redigér applikation
form:
- error: Ups! Tjek din form for mulige fejl
+ error: Ups! Tjek din formular for mulige fejl
help:
- native_redirect_uri: Brug %{native_redirect_uri} for lokale tests
- redirect_uri: Brug en linje per URI
- scopes: Adskil omfang med mellemrum. Lad være blankt for at bruge standard omfang.
+ native_redirect_uri: Brug %{native_redirect_uri} til lokale tests
+ redirect_uri: Brug én linje pr. URI
+ scopes: Adskil omfang med mellemrum. Lad være tomt for standardomfang.
index:
application: Applikation
callback_url: Callback-URL
@@ -48,28 +48,28 @@ da:
title: Ny applikation
show:
actions: Handlinger
- application_id: Klient nøgle
- callback_urls: Callback-URLs
+ application_id: Klientnøgle
+ callback_urls: Callback-URL'er
scopes: Omfang
- secret: Secret
+ secret: Klienthemmelighed
title: 'Applikation: %{name}'
authorizations:
buttons:
authorize: Godkend
deny: Afvis
error:
- title: Der opstod en fejl
+ title: En fejl opstod
new:
able_to: Den vil være i stand til
prompt: Applikationen %{client_name} anmoder om adgang til din konto
- title: Godkendelse påkrævet
+ title: Godkendelse krævet
show:
- title: Kopiere denne godkendelseskode og indsæt den i applikationen.
+ title: Kopiér og indsæt denne godkendelseskode i applikationen.
authorized_applications:
buttons:
revoke: Ophæv
confirmations:
- revoke: Er du sikker?
+ revoke: Sikker?
index:
application: Applikation
created_at: Godkendt
@@ -78,42 +78,45 @@ da:
title: Dine godkendte applikationer
errors:
messages:
- access_denied: Ejeren af ressourcen eller godkendelses serveren afviste anmodningen.
- credential_flow_not_configured: Flytning af ressourceejers adgangskode mislykkedes grundet Doorkeeper.configure.resource_owner_from_credentials ikke er opsat.
- invalid_client: Klient autentikationen mislykkedes grundet en ukendt klient, ingen klient autentikation fulgte med, eller en ikke-understøttet metode.
- invalid_grant: Autoriseringen er ugyldig, udløbet, ophævet, passer ikke med den henvisnings URI der blev brugt i autoriserings anmodningen, eller blev givet til en anden klient.
- invalid_redirect_uri: Ormdirigerings-uri'en der blev angivet er ikke gyldig.
- invalid_request: Anmodningen mangler en parametre, inkluderer en ikke understøttet parametre værdi eller er på en eller anden måde deformeret.
- invalid_resource_owner: De angivne ressource ejer kredentialer er ikke gyldige, eller ressource ejeren kunne ikke blive fundet
- invalid_scope: Det anmodede omfang er ugyldigt, ukendt eller deformeret.
+ access_denied: Ressourceejeren eller godkendelsesserveren afviste anmodningen.
+ credential_flow_not_configured: Ressourceejeradgangskodeakkreditiv flow mislykkedes grundet ikke-opsat Doorkeeper.configure.resource_owner_from_credentials.
+ invalid_client: Klientbekræftelse mislykkedes grundet en ukendt klient, ingen klientbekræftelse inkluderet, eller uunderstøttet bekræftelsesmetode.
+ invalid_grant: Den leverede godkendelse er ugyldig, udløbet, tilbagekaldt, matcher ikke omdirigerings-URI brugt i godkendelsesanmodningen, eller er udstedt til en anden klient.
+ invalid_redirect_uri: Inkluderede ormdirigerings-URI er ugyldig.
+ invalid_request:
+ missing_param: 'Mangler krævet parameter: %{value}.'
+ request_not_authorized: Anmodning skal godkendes. Krævet parameter til godkendelse af anmodning mangler eller er ugyldig.
+ unknown: Anmodningen mangler en krævet parametre, inkluderer en uunderstøttet parametre værdi eller er på anden vis fejlbehæftet.
+ invalid_resource_owner: De angivne ressourceejerakkreditiver er ugyldige, eller ressourceejer kunne ikke findes
+ invalid_scope: Det anmodede omfang er ugyldigt, ukendt eller fejlbehæftet.
invalid_token:
- expired: Adgangs-beviset er udløbet
- revoked: Adgangs-beviset er blevet ophævet
- unknown: Adgangs-beviset er ugyldigt
- resource_owner_authenticator_not_configured: Ressource ejeren kunne ikke blive fundet grundet Doorkeeper.configure.resource_owner_authenticator ikke er konfigureret.
- server_error: Autoriserings serveren blev mødt med en uventet betingelse der forhindrede den i at færdiggøre anmodningen.
- temporarily_unavailable: Autoriserings serveren er på nuværende tidspunkt ikke i stand til at håndtere anmodningen grundet midlertidig overlast eller serveren er ved at blive opdateret.
- unauthorized_client: Klienten er ikke godkendt til at udføre denne anmodning ved at bruge denne metode.
- unsupported_grant_type: Autoriserings typen understøttes ikke af autoriserings serveren.
- unsupported_response_type: Godkendelses serveren understøtter ikke denne type respons.
+ expired: Adgangstoken er udløbet
+ revoked: Adgangstoken er tilbagekaldt
+ unknown: Adgangstoken er ugyldig
+ resource_owner_authenticator_not_configured: Ressourceejer kunne ikke findes grundet ikke-opsat Doorkeeper.configure.resource_owner_authenticator.
+ server_error: Godkejdelsesserveren stødte på en uventet betingelse, der forhindrede den i at imødekomme anmodningen.
+ temporarily_unavailable: Godkendelsesserveren kan pt. ikke håndtere anmodningen grundet midlertidig overbelastning eller servervedligehold.
+ unauthorized_client: Klienten er ikke godkendt til at udføre denne anmodning via denne metode.
+ unsupported_grant_type: Godkendelsestypen understøttes ikke af godkendelsesserveren.
+ unsupported_response_type: Godkendelsesserveren understøtter ikke denne svartype.
flash:
applications:
create:
- notice: Applikationen blev oprettet.
+ notice: Applikation oprettet.
destroy:
- notice: Applikationen blev slettet.
+ notice: Applikation slettet.
update:
- notice: Applikationen blev opdateret.
+ notice: Applikation opdateret.
authorized_applications:
destroy:
- notice: Applikationen blev ophævet.
+ notice: Applikation tilbagekaldt.
layouts:
admin:
nav:
applications: Applikationer
- oauth2_provider: OAuth Udbyder
+ oauth2_provider: OAuth-udbyder
application:
- title: OAuth godkendelse påkrævet
+ title: OAuth-godkendelse krævet
scopes:
admin:read: læs al data på serveren
admin:read:accounts: læs sensitiv information fra alle konti
@@ -121,31 +124,31 @@ da:
admin:write: redigér al data på serveren
admin:write:accounts: udfør modereringshandlinger på konti
admin:write:reports: udfør modereringshandlinger på anmeldelser
- follow: ændre din kontos forhold
- push: modtage dine push notifikationer
- read: læse alle din kontos data
- read:accounts: se konto oplysninger
+ follow: ændre kontorelationer
+ push: modtage dine push-notifikationer
+ read: læse alle dine kontodata
+ read:accounts: se kontooplysninger
read:blocks: se dine blokeringer
read:bookmarks: se dine bogmærker
read:favourites: se dine favoritter
read:filters: se dine filtre
- read:follows: se hvem du følger
+ read:follows: se, hvem du følger
read:lists: se dine lister
- read:mutes: se dine dæmpninger
+ read:mutes: se dine tavsgørelser
read:notifications: se dine notifikationer
read:reports: se dine anmeldelser
read:search: søge på dine vegne
read:statuses: se alle statusser
- write: ændre din kontos data
+ write: ændre alle dine kontodata
write:accounts: ændre din profil
- write:blocks: bloker konti og domæner
- write:bookmarks: bogmærk statusser
- write:favourites: favoriser statusser
- write:filters: opret filtre
- write:follows: følg folk
- write:lists: opret lister
- write:media: upload multimedie filer
- write:mutes: dæmp folk og samtaler
- write:notifications: ryd dine notifikationer
- write:reports: anmeld andre folk
- write:statuses: udgiv statusser
+ write:blocks: blokere konti og domæner
+ write:bookmarks: bogmærke statusser
+ write:favourites: favorisere statusser
+ write:filters: oprette filtre
+ write:follows: følge personer
+ write:lists: oprette lister
+ write:media: uploade multimediefiler
+ write:mutes: tavsgøre personer og konversationer
+ write:notifications: rydde dine notifikationer
+ write:reports: anmelde personer
+ write:statuses: udgive statusser
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index 8b850b56a..032a3dbce 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -83,7 +83,10 @@ de:
invalid_client: 'Client-Authentifizierung ist fehlgeschlagen: Client unbekannt, keine Authentisierung mitgeliefert oder Authentisierungsmethode wird nicht unterstützt.'
invalid_grant: Die beigefügte Autorisierung ist ungültig, abgelaufen, wurde widerrufen, einem anderen Client ausgestellt oder der Weiterleitungs-URI stimmt nicht mit der Autorisierungs-Anfrage überein.
invalid_redirect_uri: Der beigefügte Weiterleitungs-URI ist ungültig.
- invalid_request: Die Anfrage enthält ein nicht-unterstütztes Argument, ein Parameter fehlt, oder sie ist anderweitig fehlerhaft.
+ invalid_request:
+ missing_param: 'Erforderlicher Parameter fehlt: %{value}.'
+ request_not_authorized: Anfrage muss autorisiert werden. Benötigter Parameter für die Autorisierung der Anfrage fehlt oder ungültig.
+ unknown: Der Anfrage fehlt ein benötigter Parameter, enthält einen nicht unterstützten Parameterwert oder ist anderweitig fehlerhaft.
invalid_resource_owner: Die angegebenen Zugangsdaten für das Konto sind ungültig oder das Konto kann nicht gefunden werden
invalid_scope: Die angeforderte Befugnis ist ungültig, unbekannt oder fehlerhaft.
invalid_token:
diff --git a/config/locales/doorkeeper.el.yml b/config/locales/doorkeeper.el.yml
index 7423606d4..29db6d883 100644
--- a/config/locales/doorkeeper.el.yml
+++ b/config/locales/doorkeeper.el.yml
@@ -83,7 +83,10 @@ el:
invalid_client: Η ταυτοποίηση του πελάτη απέτυχε είτε λόγω άγνωστου πελάτη, είτε λόγω έλλειψης ταυτοποιημένου πελάτη ή λόγω μη υποστηριζόμενης μεθόδου ταυτοποίησης.
invalid_grant: Η άδεια πιστοποίησης που δόθηκε είναι άκυρη, ληγμένη, έχει ανακληθεί, δεν συμφωνεί με το URI ανακατεύθυνσης που δόθηκε στο αίτημα πιστοποίησης ή εκδόθηκε προς άλλο πελάτη.
invalid_redirect_uri: Το URI ανακατεύθυνσης που δόθηκε δεν είναι έγκυρο.
- invalid_request: Το αίτημα δεν έχει κάποια απαιτούμενη παράμετρο, περιέχει κάποια μη υποστηριζόμενη τιμή παραμέτρου ή είναι μη σωστά δομημένη.
+ invalid_request:
+ missing_param: 'Λείπει η απαιτούμενη παράμετρος: %{value}.'
+ request_not_authorized: Το αίτημα πρέπει να είναι εξουσιοδοτημένο. Η απαιτούμενη παράμετρος για την έγκριση της αίτησης λείπει ή είναι άκυρη.
+ unknown: Από το αίτημα λείπει μία υποχρεωτική παράμετρος ή περιλαμβάνει μια μη υποστηριζόμενη τιμή ή έχει λανθασμένη μορφή με κάποιο άλλο τρόπο.
invalid_resource_owner: Τα διαπιστευτήρια που έδωσε ο ιδιοκτήτης του πόρου δεν είναι έγκυρα, ή δεν βρέθηκε ο ιδιοκτήτης του πόρου
invalid_scope: Το αιτούμενο εύρος εφαρμογής είναι άκυρο, άγνωστο ή λάθος διατυπωμένο.
invalid_token:
diff --git a/config/locales/doorkeeper.en.yml b/config/locales/doorkeeper.en.yml
index 2be2ef036..8aa099284 100644
--- a/config/locales/doorkeeper.en.yml
+++ b/config/locales/doorkeeper.en.yml
@@ -83,7 +83,10 @@ en:
invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
invalid_redirect_uri: The redirect uri included is not valid.
- invalid_request: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
+ invalid_request:
+ missing_param: 'Missing required parameter: %{value}.'
+ request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
+ unknown: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
invalid_scope: The requested scope is invalid, unknown, or malformed.
invalid_token:
@@ -135,12 +138,12 @@ en:
read:notifications: see your notifications
read:reports: see your reports
read:search: search on your behalf
- read:statuses: see all statuses
+ read:statuses: see all posts
write: modify all your account's data
write:accounts: modify your profile
write:blocks: block accounts and domains
- write:bookmarks: bookmark statuses
- write:favourites: favourite statuses
+ write:bookmarks: bookmark posts
+ write:favourites: favourite posts
write:filters: create filters
write:follows: follow people
write:lists: create lists
@@ -148,4 +151,4 @@ en:
write:mutes: mute people and conversations
write:notifications: clear your notifications
write:reports: report other people
- write:statuses: publish statuses
+ write:statuses: publish posts
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 65066cd8e..c590fbde0 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -83,7 +83,10 @@ eo:
invalid_client: Klienta aŭtentigo malsukcesa pro nekonata kliento, neniu klienta aŭtentigo inkluzivita, aŭ nesubtenata aŭtentiga metodo.
invalid_grant: La rajtiga konsento ne estas valida, ne plu estas valida, estis forigita, ne kongruas kun la plusenda URI uzita en la aŭtentiga peto, aŭ estis sendita al alia kliento.
invalid_redirect_uri: La plusenda URI uzita ne estas valida.
- invalid_request: Mankis al la peto nepra parametro, enhavas nesubtenatan parametran valoron, aŭ la peto simple estas misformita.
+ invalid_request:
+ missing_param: 'Mankas bezonata parametro: %{value}.'
+ request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
+ unknown: Mankis al la peto nepra parametro, enhavas nesubtenatan parametran valoron, aŭ la peto simple estas misformita.
invalid_resource_owner: La donitaj identigiloj pri la posedanto de la rimedo ne estas validaj, aŭ tiu lasta ne povas esti trovita
invalid_scope: La petita amplekso estas nevalida, nekonata, aŭ misformita.
invalid_token:
diff --git a/config/locales/doorkeeper.es-AR.yml b/config/locales/doorkeeper.es-AR.yml
index 29ce9b4c1..f914a62ff 100644
--- a/config/locales/doorkeeper.es-AR.yml
+++ b/config/locales/doorkeeper.es-AR.yml
@@ -83,7 +83,10 @@ es-AR:
invalid_client: La autenticación del cliente falló debido a que es un cliente desconocido, o no está incluída la autenticación del cliente, o el método de autenticación no está soportado.
invalid_grant: La concesión de autorización ofrecida no es válida, venció, se revocó, no coincide con la dirección web de redireccionamiento usada en la petición de autorización, o fue emitida para otro cliente.
invalid_redirect_uri: La dirección web de redireccionamiento incluida no es válida.
- invalid_request: En la solicitud falta un parámetro requerido, o incluye un valor de parámetro no soportado, o está corrompida.
+ invalid_request:
+ missing_param: 'Falta el parámetro requerido: %{value}.'
+ request_not_authorized: La solicitud necesita ser autorizada. El parámetro requerido para la autorización de la solicitud está ausente o no es válido.
+ unknown: En la solicitud falta un parámetro requerido, o incluye un valor de parámetro no soportado, o está corrompido.
invalid_resource_owner: Las credenciales proporcionadas del propietario del recurso no son válidas, o no se puede encontrar al propietario del recurso
invalid_scope: El ámbito solicitado no es válido, o conocido, o está corrompido.
invalid_token:
@@ -120,7 +123,7 @@ es-AR:
admin:read:reports: leer información sensible de todos los informes y cuentas denunciadas
admin:write: modificar todos los datos en el servidor
admin:write:accounts: ejecutar acciones de moderación en cuentas
- admin:write:reports: ejecutar acciones de moderación en informes
+ admin:write:reports: ejecutar acciones de moderación en denuncias
follow: modificar relaciones de cuenta
push: recibir tus notificaciones push
read: leer todos los datos de tu cuenta
@@ -135,17 +138,17 @@ es-AR:
read:notifications: ver tus notificaciones
read:reports: ver tus denuncias
read:search: buscar en tu nombre
- read:statuses: ver todos los toots
+ read:statuses: ver todos los mensajes
write: modificar todos los datos de tu cuenta
write:accounts: modificar tu perfil
write:blocks: bloquear cuentas y dominios
- write:bookmarks: marcar toots
- write:favourites: marcar toots como favoritos
+ write:bookmarks: marcar mensajes
+ write:favourites: marcar mensajes como favoritos
write:filters: crear filtros
write:follows: seguir cuentas
write:lists: crear listas
write:media: subir archivos de medios
- write:mutes: silenciar usuarios y conversaciones
+ write:mutes: silenciar cuentas y conversaciones
write:notifications: limpiar tus notificaciones
write:reports: denunciar otras cuentas
- write:statuses: publicar toots
+ write:statuses: publicar mensajes
diff --git a/config/locales/doorkeeper.es-MX.yml b/config/locales/doorkeeper.es-MX.yml
new file mode 100644
index 000000000..df12ceb79
--- /dev/null
+++ b/config/locales/doorkeeper.es-MX.yml
@@ -0,0 +1,154 @@
+---
+es-MX:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Nombre de aplicación
+ redirect_uri: URI para redirección
+ scopes: Ámbitos
+ website: Sitio web
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: no puede contener un fragmento.
+ invalid_uri: debe ser un URI válido.
+ relative_uri: debe ser una URI absoluta.
+ secured_uri: debe ser un URI HTTPS/SSL.
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: Autorizar
+ cancel: Cancelar
+ destroy: Destruir
+ edit: Editar
+ submit: Enviar
+ confirmations:
+ destroy: "¿Está seguro?"
+ edit:
+ title: Editar aplicación
+ form:
+ error: "¡Uuups! Compruebe su formulario"
+ help:
+ native_redirect_uri: Utilice %{native_redirect_uri} para pruebas locales
+ redirect_uri: Utilice una línea por URI
+ scopes: Separe los ámbitos con espacios. Déjelo en blanco para utilizar los ámbitos por defecto.
+ index:
+ application: Aplicación
+ callback_url: URL de callback
+ delete: Eliminar
+ empty: No tienes aplicaciones.
+ name: Nombre
+ new: Nueva aplicación
+ scopes: Ámbitos
+ show: Mostrar
+ title: Sus aplicaciones
+ new:
+ title: Nueva aplicación
+ show:
+ actions: Acciones
+ application_id: Id de la aplicación
+ callback_urls: URLs de callback
+ scopes: Ámbitos
+ secret: Secreto
+ title: 'Aplicación: %{name}'
+ authorizations:
+ buttons:
+ authorize: Autorizar
+ deny: Desautorizar
+ error:
+ title: Ha ocurrido un error
+ new:
+ able_to: Será capaz de
+ prompt: La aplicación %{client_name} solicita tener acceso a su cuenta
+ title: Se requiere autorización
+ show:
+ title: Copia este código de autorización y pégalo en la aplicación.
+ authorized_applications:
+ buttons:
+ revoke: Revocar
+ confirmations:
+ revoke: "¿Está seguro?"
+ index:
+ application: Aplicación
+ created_at: Creado el
+ date_format: "%A-%m-%d %H:%M:%S"
+ scopes: Ámbitos
+ title: Sus aplicaciones autorizadas
+ errors:
+ messages:
+ access_denied: El propietario del recurso o servidor de autorización denegó la petición.
+ credential_flow_not_configured: Las credenciales de contraseña del propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_from_credentials está sin configurar.
+ invalid_client: La autentificación del cliente falló debido o a que es un cliente desconocido o no está incluída la autentificación del cliente o el método de autentificación no está confirmado.
+ invalid_grant: La concesión de autorización ofrecida es inválida, venció, se revocó, no coincide con la URI de redirección utilizada en la petición de autorización, o fue emitida para otro cliente.
+ invalid_redirect_uri: La URI de redirección incluida no es válida.
+ invalid_request:
+ missing_param: 'Falta el parámetro requerido: %{value}.'
+ request_not_authorized: La solicitud debe ser autorizada. Parámetro requerido para la autorización de la solicitud falta o no es válido.
+ unknown: En la petición falta un parámetro necesario o incluye un valor de parámetro no soportado o tiene otro tipo de formato incorrecto.
+ invalid_resource_owner: Las credenciales proporcionadas del propietario del recurso no son válidas, o el propietario del recurso no puede ser encontrado
+ invalid_scope: El ámbito pedido es inválido, desconocido o erróneo.
+ invalid_token:
+ expired: El autentificador de acceso expiró
+ revoked: El autentificador de acceso fue revocado
+ unknown: El autentificador de acceso es inválido
+ resource_owner_authenticator_not_configured: El propietario del recurso falló debido a que Doorkeeper.configure.resource_owner_authenticator está sin configurar.
+ server_error: El servidor de la autorización entontró una condición inesperada que le impidió cumplir con la solicitud.
+ temporarily_unavailable: El servidor de la autorización es actualmente incapaz de manejar la petición debido a una sobrecarga temporal o un trabajo de mantenimiento del servidor.
+ unauthorized_client: El cliente no está autorizado a realizar esta petición utilizando este método.
+ unsupported_grant_type: El tipo de concesión de autorización no está soportado por el servidor de autorización.
+ unsupported_response_type: El servidor de autorización no soporta este tipo de respuesta.
+ flash:
+ applications:
+ create:
+ notice: Aplicación creada.
+ destroy:
+ notice: Aplicación eliminada.
+ update:
+ notice: Aplicación actualizada.
+ authorized_applications:
+ destroy:
+ notice: Aplicación revocada.
+ layouts:
+ admin:
+ nav:
+ applications: Aplicaciones
+ oauth2_provider: Proveedor OAuth2
+ application:
+ title: OAuth autorización requerida
+ scopes:
+ admin:read: leer todos los datos en el servidor
+ admin:read:accounts: leer información sensible de todas las cuentas
+ admin:read:reports: leer información sensible de todos los informes y cuentas reportadas
+ admin:write: modificar todos los datos en el servidor
+ admin:write:accounts: realizar acciones de moderación en cuentas
+ admin:write:reports: realizar acciones de moderación en informes
+ follow: seguir, bloquear, desbloquear y dejar de seguir cuentas
+ push: recibir tus notificaciones push
+ read: leer los datos de tu cuenta
+ read:accounts: ver información de cuentas
+ read:blocks: ver a quién has bloqueado
+ read:bookmarks: ver tus marcadores
+ read:favourites: ver tus favoritos
+ read:filters: ver tus filtros
+ read:follows: ver a quién sigues
+ read:lists: ver tus listas
+ read:mutes: ver a quién has silenciado
+ read:notifications: ver tus notificaciones
+ read:reports: ver tus informes
+ read:search: buscar en su nombre
+ read:statuses: ver todos los estados
+ write: publicar en tu nombre
+ write:accounts: modifica tu perfil
+ write:blocks: bloquear cuentas y dominios
+ write:bookmarks: guardar estados como marcadores
+ write:favourites: toots favoritos
+ write:filters: crear filtros
+ write:follows: seguir usuarios
+ write:lists: crear listas
+ write:media: subir archivos multimedia
+ write:mutes: silenciar usuarios y conversaciones
+ write:notifications: limpia tus notificaciones
+ write:reports: reportar a otras personas
+ write:statuses: publicar estados
diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml
index 61e6cb6a1..e3bb4d91f 100644
--- a/config/locales/doorkeeper.es.yml
+++ b/config/locales/doorkeeper.es.yml
@@ -83,7 +83,10 @@ es:
invalid_client: La autentificación del cliente falló debido o a que es un cliente desconocido o no está incluída la autentificación del cliente o el método de autentificación no está confirmado.
invalid_grant: La concesión de autorización ofrecida es inválida, venció, se revocó, no coincide con la URI de redirección utilizada en la petición de autorización, o fue emitida para otro cliente.
invalid_redirect_uri: La URI de redirección incluida no es válida.
- invalid_request: En la petición falta un parámetro necesario o incluye un valor de parámetro no soportado o tiene otro tipo de formato incorrecto.
+ invalid_request:
+ missing_param: 'Falta este parámetro requerido: %{value}.'
+ request_not_authorized: La solicitud debe ser autorizada. Hay un parámetro requerido para autorizar la solicitud que falta o no es válido.
+ unknown: Falta un parámetro requerido en la solicitud, o esta incluye un valor no admitido de parámetro, o bien está mal formulada.
invalid_resource_owner: Las credenciales proporcionadas del propietario del recurso no son válidas, o el propietario del recurso no puede ser encontrado
invalid_scope: El ámbito pedido es inválido, desconocido o erróneo.
invalid_token:
@@ -140,7 +143,7 @@ es:
write:accounts: modifica tu perfil
write:blocks: bloquear cuentas y dominios
write:bookmarks: guardar estados como marcadores
- write:favourites: toots favoritos
+ write:favourites: publicaciones favoritas
write:filters: crear filtros
write:follows: seguir usuarios
write:lists: crear listas
diff --git a/config/locales/doorkeeper.et.yml b/config/locales/doorkeeper.et.yml
index d3b011a67..6f038c365 100644
--- a/config/locales/doorkeeper.et.yml
+++ b/config/locales/doorkeeper.et.yml
@@ -73,7 +73,6 @@ et:
index:
application: Rakendus
created_at: Autoriseeritud
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Ulatused
title: Autoriseeritud rakendused
errors:
@@ -83,7 +82,6 @@ et:
invalid_client: Kliendi autentimine ebaõnnestus, kuna tundmatu klient, puudulik autentimine või mitte toetatud autentimismeetod.
invalid_grant: Antud autoriseerimisluba on vale, aegunud, tagasi võetud, ei kattu kasutatud ümbersuunamise URLid või oli antud teisele kliendile.
invalid_redirect_uri: Antud ümbersuunamise URL ei ole õige.
- invalid_request: Taotlusel puudub kohustuslik parameeter, sisaldab mitte toetatud parameetri väärtust või on kuidagi teisiti vale.
invalid_resource_owner: Antud ressursi omaniku andmed on valed või ressursi omanikku ei leitud
invalid_scope: Soovitud ulatus on vale, tundmatu või vigane.
invalid_token:
diff --git a/config/locales/doorkeeper.eu.yml b/config/locales/doorkeeper.eu.yml
index 07fc13983..576ece002 100644
--- a/config/locales/doorkeeper.eu.yml
+++ b/config/locales/doorkeeper.eu.yml
@@ -83,7 +83,10 @@ eu:
invalid_client: Bezeroaren autentifikazioak huts egin du bezero ezezaguna delako, ez delako bezero autentifikazioa txertatu, edo autentifikazio metodoa ez delako onartzen.
invalid_grant: Emandako autorizatzea baliogabea da, iraungitu da, indargabetu da. ez dator bat autorizatze eskarian erabilitako URI-arekin, edo beste bezero batek sortu du.
invalid_redirect_uri: Sartutako birbideratze URI-a baliogabea da.
- invalid_request: Eskaerak beharrezkoa den parametro bat falta du, onartu gabeko parametro-balio bat du, edo beste moduren batean gaizki osatua dago.
+ invalid_request:
+ missing_param: 'Beharrezko parametroa falta da: %{value}.'
+ request_not_authorized: Eskaera baimendu behar da. Eskaera baimentzeko beharrezko parametroa falta da edo baliogabea da.
+ unknown: Eskaerak beharrezkoa den parametro bat falta du, onartu gabeko parametro-balio bat du, edo beste moduren batean gaizki osatua dago.
invalid_resource_owner: Emandako baliabidearen jabearen kredentzialak baliogabeak dira, edo baliabidearen jabea ez da aurkitu
invalid_scope: Eskatutako esparrua baliogabea da, ezezaguna, edo gaizki osatua dago.
invalid_token:
diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml
index 534d7c5da..bc86a064c 100644
--- a/config/locales/doorkeeper.fa.yml
+++ b/config/locales/doorkeeper.fa.yml
@@ -83,7 +83,10 @@ fa:
invalid_client: تأیید هویت کارخواه به دلیل کارخواه ناشناخته، عدم وجود تأیید هویت کاره یا روش تأیید هویت پشتیبانینشده شکست خورد.
invalid_grant: اعطای دسترسی فراهم شده نامعتبر، منقضی یا نامطابق با نشانی بازگشت استفادهشده در درخواست تأیید هویت بوده و یا برای کارخواهی دیگر صادر شده است.
invalid_redirect_uri: نشانی بازگشت موجود، معتبر نیست.
- invalid_request: درخواست فاقد یک پارامتر ضروری، شامل یک پارامتر پشتیبانینشده یا بههم ریخته است.
+ invalid_request:
+ missing_param: 'پارامتر لازم ناموجود: %{value}.'
+ request_not_authorized: درخواست باید تأیید هویت شود. پارامتر موردنیاز برای تأیید هویت درخواست، مفقود یا نامعتبر است.
+ unknown: درخواست بدریخت، فاقد یک پارامتر ضروری یا شامل یک پارامتر پشتیبانینشده است.
invalid_resource_owner: اعتبارنامهٔ مالک منبع فراهمشده نامعتبر بوده یا مالک منبع نتوانست پیدا شود
invalid_scope: حوزهٔ درخواستی نامعتبر، ناشناخته یا دستکاریشده است.
invalid_token:
diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index 34b08dd76..7922599f6 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -83,7 +83,6 @@ fi:
invalid_client: Asiakasohjelman valtuutus epäonnistui, koska asiakas on tuntematon, asiakkaan valtuutus ei ollut mukana tai valtuutustapaa ei tueta.
invalid_grant: Valtuutuslupa on virheellinen, umpeutunut, peruttu, valtuutuspyynnössä käytettyä uudelleenohjaus-URI:tä vastaamaton tai myönnetty toiselle asiakkaalle.
invalid_redirect_uri: Uudelleenohjaus-URI on virheellinen.
- invalid_request: Pyynnöstä puuttuu vaadittu parametri, se sisältää tukemattoman parametriarvon tai on muulla tavoin väärin muotoiltu.
invalid_resource_owner: Annetut resurssin omistajan tunnnukset ovat virheelliset, tai resurssin omistajaa ei löydy
invalid_scope: Pyydetyt oikeudet ovat virheellisiä, tuntemattomia tai väärin muotoiltuja.
invalid_token:
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 8a628538b..6ebe93b9c 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -67,7 +67,7 @@ fr:
title: Copiez ce code d’autorisation et collez-le dans l’application.
authorized_applications:
buttons:
- revoke: Annuler
+ revoke: Révoquer
confirmations:
revoke: Voulez-vous vraiment faire ça ?
index:
@@ -81,9 +81,12 @@ fr:
access_denied: Le propriétaire de la ressource ou le serveur d’autorisation a refusé la requête.
credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué car Doorkeeper.configure.resource_owner_from_credentials n’est pas configuré.
invalid_client: L’authentification du client a échoué à cause d’un client inconnu, d’aucune authentification de client incluse ou d’une méthode d’authentification non prise en charge.
- invalid_grant: Le consentement d’autorisation accordé n’est pas valide, a expiré, est annulé, ne concorde pas avec l’URL de redirection utilisée dans la requête d’autorisation ou a été émis à un autre client.
+ invalid_grant: L’autorisation accordée est invalide, expirée, annulée, ne concorde pas avec l’URL de redirection utilisée dans la requête d’autorisation, ou a été délivrée à un autre client.
invalid_redirect_uri: L’URL de redirection n’est pas valide.
- invalid_request: La requête omet un paramètre requis, inclut une valeur de paramètre non prise en charge ou est autrement mal formée.
+ invalid_request:
+ missing_param: 'Parramètre requis manquant: %{value}.'
+ request_not_authorized: La requête doit être autorisée. Le paramètre requis pour la requête d'autorisation est manquant ou non valide.
+ unknown: La requête omet un paramètre requis, inclut une valeur de paramètre non prise en charge ou est autrement mal formée.
invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides ou le propriétaire de la ressource ne peut être trouvé
invalid_scope: La permission demandée est invalide, inconnue ou mal formée.
invalid_token:
@@ -106,7 +109,7 @@ fr:
notice: Application mise à jour.
authorized_applications:
destroy:
- notice: Application annulée.
+ notice: Application révoquée.
layouts:
admin:
nav:
diff --git a/config/locales/doorkeeper.gd.yml b/config/locales/doorkeeper.gd.yml
new file mode 100644
index 000000000..4b3bccf67
--- /dev/null
+++ b/config/locales/doorkeeper.gd.yml
@@ -0,0 +1,154 @@
+---
+gd:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Ainm na h-aplacaid
+ redirect_uri: URI ath-stiùiridh
+ scopes: Sgòpaichean
+ website: Làrach-lìn na h-aplacaid
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ fragment_present: "– chan fhaod bloigh a bhith ’na bhroinn."
+ invalid_uri: "– feumaidh seo a bhith ’na URI dligheach."
+ relative_uri: "– feumaidh seo a bhith ’na URI absaloideach."
+ secured_uri: "– feumaidh seo a bhith ’na URI HTTPS/SSL."
+ doorkeeper:
+ applications:
+ buttons:
+ authorize: Ùghdarraich
+ cancel: Sguir dheth
+ destroy: Mill
+ edit: Deasaich
+ submit: Cuir a-null
+ confirmations:
+ destroy: A bheil thu cinnteach?
+ edit:
+ title: Deasaich an aplacaid
+ form:
+ error: Iochd! Thoir sùil air an fhoirm agad air eagal ’s gu bheil mearachd ann
+ help:
+ native_redirect_uri: Cleachd %{native_redirect_uri} gus a chur fo dheuchainn gu h-ionadail
+ redirect_uri: Cleachd loidhne fa leth do gach URI
+ scopes: Sgar sgòpaichean le beàrnan. Fàg seo bàn airson nan sgòpaichean tùsail a chleachdadh.
+ index:
+ application: Aplacaid
+ callback_url: URL gairm air ais
+ delete: Sguab às
+ empty: Chan eil aplacaid agad.
+ name: Ainm
+ new: Aplacaid ùr
+ scopes: Sgòpaichean
+ show: Seall
+ title: Na h-aplacaidean agad
+ new:
+ title: Aplacaid ùr
+ show:
+ actions: Gnìomhan
+ application_id: Iuchair cliant
+ callback_urls: URLaichean gairm air ais
+ scopes: Sgòpaichean
+ secret: Rùn a’ chliant
+ title: 'Aplacaidean: %{name}'
+ authorizations:
+ buttons:
+ authorize: Ùghdarraich
+ deny: Diùlt
+ error:
+ title: Thachair mearachd
+ new:
+ able_to: 'Seo na comasan a bhios air:'
+ prompt: Tha aplacaid %{client_name} ag iarraidh inntrigeadh dhan chunntas agad
+ title: Tha feum air ùghdarrachadh
+ show:
+ title: Dèan lethbhreac dhen chòd ùghdarrachaidh seo ’s cuir san aplacaid e.
+ authorized_applications:
+ buttons:
+ revoke: Cùl-ghairm
+ confirmations:
+ revoke: A bheil thu cinnteach?
+ index:
+ application: Aplacaid
+ created_at: Ceadaichte
+ date_format: "%Y-%m-%d %H:%M:%S"
+ scopes: Sgòpaichean
+ title: Na h-aplacaidean ùghdarraichte agad
+ errors:
+ messages:
+ access_denied: Dhiùlt sealbhadair a’ ghoireis no am frithealaiche ùghdarrachaidh an t-iarrtas.
+ credential_flow_not_configured: Dh’fhàillig le sruth cruthachadh teisteas facail-fhaire do shealbhadair a’ ghoireis ri linn Doorkeeper.configure.resource_owner_from_credentials gun rèiteachadh.
+ invalid_client: Dh’fhàillig le dearbhadh a’ chliant ri linn cliant nach aithne dhuinn, dearbhadh cliant nach deach gabhail a-staigh no dòigh dearbhaidh ris nach cuirear taic.
+ invalid_grant: Chan eil an t-ùghdarrachadh a chaidh a thoirt seachad dligheach, dh’fhalbh an ùine air, chaidh a chùl-ghairm no chan eil e a-rèir URI an ath-stiùiridh a chaidh a chleachdadh san iarrtas ùghdarrachaidh no chaidh fhoillseachadh le cliant eile.
+ invalid_redirect_uri: Chan eil an URI ath-stiùiridh a chaidh a ghabhail a-staigh dligheach.
+ invalid_request:
+ missing_param: 'Tha paramadair riatanach a dhìth: %{value}.'
+ request_not_authorized: Tha an t-iarrtas feumach air ùghdarrachadh. Tha paramadair riatanach a dhìth air an iarrtas ùghdarrachaidh no tha e mì-dhligheach.
+ unknown: Tha paramadair a dhìth air an iarrtas, tha luach paramadair ’na bhroinn ris nach cuirear taic no tha droch-chruth air choireigin eile air.
+ invalid_resource_owner: Chan eil teisteas sealbhadair a’ ghoireis a chaidh a sholar dligheach no cha ghabh sealbhadair a’ ghoireis a lorg
+ invalid_scope: Tha an sgòp a chaidh iarraidh mì-dhligheach, chan aithne dhuinn e no tha droch-chruth air.
+ invalid_token:
+ expired: Dh’fhalbh an ùine air an tòcan inntrigidh
+ revoked: Chaidh an tòcan inntrigidh a chùl-ghairm
+ unknown: Chan eil an tòcan inntrigidh dligheach
+ resource_owner_authenticator_not_configured: Cha deach sealbhadair a’ ghoireis a lorg ri linn Doorkeeper.configure.resource_owner_authenticator gun rèiteachadh.
+ server_error: Thachair am frithealaiche dearbhaidh ri cumha gun dùil nach do leig leis an t-iarrtas a choileanadh.
+ temporarily_unavailable: Chan urrainn dhan fhrithealaiche ùghdarrachaidh an t-iarrtas a làimhseachadh aig an àm seo ri linn eallach anabarrach no obair-ghlèidhidh air an fhrithealaiche.
+ unauthorized_client: Cha deach an cliant ùghdarrachadh airson an t-iarrtas seo a dhèanamh air an dòigh seo.
+ unsupported_grant_type: Cha chuir am frithealaiche ùghdarrachaidh taic ris an seòrsa seo de thoirt cead ùghdarrachaidh.
+ unsupported_response_type: Cha chuir am frithealaiche ùghdarrachaidh taic ris an seòrsa seo de fhreagairt.
+ flash:
+ applications:
+ create:
+ notice: Chaidh an aplacaid a chruthachadh.
+ destroy:
+ notice: Chaidh an aplacaid a sguabadh às.
+ update:
+ notice: Chaidh an aplacaid ùrachadh.
+ authorized_applications:
+ destroy:
+ notice: Chaidh an t-iarrtas a chùl-ghairm.
+ layouts:
+ admin:
+ nav:
+ applications: Aplacaidean
+ oauth2_provider: Solaraiche OAuth2
+ application:
+ title: Tha feum air ùghdarrachadh OAuth
+ scopes:
+ admin:read: dàta sam bith a leughadh air an fhrithealaiche
+ admin:read:accounts: fiosrachadh dìomhair air a h-uile cunntas a leughadh
+ admin:read:reports: fiosrachadh dìomhair air a h-uile gearan is cunntasan a chaidh a ghearan mun dèidhinn a leughadh
+ admin:write: dàta sam bith atharrachadh air an fhrithealaiche
+ admin:write:accounts: gnìomhan na maorsainneachd a ghabhail air cunntasan
+ admin:write:reports: gnìomhan na maorsainneachd a ghabhail air gearanan
+ follow: dàimhean chunntasan atharrachadh
+ push: na brathan putaidh agad fhaighinn
+ read: dàta sam bith a’ cunntais agad a leughadh
+ read:accounts: fiosrachadh nan cunntasan fhaicinn
+ read:blocks: na bacaidhean agad fhaicinn
+ read:bookmarks: na comharran-lìn agad fhaicinn
+ read:favourites: na h-annsachdan agad fhaicinn
+ read:filters: na criathragan agad fhaicinn
+ read:follows: faicinn cò air a tha thu a’ leantainn
+ read:lists: na liostaichean agad fhaicinn
+ read:mutes: na mùchaidhean agad fhaicinn
+ read:notifications: na brathan agad faicinn
+ read:reports: na gearanan agad fhaicinn
+ read:search: lorg a dhèanamh às do leth
+ read:statuses: na postaichean uile fhaicinn
+ write: dàta sam bith a’ cunntais agad atharrachadh
+ write:accounts: a’ phròifil agad atharrachadh
+ write:blocks: cunntasan is àrainnean a bhacadh
+ write:bookmarks: comharran-lìn a dhèanamh de phostaichean
+ write:favourites: postaichean a chur ris na h-annsachdan
+ write:filters: criathragan a chruthachadh
+ write:follows: leantainn air daoine
+ write:lists: liostaichean a chruthachadh
+ write:media: faidhlichean meadhain a luchdadh suas
+ write:mutes: daoine is còmhraidhean a mhùchadh
+ write:notifications: na brathan agad fhalamhachadh
+ write:reports: gearan a dhèanamh mu chàch
+ write:statuses: postaichean fhoillseachadh
diff --git a/config/locales/doorkeeper.gl.yml b/config/locales/doorkeeper.gl.yml
index c6c347a7f..dd2071639 100644
--- a/config/locales/doorkeeper.gl.yml
+++ b/config/locales/doorkeeper.gl.yml
@@ -3,7 +3,7 @@ gl:
activerecord:
attributes:
doorkeeper/application:
- name: Nome do aplicativo
+ name: Nome da aplicación
redirect_uri: URI a redireccionar
scopes: Ámbitos
website: Sitio web da aplicación
@@ -83,7 +83,10 @@ gl:
invalid_client: A autenticación do cliente fallou por ser un cliente descoñecido, non se incluíu autenticación do cliente, ou o método de autenticación non está soportado.
invalid_grant: A validación da autorización proporcionada non é valida, caducou, foi rexeitada, non coincide a redirección URI utilizada na petición de autorización, ou foi proporcionada para outro cliente.
invalid_redirect_uri: A uri de redirección incluída non é válida.
- invalid_request: A petición fáltalle un parámetro requerido, inclúe un valor de parámetro non soportado, ou de algún xeito non ten o formato axeitado.
+ invalid_request:
+ missing_param: 'Falta o parámetro requerido: %{value}.'
+ request_not_authorized: A solicitude debe ser autorizada. O parámetro requerido para a aprobación da solicitude non é válido ou non existe.
+ unknown: Fáltalle un parámetro requerido á solicitude, inclúe un valor do parámetro non soportado, ou dalgún xeito non é correcto.
invalid_resource_owner: As credenciais do dono do recurso proporcionadas non son válidas, ou o dono do recurso non pode ser atopado
invalid_scope: O permiso solicitado non é válido, descoñecido, ou mal formado.
invalid_token:
diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml
index 78bb0a142..987ce2200 100644
--- a/config/locales/doorkeeper.he.yml
+++ b/config/locales/doorkeeper.he.yml
@@ -81,7 +81,6 @@ he:
invalid_client: הרשאת הלקוח נכשלה עקב לקוח שאינו ידוע, חוסר בהרשאת לקוח או שיטת הרשאה שאינה נתמכת.
invalid_grant: חוזה ההרשאה המצורף אינו חוקי, אינו תקף, מבוטל, או שאינו מתאים לקישורית ההפניה שבשימוש על ידי בקשת ההרשאה, או שהופק על ידי לקוח אחר.
invalid_redirect_uri: קישורית ההפניה המצורפת אינה חוקית.
- invalid_request: הבקשה חסרה פרמטר נדרש, מכילה פרמטר עם ערך שאיננו נתמך, או שתצורתה שגויה.
invalid_resource_owner: הרשאות בעלי המשאב שהוזנו אינן חוקיות, או שלא ניתן למצוא את בעלי המשאב
invalid_scope: התחום המבוקש אינו חוקי, אינו ידוע, או שתצורותו שגויה.
invalid_token:
diff --git a/config/locales/doorkeeper.hr.yml b/config/locales/doorkeeper.hr.yml
index d2cde038b..915a16008 100644
--- a/config/locales/doorkeeper.hr.yml
+++ b/config/locales/doorkeeper.hr.yml
@@ -70,7 +70,6 @@ hr:
access_denied: Vlasnik resursa ili autorizacijski poslužitelj odbili su zahtjev.
invalid_client: Autentifikacija klijenta nije uspjela zbog nepoznatog klijenta, nedostatka autentifikacije klijenta ili nepodržane metode autentifikacije.
invalid_redirect_uri: Sadržani uri preusmjerenja nije valjan.
- invalid_request: Zahtjevu nedostaje traženi parametar, uključuje nepodržanu vrijednost parametra ili je na neki drugi način neispravno formatiran.
invalid_resource_owner: Pružene vjerodajnice vlasnika resursa nisu valjane ili nije moguće pronaći vlasnika resursa
invalid_scope: Traženi opseg nije valjan, znan ili je neispravno oblikovan.
invalid_token:
diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml
index 32709299f..644f71c57 100644
--- a/config/locales/doorkeeper.hu.yml
+++ b/config/locales/doorkeeper.hu.yml
@@ -36,7 +36,7 @@ hu:
scopes: A hatásköröket szóközzel válaszd el. Hagyd üresen az alapértelmezett hatáskörökhöz.
index:
application: Alkalmazás
- callback_url: Callback URL
+ callback_url: Visszahívási URL
delete: Eltávolítás
empty: Nincsenek alkalmazásaid.
name: Név
@@ -83,7 +83,10 @@ hu:
invalid_client: A kliens hitelesítése megszakadt, mert ismeretlen a kliens, a kliens nem küldött hitelesítést, vagy a hitelesítés módja nem támogatott.
invalid_grant: A biztosított hitelesítés érvénytelen, lejárt, visszavont, vagy nem egyezik a hitelesítési kérésben használt URI-val, vagy más kliensnek címezték.
invalid_redirect_uri: Az átirányító URI nem valós.
- invalid_request: A kérésből hiányzik egy szükséges paraméter, nem támogatott paramétert tartalmaz, vagy máshogy sérült.
+ invalid_request:
+ missing_param: 'Szükséges paraméter hiányzik: %{value}.'
+ request_not_authorized: A kérést jóvá kell hagyni. A jóváhagyási kérelemhez szükséges egyik paraméter hiányzik vagy hibás.
+ unknown: A kérelemből hiányzik egy szükséges paraméter, nem támogatott paraméter-értéket tartalmaz, vagy máshogy sérült.
invalid_resource_owner: A biztosított erőforrás tulajdonosának hitelesítő adatai nem valósak, vagy az erőforrás tulajdonosa nem található.
invalid_scope: A kért nézet érvénytelen, ismeretlen, vagy hibás.
invalid_token:
@@ -116,8 +119,8 @@ hu:
title: OAuth engedély szükséges
scopes:
admin:read: szerver minden adatának olvasása
- admin:read:accounts: minden érzékeny fiókadat olvasása
- admin:read:reports: minden bejelentés és bejelentett fiók érzékeny adatainak olvasása
+ admin:read:accounts: minden kényes fiókadat olvasása
+ admin:read:reports: minden bejelentés és bejelentett fiók kényes adatainak olvasása
admin:write: szerver minden adatának változtatása
admin:write:accounts: moderációs műveletek végzése fiókokon
admin:write:reports: moderációs műveletek végzése bejelentéseken
@@ -135,12 +138,12 @@ hu:
read:notifications: értesítések megtekintése
read:reports: bejelentések megtekintése
read:search: nevedben keresés
- read:statuses: tülkök megtekintése
+ read:statuses: bejegyzések megtekintése
write: fiókod adatainak megváltoztatása
write:accounts: profilod megváltoztatása
write:blocks: fiókok és domainek letiltása
- write:bookmarks: könyvjelzők állapota
- write:favourites: tülkök kedvencnek jelölése
+ write:bookmarks: bejegyzések könyvjelzőzése
+ write:favourites: bejegyzések kedvencnek jelölése
write:filters: szűrők létrehozása
write:follows: mások követése
write:lists: listák létrehozása
@@ -148,4 +151,4 @@ hu:
write:mutes: emberek és beszélgetések némítása
write:notifications: értesítések törlése
write:reports: mások bejelentése
- write:statuses: tülkök közzététele
+ write:statuses: bejegyzések közzététele
diff --git a/config/locales/doorkeeper.hy.yml b/config/locales/doorkeeper.hy.yml
index ba3f4e124..ec5beb1c3 100644
--- a/config/locales/doorkeeper.hy.yml
+++ b/config/locales/doorkeeper.hy.yml
@@ -6,9 +6,7 @@ hy:
name: Յաւելուածի անուն
redirect_uri: վերաղյել URI
scopes: Դաշտեր
- website: 'Յաւելուածի վէբկայք
-
-'
+ website: Յաւելուածի վէբկայք
errors:
models:
doorkeeper/application:
@@ -50,9 +48,7 @@ hy:
title: Նոր յաւելուած
show:
actions: Գործողութիւններ
- application_id: 'Կլիենտի բանալի
-
-'
+ application_id: Կլիենտի բանալի
callback_urls: URL֊ների ետկանչ
scopes: Դաշտեր
secret: Կլիենտի գաղտնիք
@@ -77,7 +73,6 @@ hy:
index:
application: Յաւելուած
created_at: Նոյնականացրած
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Դաշտեր
title: Քո նոյնականացրած ծրագրերը
errors:
@@ -87,7 +82,6 @@ hy:
invalid_client: Կլիենտի նոյնականացումը ձախողուեց անյայտ կլիենտի, կլիենտի նոյնականացման, կամ նոյնականացման չաջակցուող ձեւի պատճառով։
invalid_grant: Տրամադրուած նոյնականացման թոյլտուութիւնն անվաւեր է, սպառուած, չեղարկուած, չի համապատասխանում վերայղուած URI֊ի նոյնականացման յայտին, կամ յղուել է այլ կլիենտի։
invalid_redirect_uri: Վերայղուած uri֊ի անվաւեր է։
- invalid_request: Յայտից բացակայում է պահանջուող պարամետրը, ներառում է չաջակցուող արժէք կամ այլ անսարքութիւն։
invalid_resource_owner: Տրամադրուած ռեսուրսի տիրոջ տուեալները անվաւեր են կամ ռեսուրսի տէրը չի գտնուել
invalid_scope: Յայտի դաշտն անվաւեր, անյայտ կամ անսարք։
invalid_token:
@@ -145,13 +139,4 @@ hy:
write:blocks: արգելափակել հաշիւները եւ դոմէյնները
write:bookmarks: էջանշել գրառումները
write:favourites: հաւանել գրառումները
- write:filters: 'ստեղծել ֆիլտրեր
-
-'
- write:follows: հետեւել
- write:lists: ստեղծել ցանկեր
- write:media: բեռնել մեդիա ֆայլեր
- write:mutes: լռեցնել մարդկանց եւ զրոյցները
- write:notifications: մաքրել ծանուցումները
- write:reports: բողոքել այլոցից
- write:statuses: թթել
+ write:filters: "'ստեղծել ֆիլտրեր"
diff --git a/config/locales/doorkeeper.id.yml b/config/locales/doorkeeper.id.yml
index 840390481..066d85e73 100644
--- a/config/locales/doorkeeper.id.yml
+++ b/config/locales/doorkeeper.id.yml
@@ -83,7 +83,10 @@ id:
invalid_client: Perizinan klien gagal karena klien tidak diketahui, tidak ada klien yang diizinkan, atau metode perizinan tidak didukung.
invalid_grant: Pemberian izin yang diberikan tidak valid, kadaluarsa, telah dicabut, atau tidak cocok dengan URI pengalihan yang digunakan pada permintaan izin, atau telah diberikan pada klien lain.
invalid_redirect_uri: Uri pengalihan tidak valid.
- invalid_request: Permintaan ini tidak mempunyai parameter yang dibutuhkan, mengandung parameter yang tidak didukung, atau mungkin strukturnya tidak benar.
+ invalid_request:
+ missing_param: 'Kehilangan parameter yang diperlukan: %{value}.'
+ request_not_authorized: Permintaan perlu diotorisasi. Parameter yang diperlukan untuk otorisasi hilang atau tidak valid.
+ unknown: Permintaan ini kehilangan parameter yang dibutuhkan, termasuk parameter yang tidak didukung, atau mungkin format tidak benar.
invalid_resource_owner: Identitas pemilik data yang diberikan tidak valid, atau pemilik data tidak ditemukan
invalid_scope: Scope yang diminta tidak valid, tidak diketahui, atau struktur tidak benar.
invalid_token:
diff --git a/config/locales/doorkeeper.is.yml b/config/locales/doorkeeper.is.yml
index 0d15479c5..17ea34206 100644
--- a/config/locales/doorkeeper.is.yml
+++ b/config/locales/doorkeeper.is.yml
@@ -83,7 +83,10 @@ is:
invalid_client: Auðkenning á biðlara brást vegna þess að biðlarinn er óþekktur, að auðkenning biðlarans fylgdi ekki með, eða að notuð var óstudd auðkenningaraðferð.
invalid_grant: Uppgefin auðkenningarheimild er ógild, útrunnin, afturkölluð, samsvarar ekki endurbirtingarslóðinni í auðkenningarbeiðninni, eða var gefin út til annars biðlara.
invalid_redirect_uri: Endurbeiningarslóðin sem fylgdi er ekki gild.
- invalid_request: Í beiðnina vantar nauðsynlega færibreytu, hún inniheldur óleyfilegt gildi á færibreytu, eða er gölluð á einhvern annan hátt.
+ invalid_request:
+ missing_param: 'Vantar nauðsynlega færibreytu: %{value}.'
+ request_not_authorized: Beiðnina þarf að heimila. Nauðsynlega færibreytu svo hægt sé að heimila hana vantar eða að hún er gölluð.
+ unknown: Í beiðnina vantar nauðsynlega færibreytu, hún inniheldur óleyfilegt gildi á færibreytu, eða er gölluð á einhvern annan hátt.
invalid_resource_owner: Uppgefin auðkenni eiganda tilfangs eru ekki gild, eða að eigandi tilfangs finnst ekki
invalid_scope: Umbeðið gildissvið er ógilt, óþekkt eða rangt uppsett.
invalid_token:
diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml
index 607abb2b3..6aea56e49 100644
--- a/config/locales/doorkeeper.it.yml
+++ b/config/locales/doorkeeper.it.yml
@@ -83,7 +83,10 @@ it:
invalid_client: Accesso al servizio fallito perché il servizio è sconosciuto, l'accesso al servizio non è stato incluso, o il metodo di accesso non è supportato.
invalid_grant: Il permesso d'autorizzazione è non valido, scaduto, disabilitato, non coincide con l'URI di reindirizzamento fornito nella richiesta di autorizzazione, o è stato rilasciato da un altro client.
invalid_redirect_uri: L'URI di reindirizzamento fornito non è valido.
- invalid_request: La richiesta non contiene un parametro necessario, contiene un valore parametrico non supportato, o è altrimenti malformulata.
+ invalid_request:
+ missing_param: 'Manca il parametro obbligatorio: %{value}.'
+ request_not_authorized: La richiesta deve essere autorizzata. Il parametro richiesto per autorizzare la richiesta è mancante o non valido.
+ unknown: La richiesta manca di un parametro necessario, include un parametro non supportato, o è in qualche altro modo mal strutturata.
invalid_resource_owner: Le credenziali di accesso fornite per il proprietario non sono corrette, o il proprietario del servizio non è stato trovato
invalid_scope: Lo scope richiesto è invalido, sconosciuto, o malformulato.
invalid_token:
diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml
index 73932bafd..1bc8dc684 100644
--- a/config/locales/doorkeeper.ja.yml
+++ b/config/locales/doorkeeper.ja.yml
@@ -83,7 +83,10 @@ ja:
invalid_client: 不明なクライアントであるか、クライアント情報が含まれていない、またはサポートされていない認証方法のため、クライアントの認証に失敗しました。
invalid_grant: 指定された認証許可は無効であるか、期限切れ、取り消されている、リダイレクトURIの不一致、または別のクライアントに発行されています。
invalid_redirect_uri: 無効なリダイレクトURIが含まれています。
- invalid_request: リクエストに必要なパラメータが欠けているか、サポートされていないパラメータが含まれている、または不正なフォーマットです。
+ invalid_request:
+ missing_param: '必須パラメータがありません: %{value}'
+ request_not_authorized: リクエストを承認する必要があります。リクエストを認可するために必要なパラメータがありません。
+ unknown: リクエストに必要なパラメータが欠けているか、サポートされていないパラメータが含まれている、または不正なフォーマットです。
invalid_resource_owner: 指定されたリソース所有者のクレデンシャルが無効であるか、リソース所有者が見つかりません
invalid_scope: 要求されたアクセス権は無効であるか、不明、または不正なフォーマットです。
invalid_token:
@@ -135,12 +138,12 @@ ja:
read:notifications: 通知の読み取り
read:reports: 通報の読み取り
read:search: あなたの代わりに検索
- read:statuses: すべてのトゥートの読み取り
+ read:statuses: すべての投稿の読み取り
write: アカウントのすべてのデータの変更
write:accounts: プロフィールの変更
write:blocks: ユーザーのブロックやドメインの非表示
- write:bookmarks: トゥートのブックマーク登録
- write:favourites: トゥートのお気に入り登録
+ write:bookmarks: 投稿のブックマーク登録
+ write:favourites: 投稿のお気に入り登録
write:filters: フィルターの変更
write:follows: あなたの代わりにフォロー、アンフォロー
write:lists: リストの変更
@@ -148,4 +151,4 @@ ja:
write:mutes: アカウントや会話のミュート
write:notifications: 通知の消去
write:reports: 通報の作成
- write:statuses: トゥートの投稿
+ write:statuses: 投稿の送信
diff --git a/config/locales/doorkeeper.ka.yml b/config/locales/doorkeeper.ka.yml
index f4178a752..5a9ec3610 100644
--- a/config/locales/doorkeeper.ka.yml
+++ b/config/locales/doorkeeper.ka.yml
@@ -81,7 +81,6 @@ ka:
invalid_client: ამოუცნობი კლიენტის გამო კლიენტ აუტენტიფიკაცია ვერ მოხერხდა, კლიენტის აუტენტიფიკაცია არ იყო თან დართული, ან მხარდაუჭერელი აუტენტიფიკაციის მეთოდი.
invalid_grant: მოწოდებული ავტორიზაციის გრანტი არასწორია, ვადაგასულია, გაუქმებულია არ ემთხვევა გადამისამართების ურის, რომელიც მოიხმარება ავტორიზაცის მოთხოვნაში, ან მიეცა სხვა კლიენტს.
invalid_redirect_uri: მითითებული გადამისამართების ური არაა ვალიდური.
- invalid_request: მოთხოვნას აკლია აუცილებელი პარამეტრი, მოიცავს მხარდაუჭერელ პარამეტრის მნიშვნელობას, ან სხვაგვარად არაა გამართული.
invalid_resource_owner: მოწოდებული რესურსის მფლობელის რწმუნებულებები არაა ვალიდური, ან მფლობელის პონვა ვერ ხერხდება
invalid_scope: მოთხოვნილი ფარგალი არასწორია, ამოუცნობია ან არაა გამართული.
invalid_token:
diff --git a/config/locales/doorkeeper.kk.yml b/config/locales/doorkeeper.kk.yml
index 75f8de542..15a1dbff7 100644
--- a/config/locales/doorkeeper.kk.yml
+++ b/config/locales/doorkeeper.kk.yml
@@ -73,7 +73,6 @@ kk:
index:
application: Қосымша
created_at: Авторизацияланды
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Scopеs
title: Your authorized applicаtions
errors:
@@ -83,7 +82,6 @@ kk:
invalid_client: Client authentication failed due to unknоwn client, no client authentication included, or unsupported authentication method.
invalid_grant: The provided authorization grant is invаlid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
invalid_redirect_uri: The redirеct uri included is not valid.
- invalid_request: The request is missing a required parameter, includes an unsupported parameter vаlue, or is otherwise malformed.
invalid_resource_owner: The provided resource owner credentials are not valid, or rеsource owner cannot be found
invalid_scope: The requested scope is invаlid, unknown, or malformed.
invalid_token:
diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml
index 16a2d0490..edc89a3e2 100644
--- a/config/locales/doorkeeper.ko.yml
+++ b/config/locales/doorkeeper.ko.yml
@@ -83,7 +83,10 @@ ko:
invalid_client: 알 수 없는 클라이언트이기 때문에 클라이언트 인증이 실패하였습니다, 클라이언트 자격증명이 포함되지 않았거나, 지원 되지 않는 메소드입니다.
invalid_grant: 제공된 권한 부여가 잘못되거나, 만료되었거나, 취소되었거나, 권한 부여 요청에 사용된 리디렉션 URI가 일치하지 않거나, 다른 클라이언트에 지정되었습니다.
invalid_redirect_uri: 리디렉션 URI가 올바르지 않습니다
- invalid_request: 요청에 필요한 매개변수가 없거나, 지원 되지 않는 매개변수가 있거나, 형식이 잘못되었습니다.
+ invalid_request:
+ missing_param: '필수 매개변수 누락: %{value}.'
+ request_not_authorized: 인증이 필요한 요청입니다. 인증 요청에 필요한 필수 매개 인자가 없거나 올바르지 않습니다.
+ unknown: 요청에 필요한 매개변수가 없거나, 지원 되지 않는 매개변수가 있거나, 형식이 잘못되었습니다.
invalid_resource_owner: 제공 된 리소스 소유자 자격증명이 올바르지 않거나 리소스 소유자를 찾을 수 없습니다
invalid_scope: 요청한 범위가 올바르지 않거나, 알 수 없거나, 잘못 된 형식입니다.
invalid_token:
diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml
index 29d5f40db..db2f0b713 100644
--- a/config/locales/doorkeeper.ku.yml
+++ b/config/locales/doorkeeper.ku.yml
@@ -73,7 +73,6 @@ ku:
index:
application: نەرمەکال
created_at: دهسهڵاتپێدراو
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: بوارەکان
title: بەرنامە ڕێگەپێدراوەکانت
errors:
@@ -83,7 +82,6 @@ ku:
invalid_client: سەلماندنی کڕیار سەرکەوتوو نەبوو بەهۆی کڕیاری نەناسراوەوە، هیچ ڕەسەنایەتی سەلماندنێکی کلایەنت لەخۆوە نەدەگرێت، یان شێوازی سەلماندنی پەسەند نەکراو.
invalid_grant: بەخشین مۆڵەتی دابینکراو نایاساییە، بەسەرچووە، هەڵوەشاندنەوەیە، ناگونجێلەگەڵ ئاراستەی URI بەکارهاتوو لە داواکاری ڕێپێدان، یان دەرچووە بۆ کڕیارێکی تر.
invalid_redirect_uri: Uri دووبارە ئاڕاستەکردنەوەکە لەخۆدەگرێت دروست نیە.
- invalid_request: داواکاریەکە پارامیتەری داواکراوی بزرە، بەهای پارامیتەری پشتگیری نەکراو لەخۆ دەگرێت، یان بە پێچەوانەوە نادروستە.
invalid_resource_owner: بڕواپێدانەکانی خاوەنی سەرچاوەی دابینکراو دروست نیە، یان ناتوانرێت خاوەنی سەرچاوە بدۆزرێتەوە
invalid_scope: بواری داواکراو نادروستە، نەناسراو، یان تێکچووە.
invalid_token:
@@ -111,7 +109,6 @@ ku:
admin:
nav:
applications: بەرنامەکان
- oauth2_provider: OAuth2 Provider
application:
title: داوای ڕێپێدانی OAuth
scopes:
diff --git a/config/locales/doorkeeper.kw.yml b/config/locales/doorkeeper.kw.yml
new file mode 100644
index 000000000..b2cfc12ff
--- /dev/null
+++ b/config/locales/doorkeeper.kw.yml
@@ -0,0 +1 @@
+kw:
diff --git a/config/locales/doorkeeper.ml.yml b/config/locales/doorkeeper.ml.yml
index 21540b976..83a37b1cd 100644
--- a/config/locales/doorkeeper.ml.yml
+++ b/config/locales/doorkeeper.ml.yml
@@ -28,12 +28,47 @@ ml:
title: അപ്ലിക്കേഷൻ എഡിറ്റുചെയ്യുക
form:
error: ക്ഷമിക്കണം! സാധ്യമായ പിശകുകൾക്കായി നിങ്ങളുടെ ഫോം പരിശോധിക്കുക
+ help:
+ redirect_uri: ഒരു യുആർഐക്ക് ഒരു വരി ഉപയോഗിക്കുക
index:
application: അപ്ലിക്കേഷന്
delete: മായ്ക്കുക
+ empty: നിങ്ങൾക്ക് അപ്ലിക്കേഷനുകളൊന്നുമില്ല.
name: പേര്
+ new: പുതിയ അപ്ലിക്കേഷൻ
+ show: കാണിക്കുക
+ title: നിങ്ങളുടെ അപ്ലിക്കേഷനുകൾ
+ new:
+ title: പുതിയ അപ്ലിക്കേഷൻ
+ show:
+ actions: പ്രവർത്തനങ്ങൾ
+ title: 'അപ്ലിക്കേഷൻ: %{name}'
+ authorizations:
+ buttons:
+ authorize: അംഗീകരിക്കുക
+ deny: നിരസിക്കുക
+ error:
+ title: ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു
+ new:
+ title: അംഗീകാരം ആവശ്യമാണ്
+ show:
+ title: ഈ അംഗീകാര കോഡ് പകർത്തി അപ്ലിക്കേഷനിൽ ഒട്ടിക്കുക.
authorized_applications:
buttons:
revoke: പിൻവലിക്കുക
confirmations:
revoke: നിങ്ങൾക്ക് ഉറപ്പാണോ?
+ index:
+ application: അപ്ലിക്കേഷന്
+ created_at: അംഗീകാരപ്പെടുത്തിയത്
+ date_format: "%Y-%m-%d %H:%M:%S"
+ title: നിങ്ങളുടെ അംഗീകൃത അപ്ലിക്കേഷനുകൾ
+ errors:
+ messages:
+ access_denied: റിസോഴ്സ് ഉടമയോ അംഗീകാര സെർവറോ അഭ്യർത്ഥന നിരസിച്ചു.
+ credential_flow_not_configured: Doorkeeper.configure.resource_owner_from_credentials ക്രമീകരിക്കാത്തതിനാൽ റിസോഴ്സ് ഉടമ പാസ്വേഡ് ക്രെഡൻഷ്യലുകളുടെ ഒഴുക്ക് പരാജയപ്പെട്ടു.
+ invalid_client: അജ്ഞാത ക്ലയന്റ്, ക്ലയന്റ് പ്രാമാണീകരണം ഉൾപ്പെടുത്തിയിട്ടില്ല, അല്ലെങ്കിൽ പിന്തുണയ്ക്കാത്ത പ്രാമാണീകരണ രീതി എന്നിവ കാരണം ക്ലയൻറ് പ്രാമാണീകരണം പരാജയപ്പെട്ടു.
+ invalid_token:
+ expired: പ്രവേശന ടോക്കൺ കാലഹരണപ്പെട്ടു
+ revoked: പ്രവേശന ടോക്കൺ അസാധുവാക്കി
+ unknown: പ്രവേശന ടോക്കൺ അസാധുവാണ്
diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml
index 10e075a66..786a0fcb8 100644
--- a/config/locales/doorkeeper.nl.yml
+++ b/config/locales/doorkeeper.nl.yml
@@ -83,7 +83,10 @@ nl:
invalid_client: Clientverificatie is mislukt door een onbekende client, ontbrekende client-authenticatie of een niet ondersteunde authenticatie-methode.
invalid_grant: De verstrekte autorisatie is ongeldig, verlopen, ingetrokken, komt niet overeen met de redirect-URI die is opgegeven of werd uitgegeven aan een andere client.
invalid_redirect_uri: De opgegeven redirect-URI is ongeldig.
- invalid_request: Het verzoek mist een vereiste parameter, bevat een niet ondersteunde parameterwaarde of is anderszins onjuist.
+ invalid_request:
+ missing_param: 'Ontbrekende vereiste parameter: %{value}.'
+ request_not_authorized: Het verzoek moet worden geautoriseerd. De vereiste parameter voor het autorisatieverzoek ontbreekt of is ongeldig.
+ unknown: Het verzoek mist een vereiste parameter, bevat een niet ondersteunde parameterwaarde of is op een andere manier onjuist.
invalid_resource_owner: De verstrekte resource-eigenaargegevens zijn ongeldig of de resource-eigenaar kan niet worden gevonden
invalid_scope: De opgevraagde toestemming is ongeldig, onbekend of onjuist.
invalid_token:
diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml
index f5437672a..419bc28a6 100644
--- a/config/locales/doorkeeper.nn.yml
+++ b/config/locales/doorkeeper.nn.yml
@@ -73,7 +73,6 @@ nn:
index:
application: Applikasjon
created_at: Autorisert
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Skop
title: Dine autoriserte applikasjonar
errors:
@@ -83,7 +82,6 @@ nn:
invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet.
invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient.
invalid_redirect_uri: Omdirigerings-URLen er ikkje gyldig.
- invalid_request: Forespørslen mangler en eller flere parametere, inkluderte en parameter som ikke støttes eller har feil struktur.
invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren
invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur.
invalid_token:
diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml
index 3512aeca2..0783b8723 100644
--- a/config/locales/doorkeeper.no.yml
+++ b/config/locales/doorkeeper.no.yml
@@ -73,7 +73,6 @@
index:
application: Applikasjon
created_at: Autorisert
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Omfang
title: Dine autoriserte applikasjoner
errors:
@@ -83,7 +82,6 @@
invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet.
invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient.
invalid_redirect_uri: Den inkluderte omdirigerings-URLen er ikke gyldig.
- invalid_request: Forespørslen mangler en eller flere parametere, inkluderte en parameter som ikke støttes eller har feil struktur.
invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren
invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur.
invalid_token:
diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml
index d84b5e7d9..471ed1c8c 100644
--- a/config/locales/doorkeeper.oc.yml
+++ b/config/locales/doorkeeper.oc.yml
@@ -83,7 +83,10 @@ oc:
invalid_client: L’autorizacion del client capitèt pas pr’amor que lo client es desconegut, l’autorizacion del client es pas enclús, o lo metòde d’autorizacion es pas suportat.
invalid_grant: L’acòrdi d’autorizacion donadat es pas valid, expirat, revocat, una redireccion URI utilizat en la demanda d’autorizacion no correspond, o a estat desliurat a un altre client.
invalid_redirect_uri: L’URL de redireccion es pas valida.
- invalid_request: La demanda a un paramètre que li manca, a una valor qu’es pas suportada, o quicòm mal format.
+ invalid_request:
+ missing_param: 'Paramètre requerit absent : %{value}.'
+ request_not_authorized: La requèsta deu èsser autorizada. Lo paramètre requerit per autorizar las requèstas es absent o invalid.
+ unknown: Li manca un paramètre requerit a la requèsta, inclutz un paramètre pas pres en carga, o es mal formatada.
invalid_resource_owner: La qualificacion del proprietari de la ressorça donada es pas valida, o lo proprietari de la ressorça es pas trobable
invalid_scope: L’encastre demandat es pas valid, o d’un marrit format.
invalid_token:
diff --git a/config/locales/doorkeeper.pa.yml b/config/locales/doorkeeper.pa.yml
new file mode 100644
index 000000000..bb8a6c834
--- /dev/null
+++ b/config/locales/doorkeeper.pa.yml
@@ -0,0 +1 @@
+pa:
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 7c6c4fb6d..2954fad8f 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -83,7 +83,10 @@ pl:
invalid_client: Autoryzacja klienta nie powiodła się z powodu nieznanego klienta, braku uwierzytelnienia klienta, lub niewspieranej metody uwierzytelniania.
invalid_grant: Grant uwierzytelnienia jest niepoprawny, przeterminowany, unieważniony, nie pasuje do URI przekierowwania użytego w żądaniu uwierzytelnienia, lub został wystawiony przez innego klienta.
invalid_redirect_uri: URI przekierowania jest nieprawidłowy.
- invalid_request: 'Żądanie jest nieprawidłowe: brakujący parametr, niewspierana wartość parametru, lub inny błąd.'
+ invalid_request:
+ missing_param: 'Brak wymaganego parametru: %{value}.'
+ request_not_authorized: Żądanie musi być autoryzowane. Wymagany do autoryzacji żądania parametr nie istnieje lub jest nieprawidłowy.
+ unknown: Żądanie nie zawiera wymaganego parametru, zawiera nieobsługiwaną wartość parametru, lub jest w inny sposób uszkodzone.
invalid_resource_owner: Dostarczone dane uwierzytelniające właściciela zasobu są niepoprawne, lub właściciel zasobu nie może zostać znaleziony
invalid_scope: Zakres żądania jest niepoprawny, nieznany, lub błędnie zbudowany.
invalid_token:
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index 7d18fb2bb..cadc5a410 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -83,7 +83,6 @@ pt-BR:
invalid_client: Autenticação do cliente falhou por causa de um cliente desconhecido, nenhum cliente de autenticação foi incluído ou o método de autenticação não é suportado.
invalid_grant: A garantia de autorização está inválida, expirou ou foi revogada, não é equivalente ao link de redirecionamento usado na solicitação de autorização ou foi emitido por outro cliente.
invalid_redirect_uri: O link de redirecionamento não é válido.
- invalid_request: A solicitação não possui um parâmetro obrigatório, inclui um valor não suportado ou está mal formatado.
invalid_resource_owner: As credenciais do proprietário informadas não são válidas ou o proprietário não pôde ser encontrado
invalid_scope: A autorização requirida é inválida, desconhecida ou está mal formatada.
invalid_token:
diff --git a/config/locales/doorkeeper.pt-PT.yml b/config/locales/doorkeeper.pt-PT.yml
index d492029b4..4a5bb899a 100644
--- a/config/locales/doorkeeper.pt-PT.yml
+++ b/config/locales/doorkeeper.pt-PT.yml
@@ -83,7 +83,10 @@ pt-PT:
invalid_client: Autenticação do cliente falhou por causa de um cliente desconhecido, nenhum cliente de autenticação incluído ou método de autenticação não suportado.
invalid_grant: A concessão de autorização fornecida é inválida, expirou, foi revogada, não corresponde à URI de redirecionamento usada no pedido de autorização ou foi emitida para outro cliente.
invalid_redirect_uri: A URI de redirecionamento incluída não é válida.
- invalid_request: A solicitação não possui um parâmetro requerido, inclui um valor não suportado ou tem outro tipo de formato incorreto.
+ invalid_request:
+ missing_param: 'Parâmetro requerido em falta: %{value}.'
+ request_not_authorized: O pedido precisa ser autorizado. O parâmetro requerido para autorização da solicitação está ausente ou é inválido.
+ unknown: A solicitação não possui um parâmetro requerido, inclui um valor de parâmetro não suportado ou tem outro tipo de formato incorreto.
invalid_resource_owner: As credenciais do proprietário do recurso não são válidas ou o proprietário do recurso não pode ser encontrado
invalid_scope: O âmbito solicitado é inválido, desconhecido ou tem um formato incorreto.
invalid_token:
diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml
index 3f3077c1e..fc4efdcc5 100644
--- a/config/locales/doorkeeper.ro.yml
+++ b/config/locales/doorkeeper.ro.yml
@@ -73,7 +73,6 @@ ro:
index:
application: Aplicație
created_at: Autorizat
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Domenii
title: Aplicațiile dvs autorizate
errors:
@@ -83,7 +82,6 @@ ro:
invalid_client: Autentificarea clientului a eșuat din cauza unui client necunoscut, nici o autentificare client inclusă, sau metodă de autentificare nesuportată.
invalid_grant: Acordarea autorizației furnizată este invalidă, expirată, revocată, nu corespunde URI-ului de redirecționare folosit în cererea de autorizare, sau a fost eliberat altui client.
invalid_redirect_uri: Uri-ul de redirecționare inclus nu este valid.
- invalid_request: Solicitarea îi lipsește un parametru necesar, include o valoare de parametru nesuportată sau este dealtfel formatat incorect.
invalid_resource_owner: Acreditările proprietarului de resurse nu sunt valide sau proprietarul de resurse nu poate fi găsit
invalid_scope: Domeniul de aplicare solicitat este invalid, necunoscut sau incorect.
invalid_token:
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 33e01c79b..df36db865 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -36,7 +36,7 @@ ru:
scopes: Разделяйте список разрешений пробелами. Оставьте незаполненным для использования разрешений по умолчанию.
index:
application: Приложение
- callback_url: Callback URL
+ callback_url: URL обратной связи
delete: Удалить
empty: У вас нет созданных приложений.
name: Название
@@ -83,7 +83,10 @@ ru:
invalid_client: Клиентская аутентификация завершилась неудачей (неизвестный клиент, не включена клиентская аутентификация, или метод аутентификации не поддерживается.
invalid_grant: Предоставленный доступ некорректен, истек, отозван, не совпадает с URI перенаправления, использованным в запросе авторизации, или был выпущен для другого клиента.
invalid_redirect_uri: Включенный URI перенаправления некорректен.
- invalid_request: В запросе не хватает обязательного параметра, присутствует неподдерживаемое значение параметра, либо он был сформирован неверно.
+ invalid_request:
+ missing_param: 'Отсутствует обязательный параметр: %{value}.'
+ request_not_authorized: Запрос должен быть авторизован. Обязательный параметр для авторизации запроса отсутствует или недействителен.
+ unknown: В запросе отсутствует обязательный параметр, включено неподдерживаемое значение параметра или он имеет иной формат.
invalid_resource_owner: Предоставленные данные владельца ресурса некорректны, или владелец ресурса не может быть найден
invalid_scope: Запрошенное разрешение некорректно, неизвестно или неверно сформировано.
invalid_token:
diff --git a/config/locales/doorkeeper.sc.yml b/config/locales/doorkeeper.sc.yml
index 2a6aeb2c1..db857affd 100644
--- a/config/locales/doorkeeper.sc.yml
+++ b/config/locales/doorkeeper.sc.yml
@@ -32,7 +32,7 @@ sc:
error: Controlla si su formulàriu tuo tenet faddinas
help:
native_redirect_uri: Imprea %{native_redirect_uri} pro is tests locales
- redirect_uri: Imprea una lìnia pro ogni URI
+ redirect_uri: Imprea una lìnia pro onni URI
scopes: Iscroba is àmbitos cun ispàtzios. Lassa bòidu pro impreare is predefinidos.
index:
application: Aplicatzione
@@ -48,8 +48,8 @@ sc:
title: Aplicatzione noa
show:
actions: Atziones
- application_id: ID de s'aplicatzione
- callback_urls: URLs de torrada
+ application_id: Crae de cliente
+ callback_urls: URL de torrada
scopes: Àmbitos
secret: Segretu de cliente
title: 'Aplicatzione: %{name}'
@@ -79,21 +79,24 @@ sc:
errors:
messages:
access_denied: Sa propiedade sa resursa o su serbidore de autorizatziones at refudadu sa rechesta.
- credential_flow_not_configured: Su flussu de is credentziales de sa crae de intrada de su mere de sa risursa est fallidu pro neghe de su fatu chi Doorkeeper.configure.resource_owner_from_credentials no est cunfiguradu.
- invalid_client: S'autenticatzione de su cliente est fallida ca su cliente est disconnotu, s'atzessu a su cliente no est istadu incluidu, o sa manera de autenticatzione no est suportada.
+ credential_flow_not_configured: Su flussu de is credentziales de sa crae de intrada de su mere de sa risursa est faddidu pro neghe de su fatu chi Doorkeeper.configure.resource_owner_from_credentials no est cunfiguradu.
+ invalid_client: S'autenticatzione de su cliente est faddida ca su cliente est disconnotu, s'atzessu a su cliente no est istadu incluidu, o sa manera de autenticatzione no est suportada.
invalid_grant: Su permissu de autorizatzione est invàlidu, iscadidu, revocadu, non currispondet a s'URI de re-indiritzamentu impreadu in sa rechesta de autorizatzione, o est istadu frunidu a un'àteru cliente.
invalid_redirect_uri: S'URI de re-indiritzamentu no est vàlidu.
- invalid_request: In sa rechesta mancat unu paràmetru netzessàriu, ddoe est unu valore de unu paràmetru non suportadu o est fata male in carchi àtera manera.
+ invalid_request:
+ missing_param: 'Ammancat unu paràmetru de cunfiguratzione rechestu: %{value}.'
+ request_not_authorized: Sa rechesta depet èssere autorizada. Ammancat unu paràmetru pro s'autorizatzione de sa rechesta, o puru no est vàlidu.
+ unknown: Ammancat unu paràmetru rechestu, o cuntenet unu paràmetru chi no est cumpatìbile, o no est formadu bene.
invalid_resource_owner: Is credentziales de su mere de sa risursa frunidas non sunt vàlidas, o su mere de sa risursa non podet èssere agatadu
- invalid_scope: S'àmbitu pedidu est invàlidu, disconnotu, o formuladu male.
+ invalid_scope: S'àmbitu rechestu est invàlidu, disconnotu, o formuladu male.
invalid_token:
expired: Su getone de atzessu est iscadidu
revoked: Su getone de atzessu est istadu revocadu
unknown: Su getone de atzessu no est vàlidu
resource_owner_authenticator_not_configured: Su mere de sa risursa no est istadu agatadu pro neghe de su fatu chi Doorkeeper.configure.resource_owner_authenticator no est configuradu.
- server_error: Su serbidore de autorizatzione at agatadu una cunditzione no isetada chi dd'at impedidu de esecutare sa rechesta tua.
+ server_error: Su serbidore de autorizatzione at agatadu una cunditzione no isetada chi ddi at impedidu de esecutare sa rechesta tua.
temporarily_unavailable: Su serbidore de autorizatzione no est, in custu momentu, in gradu de gestire sa rechesta pro neghe de unu subracàricu temporàneu o de una manutentzione.
- unauthorized_client: Su cliente no est autorizadu a esecutare custa rechesta in custa manera.
+ unauthorized_client: Su cliente no est autorizadu a esecutare custa rechesta cun custu mètodu.
unsupported_grant_type: Sa casta de modalidade de autorizatzione no est suportada dae su serbidore de atzessu.
unsupported_response_type: Su serbidore de autorizatzione non suportat custa casta de risposta.
flash:
@@ -126,7 +129,7 @@ sc:
read: lèghere totu is datos de su contu tuo
read:accounts: bìdere is informatziones in su contu
read:blocks: bìdere is blocos tuos
- read:bookmarks: càstia is sinnalibros tuos
+ read:bookmarks: bìdere is sinnalibros tuos
read:favourites: bìdere is preferidos tuos
read:filters: bìdere is filtros tuos
read:follows: bìdere is sighiduras tuas
@@ -134,18 +137,18 @@ sc:
read:mutes: bìdere is utentes chi as postu a sa muda
read:notifications: bìdere is notìficas tuas
read:reports: bìdere is sinnalatziones tuas
- read:search: chircare a nùmene tuo
+ read:search: chircare a nòmine tuo
read:statuses: bìdere totu is istados
write: modificare totu is datos de su contu tuo
write:accounts: modificare su profilu tuo
write:blocks: blocare contos e domìnios
- write:bookmarks: agiunghe is istados a is sinnalibros
- write:favourites: pònnere istados in is preferidos
+ write:bookmarks: agiùnghere is istados a is sinnalibros
+ write:favourites: pone istados in is preferidos
write:filters: creare filtros
write:follows: sighire persones
write:lists: creare listas
- write:media: càrriga documentos multimediales
- write:mutes: impostare persones e arresonadas a sa muda
+ write:media: carrigare documentos multimediales
+ write:mutes: pònnere persones e arresonadas a sa muda
write:notifications: isboidare is notìficas tuas
write:reports: sinnalare àteras persones
write:statuses: publicare istados
diff --git a/config/locales/doorkeeper.si.yml b/config/locales/doorkeeper.si.yml
new file mode 100644
index 000000000..9e399ec31
--- /dev/null
+++ b/config/locales/doorkeeper.si.yml
@@ -0,0 +1,39 @@
+---
+si:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: යෙදුමේ නම
+ doorkeeper:
+ applications:
+ buttons:
+ cancel: අවලංගු
+ destroy: විනාශ කරන්න
+ edit: සංස්කරණය
+ confirmations:
+ destroy: ඔබට විශ්වාසද?
+ index:
+ application: යෙදුම
+ name: නම
+ show: පෙන්වන්න
+ title: ඔබගේ යෙදුම්
+ show:
+ actions: ක්රියාමාර්ග
+ application_id: අනුග්රාහක යතුර
+ authorizations:
+ buttons:
+ authorize: සත්යාපනය
+ authorized_applications:
+ confirmations:
+ revoke: ඔබට විශ්වාසද?
+ index:
+ application: යෙදුම
+ date_format: "%Y-%m-%d %H:%M:%S"
+ layouts:
+ admin:
+ nav:
+ applications: යෙදුම්
+ scopes:
+ read:filters: ඔබගේ පෙරහන් බලන්න
+ read:lists: ඔබගේ ලැයිස්තු බලන්න
+ read:notifications: ඔබගේ දැනුම්දීම් බලන්න
diff --git a/config/locales/doorkeeper.sk.yml b/config/locales/doorkeeper.sk.yml
index bf414361d..bd039024d 100644
--- a/config/locales/doorkeeper.sk.yml
+++ b/config/locales/doorkeeper.sk.yml
@@ -81,7 +81,6 @@ sk:
invalid_client: Overenie klienta zlyhalo. Neznámy klient, chýbajú údaje o klientovi alebo nepodporovaná metóda overovania.
invalid_grant: Dané oprávnenie je neplatné, vypršané, zrušené, nesúhlasí s presmerovacou URI použitou v autorizačnej požiadavke, alebo bolo vydané pre iný klient.
invalid_redirect_uri: Presmerovacia URI je neplatná.
- invalid_request: Požiadavke chýba povinný parameter alebo obsahuje nepodporovanú hodnotu niektorého parametra alebo je nejako inak poškodená.
invalid_resource_owner: Uvedené prihlasovacie údaje sú neplatné alebo nenájdené
invalid_scope: Požadovaný rozsah je neplatný, neznámy alebo poškodený.
invalid_token:
diff --git a/config/locales/doorkeeper.sl.yml b/config/locales/doorkeeper.sl.yml
index 26d92ddb5..bb69d7519 100644
--- a/config/locales/doorkeeper.sl.yml
+++ b/config/locales/doorkeeper.sl.yml
@@ -72,7 +72,6 @@ sl:
index:
application: Program
created_at: Odobreno
- date_format: "%Y-%m-%d %H:%M:%S"
scopes: Obsegi
title: Vaši odobreni programi
errors:
@@ -82,7 +81,6 @@ sl:
invalid_client: Overitev odjemalca ni uspelo zaradi neznanega odjemalca, zaradi nevključitve overitve odjemalca ali zaradi nepodprte metode overitve.
invalid_grant: Predložena odobritev za pooblastilo je neveljavna, potekla, preklicana, se ne ujema z URI preusmeritvijo, ki je uporabljena v zahtevi za pooblastilo ali je bila izdana drugemu odjemalcu.
invalid_redirect_uri: URI za preusmeritev ni veljaven.
- invalid_request: Zahtevku manjka zahtevan parameter, vključuje nepodprto vrednost parametra ali je nepravilno oblikovan.
invalid_resource_owner: Predložene poverilnice lastnika virov niso veljavne ali pa lastnika virov ni mogoče najti
invalid_scope: Zahtevani obseg je neveljaven, neznan ali nepravilen.
invalid_token:
diff --git a/config/locales/doorkeeper.sq.yml b/config/locales/doorkeeper.sq.yml
index 3ae622a13..1b83bbc7c 100644
--- a/config/locales/doorkeeper.sq.yml
+++ b/config/locales/doorkeeper.sq.yml
@@ -81,9 +81,12 @@ sq:
access_denied: I zoti i burimit ose shërbyesi i autorizimit e hodhi poshtë kërkesën.
credential_flow_not_configured: Rrjedha për Kredenciale Fjalëkalimi të të Zotit të Burimit dështoi për shkak se Doorkeeper.configure.resource_owner_from_credentials është i paformësuar.
invalid_client: Mirëfilltësimi i klientit dështoi për shkak klienti të panjohur, mospërfshirjeje mirëfilltësimi klienti, ose metode të pambuluar mirëfilltësimi.
- invalid_grant: Autorizimi i dhënë është i pavlefshëm, ka skaduar, është shfuqizuar, nuk përputhet me URI-n e ridrejtimit të përdorur te kërkesa e autorizimit, ose është emetuar për klient tjetër.
+ invalid_grant: Autorizimi i dhënë është i pavlefshëm, ka skaduar, është shfuqizuar, s’përputhet me URI-n e ridrejtimit të përdorur te kërkesa e autorizimit, ose është emetuar për klient tjetër.
invalid_redirect_uri: URI e ridrejtimit s’është e vlefshme.
- invalid_request: Kërkesës i mungon një parametër i domosdoshëm, përfshin një vlerë të pambuluar parametri, ose përndryshe është e keqformuar.
+ invalid_request:
+ missing_param: 'Mungon parametër i domosdoshëm: %{value}.'
+ request_not_authorized: Kërkesa duhet autorizuar. Një parametër i domosdoshëm për autorizimin e kërkesës mungon ose është i pavlefshëm.
+ unknown: Kërkesës i mungon një parametër i domosdoshëm, përfshin një vlerë parametri që nuk mbulohet, ose përndryshe është formuar keq.
invalid_resource_owner: Kredencialet e dhëna për të zotin e burimit s’janë të vlefshme, ose s’gjendet i zoti i burimit
invalid_scope: Fushëveprimi i kërkuar është i pavlefshëm, i panjohur ose i keqformuar.
invalid_token:
@@ -94,7 +97,7 @@ sq:
server_error: Shërbyesi i autorizimit hasi një kusht të papritur, i cili e pengoi të plotësonte kërkesën.
temporarily_unavailable: Shërbyesi i mirëfilltësimeve hëpërhë s’është në gjendje të trajtojë kërkesën, për shkak të një mbingarkese të përkohshme ose ndonjë mirëmbajtjeje të shërbyesit.
unauthorized_client: Klienti s’është i autorizuar të kryejë këtë kërkesë duke përdorur këtë metodë.
- unsupported_grant_type: Lloji i autorizimit të dhënë nuk mbulohet nga shërbyesi i autorizimeve.
+ unsupported_grant_type: Lloji i dhënë i autorizimeve nuk mbulohet nga shërbyesi i autorizimeve.
unsupported_response_type: Shërbyesi i autorizimeve nuk e mbulon këtë lloj përgjigjeje.
flash:
applications:
diff --git a/config/locales/doorkeeper.sr-Latn.yml b/config/locales/doorkeeper.sr-Latn.yml
index 8e96f8b93..c1d7c6e5e 100644
--- a/config/locales/doorkeeper.sr-Latn.yml
+++ b/config/locales/doorkeeper.sr-Latn.yml
@@ -82,7 +82,6 @@ sr-Latn:
invalid_client: Klijentska identifikacija nije uspela zbog nepoznatog klijenta, zato što klijent nije uključio identifikaciju ili zato što je iskorišćen nepodržani identifikacioni metod.
invalid_grant: Zadata identifikaciona dozvola je neispravna, istekla, opozvana, ne poklapa se sa adresom preusmeravanja ili je izdata nekog drugom klijentu.
invalid_redirect_uri: Uključena adresa preusmeravanja nije ispravna.
- invalid_request: Obavezni parametar fali u zahtevu, zahtev uključuje nepodržanu vrednost parametra ili je parametar na neki drugi način pogrešan.
invalid_resource_owner: Zadati kredencijali vlasnika resursa nisu ispravni ili vlasnik resursa ne može biti nađen
invalid_scope: Zahtevani opseg važenja nije ispravan, nepoznat je ili je na neki drugi način pogrešan.
invalid_token:
diff --git a/config/locales/doorkeeper.sr.yml b/config/locales/doorkeeper.sr.yml
index 723c02d09..1d92cf2f0 100644
--- a/config/locales/doorkeeper.sr.yml
+++ b/config/locales/doorkeeper.sr.yml
@@ -82,7 +82,6 @@ sr:
invalid_client: Клијентска идентификација није успела због непознатог клијента, зато што клијент није укључио идентификацију или зато што је искоришћен неподржани идентификациони метод.
invalid_grant: Задата идентификациона дозвола је неисправна, истекла, опозвана, не поклапа се са адресом преусмеравања или је издата неког другом клијенту.
invalid_redirect_uri: Укључена адреса преусмеравања није исправна.
- invalid_request: Обавезни параметар фали у захтеву, захтев укључује неподржану вредност параметра или је параметар на неки други начин погрешан.
invalid_resource_owner: Задати креденцијали власника ресурса нису исправни или власник ресурса не може бити нађен
invalid_scope: Захтевани опсег важења није исправан, непознат је или је на неки други начин погрешан.
invalid_token:
diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml
index 015f0702f..d7d28bae0 100644
--- a/config/locales/doorkeeper.sv.yml
+++ b/config/locales/doorkeeper.sv.yml
@@ -37,7 +37,7 @@ sv:
index:
application: Applikation
callback_url: Återkalls URL
- delete: Ta bort
+ delete: Radera
empty: Du har inga program.
name: Namn
new: Ny applikation
@@ -83,7 +83,10 @@ sv:
invalid_client: Klientautentisering misslyckades på grund av okänd klient, ingen klientautentisering inkluderad eller icke godkänd autentiseringsmetod.
invalid_grant: Det beviljade godkännandetillskottet är ogiltigt, upphört, återkallat, matchar inte den omdirigering URI som användes i auktorisationsförfrågan eller har utfärdats till en annan klient.
invalid_redirect_uri: Den omdirigerade uri är inte giltig.
- invalid_request: Förfrågan saknar en obligatorisk parameter, innehåller ett icke-stödt parametervärde eller är annars felaktigt.
+ invalid_request:
+ missing_param: 'Nödvändig parameter saknas: %{value}.'
+ request_not_authorized: Begäran måste godkännas. Den nödvändiga parametern för att godkänna begärandet saknas eller är ogiltig.
+ unknown: Förfrågningen saknar en nödvändig parameter, inkluderar en ett parametervärde som inte stöds, eller är annars felaktigt utformad.
invalid_resource_owner: De angivna resursägarnas referenser är inte giltiga, eller resursägare kan inte hittas
invalid_scope: Det begärda räckvidden är ogiltigt, okänt eller felaktigt.
invalid_token:
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index ba59444be..54ca4dc14 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -28,6 +28,8 @@ th:
destroy: คุณแน่ใจหรือไม่?
edit:
title: แก้ไขแอปพลิเคชัน
+ form:
+ error: อ๊ะ! ตรวจสอบแบบฟอร์มของคุณสำหรับข้อผิดพลาดที่อาจเกิดขึ้น
help:
native_redirect_uri: ใช้ %{native_redirect_uri} สำหรับการทดสอบในเซิร์ฟเวอร์
redirect_uri: ใช้หนึ่งบรรทัดต่อ URI
@@ -71,12 +73,14 @@ th:
index:
application: แอปพลิเคชัน
created_at: อนุญาตเมื่อ
- date_format: "%Y-%m-%d %H:%M:%S"
+ date_format: "%d/%m/%Y %H:%M:%S"
scopes: ขอบเขต
title: แอปพลิเคชันที่ได้รับอนุญาตของคุณ
errors:
messages:
access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ
+ invalid_request:
+ missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}'
invalid_token:
expired: โทเคนการเข้าถึงหมดอายุแล้ว
revoked: เพิกถอนโทเคนการเข้าถึงแล้ว
@@ -121,12 +125,12 @@ th:
read:notifications: ดูการแจ้งเตือนของคุณ
read:reports: ดูรายงานของคุณ
read:search: ค้นหาในนามของคุณ
- read:statuses: ดูสถานะทั้งหมด
+ read:statuses: ดูโพสต์ทั้งหมด
write: ปรับเปลี่ยนข้อมูลบัญชีทั้งหมดของคุณ
write:accounts: ปรับเปลี่ยนโปรไฟล์ของคุณ
write:blocks: ปิดกั้นบัญชีและโดเมน
- write:bookmarks: เพิ่มที่คั่นหน้าสถานะ
- write:favourites: ชื่นชอบสถานะ
+ write:bookmarks: เพิ่มที่คั่นหน้าโพสต์
+ write:favourites: ชื่นชอบโพสต์
write:filters: สร้างตัวกรอง
write:follows: ติดตามผู้คน
write:lists: สร้างรายการ
@@ -134,4 +138,4 @@ th:
write:mutes: ซ่อนผู้คนและการสนทนา
write:notifications: ล้างการแจ้งเตือนของคุณ
write:reports: รายงานผู้คนอื่น ๆ
- write:statuses: เผยแพร่สถานะ
+ write:statuses: เผยแพร่โพสต์
diff --git a/config/locales/doorkeeper.tr.yml b/config/locales/doorkeeper.tr.yml
index 45a5821e4..8019b421a 100644
--- a/config/locales/doorkeeper.tr.yml
+++ b/config/locales/doorkeeper.tr.yml
@@ -36,7 +36,7 @@ tr:
scopes: Kapsamları boşluklarla ayırın. Varsayılan kapsamları kullanmak için boş bırakın.
index:
application: Uygulama
- callback_url: Callback URL
+ callback_url: Geri Dönüş URL
delete: Sil
empty: Hiç uygulamanız yok.
name: İsim
@@ -48,10 +48,10 @@ tr:
title: Yeni uygulama
show:
actions: Eylemler
- application_id: Client key
+ application_id: İstemci anahtarı
callback_urls: Callback URL
scopes: Kapsamlar
- secret: Client secret
+ secret: İstemci gizli anahtarı
title: 'Uygulama: %{name}'
authorizations:
buttons:
@@ -73,7 +73,7 @@ tr:
index:
application: Uygulama
created_at: Yetkili
- date_format: "%Y-%m-%d %H:%M:%S"
+ date_format: "%m-%d-%Y %H:%M:%S"
scopes: Kapsamlar
title: Yetkili uygulamalarınız
errors:
@@ -83,7 +83,10 @@ tr:
invalid_client: İstemcinin kimlik doğrulaması bilinmeyen istemci, istemci kimlik doğrulamasının dahil olmaması veya desteklenmeyen kimlik doğrulama yöntemi nedeniyle başarısız oldu.
invalid_grant: Sağlanan yetkilendirme izni geçersiz, süresi dolmuş, iptal edilmiş, yetkilendirme isteğinde kullanılan yönlendirme URL'siyle eşleşmiyor veya başka bir istemciye verilmiş.
invalid_redirect_uri: Dahil edilmiş yönlendirme URL'si geçersiz.
- invalid_request: İstekte gerekli bir parametre eksik, desteklenmeyen bir parametre değeri içeriyor veya başka türlü hatalı biçimlendirilmiş.
+ invalid_request:
+ missing_param: 'Gerekli parametre eksik: %{value}.'
+ request_not_authorized: İsteğin yetkilendirilmesi gerekiyor. İsteği yetkilendirmek için gereken parametre eksik veya geçersiz.
+ unknown: İstekte gerekli bir parametre eksik, desteklenmeyen bir parametre değeri içeriyor veya aksi durumda hatalı biçimlendirilmiş.
invalid_resource_owner: Sağlanan kaynak sahibi kimlik bilgileri geçerli değil veya kaynak sahibi bulunamıyor
invalid_scope: İstenen kapsam geçersiz, bilinmeyen veya hatalı biçimlendirilmiş olabilir.
invalid_token:
diff --git a/config/locales/doorkeeper.tt.yml b/config/locales/doorkeeper.tt.yml
index 5eab4abff..af6e8f180 100644
--- a/config/locales/doorkeeper.tt.yml
+++ b/config/locales/doorkeeper.tt.yml
@@ -1 +1,15 @@
+---
tt:
+ doorkeeper:
+ applications:
+ buttons:
+ cancel: Баш тарту
+ edit: Үзгәртү
+ submit: Җибәрү
+ index:
+ delete: Бетерү
+ name: Исем
+ show: Күрсәтү
+ authorized_applications:
+ index:
+ date_format: "%Y-%m-%d %H:%M:%S"
diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml
index c5f0c64b6..8d0d8e770 100644
--- a/config/locales/doorkeeper.uk.yml
+++ b/config/locales/doorkeeper.uk.yml
@@ -83,7 +83,10 @@ uk:
invalid_client: Не вдалося аутентифікувати клієнта (клієнт невідомий, аутентифікацію клієнта не увімкнено, або непідтримуваний метод аутентифікації).
invalid_grant: Наданий санкціонований дозвіл недійсний, прострочений, анульований, не відповідає URI перенаправлення, що використовується в запиті авторизації, або був виданий іншому клієнту.
invalid_redirect_uri: Включений URI перенаправлення не є дійсним.
- invalid_request: У запиті відсутній обов'язковий параметр, міститься непідтримуване значення параметра, або він сформований неправильно.
+ invalid_request:
+ missing_param: 'Відсутній обов''язковий параметр: %{value}.'
+ request_not_authorized: Запит повинен бути авторизований. Необхідний параметр запиту авторизації відсутній або хибний.
+ unknown: У запиті відсутній необхідний параметр, він містить непідтримуваний параметр або його сформовано не правильно.
invalid_resource_owner: Надані дані власника ресурсу не є дійсними, або власника ресурсу неможливо знайти
invalid_scope: Запитуваний дозвіл недійсний, невідомий, або неправильно сформований.
invalid_token:
diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml
index a51891fd0..97cc26854 100644
--- a/config/locales/doorkeeper.vi.yml
+++ b/config/locales/doorkeeper.vi.yml
@@ -62,7 +62,7 @@ vi:
new:
able_to: Nó sẽ có thể
prompt: Ứng dụng %{client_name} yêu cầu quyền truy cập vào tài khoản của bạn
- title: Cần được cho phép
+ title: Yêu cầu truy cập
show:
title: Sao chép mã này và dán nó vào ứng dụng.
authorized_applications:
@@ -75,7 +75,7 @@ vi:
created_at: Đã cho phép
date_format: "%Y-%m-%d %H:%M:%S"
scopes: Quyền hạn
- title: Các ứng dụng mà bạn cho phép
+ title: Các ứng dụng đang cho phép
errors:
messages:
access_denied: Chủ sở hữu tài nguyên hoặc máy chủ đã từ chối yêu cầu.
@@ -83,7 +83,10 @@ vi:
invalid_client: Xác thực ứng dụng khách không thành công do máy khách mơ hồ, không bao gồm xác thực ứng dụng khách hoặc phương thức xác thực không được hỗ trợ.
invalid_grant: Yêu cầu không hợp lệ, hết hạn, bị gỡ hoặc không khớp với tài khoản đã cấp phép. Hoặc xung đột với ứng dụng khác.
invalid_redirect_uri: URL chuyển hướng không hợp lệ.
- invalid_request: Yêu cầu thiếu tham số bắt buộc, bao gồm giá trị tham số không được hỗ trợ hoặc không đúng định dạng.
+ invalid_request:
+ missing_param: 'Thiếu tham số bắt buộc: %{value}.'
+ request_not_authorized: Yêu cầu cần được cho phép trước. Tham số bắt buộc bị thiếu hoặc vô giá trị.
+ unknown: Thiếu tham số bắt buộc. Có thể giá trị tham số không được hỗ trợ, hoặc không đúng định dạng.
invalid_resource_owner: Thông tin xác thực chủ sở hữu tài nguyên được cung cấp không hợp lệ hoặc không thể tìm thấy chủ sở hữu tài nguyên
invalid_scope: Quyền yêu cầu không hợp lệ, không có thật hoặc sai định dạng.
invalid_token:
@@ -106,7 +109,7 @@ vi:
notice: Ứng dụng cập nhật.
authorized_applications:
destroy:
- notice: Ứng dụng bị gỡ.
+ notice: Đã gỡ bỏ ứng dụng.
layouts:
admin:
nav:
diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml
index 3e0d88c82..7fefaf951 100644
--- a/config/locales/doorkeeper.zh-CN.yml
+++ b/config/locales/doorkeeper.zh-CN.yml
@@ -38,7 +38,7 @@ zh-CN:
application: 应用
callback_url: 回调 URL
delete: 删除
- empty: 您没有申请。
+ empty: 你没有申请。
name: 名称
new: 创建新应用
scopes: 权限范围
@@ -83,7 +83,10 @@ zh-CN:
invalid_client: 由于应用信息未知、未提交认证信息或使用了不支持的认证方式,认证失败
invalid_grant: 授权方式无效、过期或已被撤销、与授权请求中的回调地址不一致,或使用了其他应用的回调地址
invalid_redirect_uri: 无效的登录回调地址
- invalid_request: 请求缺少必要的参数,或者参数值、格式不正确
+ invalid_request:
+ missing_param: 缺少必需的参数:%{value}
+ request_not_authorized: 请求需要被授权。授权请求所需的参数缺失或无效。
+ unknown: 该请求缺少一个必要的参数,包括一个不支持的参数值,或者其他格式错误。
invalid_resource_owner: 资源所有者认证无效,或找不到所有者
invalid_scope: 请求的权限范围无效、未知或格式不正确
invalid_token:
@@ -126,7 +129,7 @@ zh-CN:
read: 读取你的帐户数据
read:accounts: 查看账号信息
read:blocks: 查看你的屏蔽列表
- read:bookmarks: 查看您的书签
+ read:bookmarks: 查看你的书签
read:favourites: 查看喜欢的嘟文
read:filters: 查看你的过滤器
read:follows: 查看你的关注
diff --git a/config/locales/doorkeeper.zh-HK.yml b/config/locales/doorkeeper.zh-HK.yml
index 872727049..60c64cc31 100644
--- a/config/locales/doorkeeper.zh-HK.yml
+++ b/config/locales/doorkeeper.zh-HK.yml
@@ -83,7 +83,10 @@ zh-HK:
invalid_client: 用戶程式認證 (Client Authentication) 失敗,原因是使用了未知的用戶程式、沒有傳回用戶認證資訊、或者使用了不支援的認證方法 (Authentication Method)。
invalid_grant: 所提供的認證申請 (authorization grant) 不正確、過期、已被取消、或者無法對應授權請求 (authorization request) 內的轉接 URI,或者屬於別的用戶程式。
invalid_redirect_uri: 不正確的轉接網址。
- invalid_request: 請求缺少必要的參數、有不支援的參數、或包含其他格式錯誤。
+ invalid_request:
+ missing_param: 缺少必要的參數:%{value}.
+ request_not_authorized: 請求必須被授權。用於授權的必要參數缺失或無效。
+ unknown: 這個請求缺少必要的參數,包括有不支援的參數、或有其他格式錯誤。
invalid_resource_owner: 資源擁有者的登入資訊無效、或者無法找到該資源擁有者
invalid_scope: 你所請求的權限範圍 (scope) 無效、未知、或格式錯誤。
invalid_token:
diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml
index 6526a35f5..912924787 100644
--- a/config/locales/doorkeeper.zh-TW.yml
+++ b/config/locales/doorkeeper.zh-TW.yml
@@ -61,7 +61,7 @@ zh-TW:
title: 發生錯誤
new:
able_to: 這將允許其作:
- prompt: 應用程式 %{client_name} 要求取得您帳號的存取權限
+ prompt: 應用程式 %{client_name} 要求取得您帳戶的存取權限
title: 需要授權
show:
title: 複製此授權碼並貼上到應用程式中。
@@ -83,7 +83,10 @@ zh-TW:
invalid_client: 客戶端驗證失敗,可能是因為未知的客戶端程式、未包含客戶端驗證、或使用了不支援的認證方法。
invalid_grant: 授權申請不正確、逾期、已被取消、與授權請求內的重新導向 URI 不符、或屬於別的客戶端程式。
invalid_redirect_uri: 包含的重新導向 URI 是不正確的。
- invalid_request: 請求缺少必要的參數、有不支援的參數、或其他格式錯誤。
+ invalid_request:
+ missing_param: 缺少必要的參數:%{value}.
+ request_not_authorized: 請求必須是已授權的。用於授權的必要參數缺少或無效。
+ unknown: 請求缺少必要的參數、有不支援的參數、或其他格式錯誤。
invalid_resource_owner: 資源擁有者的登入資訊錯誤,或無法找到該資源擁有者
invalid_scope: 請求的範圍錯誤、未定義、或格式錯誤。
invalid_token:
@@ -122,8 +125,8 @@ zh-TW:
admin:write:accounts: 對帳戶進行仲裁管理動作
admin:write:reports: 對報告進行仲裁管理動作
follow: 修改帳戶關係
- push: 接收帳號的推送通知
- read: 讀取您所有的帳號資料
+ push: 接收帳戶的推播通知
+ read: 讀取您所有的帳戶資料
read:accounts: 檢視帳戶資訊
read:blocks: 檢視您的封鎖名單
read:bookmarks: 檢視您的書籤
@@ -136,7 +139,7 @@ zh-TW:
read:reports: 檢視您的檢舉
read:search: 以你的身份搜尋
read:statuses: 檢視所有嘟文
- write: 修改您帳號的所有資料
+ write: 修改您帳戶的所有資料
write:accounts: 修改您的個人檔案
write:blocks: 封鎖帳戶及站台
write:bookmarks: 書籤狀態
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 5442d38b8..148704ef3 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -26,6 +26,8 @@ el:
Χρησιμεύει στη λειτουργία της ομοσπονδίας και δε θα πρέπει να αποκλειστεί, εκτός κι αν είναι επιθυμητός ο αποκλεισμός ολόκληρου του κόμβου. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιηθεί η λειτουργία αποκλεισμού τομέα.
learn_more: Μάθε περισσότερα
privacy_policy: Πολιτική απορρήτου
+ rules: Κανόνες διακομιστή
+ rules_html: 'Παρακάτω είναι μια σύνοψη των κανόνων που πρέπει να ακολουθήσετε αν θέλετε να έχετε ένα λογαριασμό σε αυτόν τον διακομιστή Mastodon:'
see_whats_happening: Μάθε τι συμβαίνει
server_stats: 'Στατιστικά κόμβου:'
source_code: Πηγαίος κώδικας
@@ -77,7 +79,6 @@ el:
other: Τουτ
posts_tab_heading: Τουτ
posts_with_replies: Τουτ και απαντήσεις
- reserved_username: Το όνομα χρήστη είναι κατειλημμένο
roles:
admin: Διαχειριστής
bot: Μποτ (αυτόματος λογαριασμός)
@@ -257,44 +258,6 @@ el:
update_announcement: Ενημέρωση Ανακοίνωσης
update_custom_emoji: Ενημέρωση Προσαρμοσμένου Emoji
update_status: Ενημέρωση Κατάστασης
- actions:
- assigned_to_self_report: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της
- change_email_user: Ο/Η %{name} άλλαξε τη διεύθυνση email του χρήστη %{target}
- confirm_user: Ο/Η %{name} επιβεβαίωσε τη διεύθυνση email του χρήστη %{target}
- create_account_warning: Ο/Η %{name} έστειλε προειδοποίηση προς %{target}
- create_announcement: Νέα ανακοίνωση %{target} από %{name}
- create_custom_emoji: Ο/Η %{name} ανέβασε νέο emoji %{target}
- create_domain_allow: Ο/Η %{name} έβαλε τον τομέα %{target} σε λευκή λίστα
- create_domain_block: Ο/Η %{name} μπλόκαρε τον τομέα %{target}
- create_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε μαύρη λίστα
- create_ip_block: Ο/Η %{name} δημιούργησε κανόνα για την IP %{target}
- demote_user: Ο/Η %{name} υποβίβασε το χρήστη %{target}
- destroy_announcement: Διαγραφή ανακοίνωσης %{target} από %{name}
- destroy_custom_emoji: Ο/Η %{name} κατέστρεψε το emoji %{target}
- destroy_domain_allow: Ο/Η %{name} αφαίρεσε τον τομέα %{target} από λίστα εγκρίσεων
- destroy_domain_block: Ο/Η %{name} ξεμπλόκαρε τον τομέα %{target}
- destroy_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε λευκή λίστα
- destroy_ip_block: Ο/Η %{name} διέγραψε κανόνα για την IP %{target}
- destroy_status: Ο/Η %{name} αφαίρεσε την κατάσταση του/της %{target}
- disable_2fa_user: Ο/Η %{name} απενεργοποίησε την απαίτηση δύο παραγόντων για το χρήστη %{target}
- disable_custom_emoji: Ο/Η %{name} απενεργοποίησε το emoji %{target}
- disable_user: Ο/Η %{name} απενεργοποίησε την είσοδο για το χρήστη %{target}
- enable_custom_emoji: Ο/Η %{name} ενεργοποίησε το emoji %{target}
- enable_user: Ο/Η %{name} ενεργοποίησε την είσοδο του χρήστη %{target}
- memorialize_account: Ο/Η %{name} μετέτρεψε το λογαριασμό του/της %{target} σε σελίδα νεκρολογίας
- promote_user: Ο/Η %{name} προβίβασε το χρήστη %{target}
- remove_avatar_user: Ο/Η %{name} αφαίρεσε το αβατάρ του/της %{target}
- reopen_report: Ο/Η %{name} ξανάνοιξε την καταγγελία %{target}
- reset_password_user: Ο/Η %{name} επανέφερε το συνθηματικό του χρήστη %{target}
- resolve_report: Ο/Η %{name} επέλυσε την καταγγελία %{target}
- silence_account: Ο/Η %{name} αποσιώπησε το λογαριασμό του/της %{target}
- suspend_account: Ο/Η %{name} έπαυσε το λογαριασμό του/της %{target}
- unassigned_report: Ο/Η %{name} αποδέσμευσε την καταγγελία %{target}
- unsilence_account: Ο/Η %{name} ήρε την αποσιώπηση του λογαριασμού του/της %{target}
- unsuspend_account: Ο/Η %{name} ήρε την παύση του λογαριασμού του χρήστη %{target}
- update_announcement: Ενημέρωση ανακοίνωσης %{target} από %{name}
- update_custom_emoji: Ο/Η %{name} ενημέρωσε το emoji %{target}
- update_status: Ο/Η %{name} ενημέρωσε την κατάσταση του/της %{target}
deleted_status: "(διαγραμμένη δημοσίευση)"
empty: Δεν βρέθηκαν αρχεία καταγραφής.
filter_by_action: Φιλτράρισμα ανά ενέργεια
@@ -309,10 +272,12 @@ el:
new:
create: Δημιουργία ανακοίνωσης
title: Νέα ανακοίνωση
+ publish: Δημοσίευση
published_msg: Επιτυχής δημοσίευση ανακοίνωσης!
scheduled_for: Προγραμματισμένη για %{time}
scheduled_msg: Η ανακοίνωση προγραμματίστηκε για δημοσίευση!
title: Ανακοινώσεις
+ unpublish: Αναίρεση δημοσίευσης
unpublished_msg: Επιτυχής ακύρωση δημοσίευσης ανακοίνωσης!
updated_msg: Επιτυχής ενημέρωση ανακοίνωσης!
custom_emojis:
@@ -357,7 +322,6 @@ el:
feature_profile_directory: Κατάλογος χρηστών
feature_registrations: Εγγραφές
feature_relay: Ανταποκριτής ομοσπονδίας
- feature_spam_check: Καταπολέμηση ανεπιθύμητης επικοινωνίας
feature_timeline_preview: Προεπισκόπιση ροής
features: Λειτουργίες
hidden_service: Ομοσπονδία με κρυμμένες υπηρεσίες
@@ -433,9 +397,12 @@ el:
create: Πρόσθεση τομέα
title: Νέα εγγραφή email στη μαύρη λίστα
title: Μαύρη λίστα email
+ follow_recommendations:
+ status: Κατάσταση
instances:
by_domain: Τομέας
delivery_available: Διαθέσιμη παράδοση
+ empty: Δεν βρέθηκαν τομείς.
known_accounts:
one: "%{count} γνωστός λογαριασμός"
other: "%{count} γνωστοί λογαριασμοί"
@@ -533,6 +500,13 @@ el:
unassign: Αποσύνδεση
unresolved: Άλυτη
updated_at: Ενημερωμένη
+ rules:
+ add_new: Προσθήκη κανόνα
+ delete: Διαγραφή
+ description_html: Ενώ οι περισσότεροι ισχυρίζονται ότι έχουν διαβάσει και συμφωνούν με τους όρους της υπηρεσίας, συνήθως οι άνθρωποι δεν διαβάζουν μέχρι μετά την εμφάνιση ενός προβλήματος. Κάντε ευκολότερο να δουν τους κανόνες του διακομιστή σας με μια ματιά παρέχοντας τους σε μια λίστα σημείων. Προσπαθήστε να κρατήσετε μεμονωμένους κανόνες σύντομους και απλούς, αλλά προσπαθήστε να μην τους χωρίσετε σε πολλά ξεχωριστά αντικείμενα.
+ edit: Επεξεργασία κανόνα
+ empty: Δεν έχουν οριστεί ακόμα κανόνες διακομιστή.
+ title: Κανόνες διακομιστή
settings:
activity_api_enabled:
desc_html: Καταμέτρηση τοπικών δημοσιεύσεων, ενεργών χρηστών και νέων εγγραφών σε εβδομαδιαίες ομαδοποιήσεις
@@ -556,9 +530,6 @@ el:
users: Προς συνδεδεμένους τοπικούς χρήστες
domain_blocks_rationale:
title: Εμφάνιση σκεπτικού
- enable_bootstrap_timeline_accounts:
- desc_html: Οι νέοι χρήστες να ακολουθούν τους προρυθμισμένουνς λογαριασμούς ώστε η αρχική ροή τους να μην είναι άδεια
- title: Προεπιλογή παρακολούθησης για τους νέους χρήστες
hero:
desc_html: Εμφανίζεται στην μπροστινή σελίδα. Συνίσταται τουλάχιστον 600x100px. Όταν λείπει, χρησιμοποιείται η μικρογραφία του κόμβου
title: Εικόνα ήρωα
@@ -609,9 +580,6 @@ el:
desc_html: Μπορείς να γράψεις τη δική σου πολιτική απορρήτου, όρους χρήσης ή άλλους νομικούς όρους. Μπορείς να χρησιμοποιήσεις HTML tags
title: Προσαρμοσμένοι όροι χρήσης της υπηρεσίας
site_title: Όνομα κόμβου
- spam_check_enabled:
- desc_html: Το Mastodon μπορεί να αποσιωπεί και να καταγγέλει αυτόματα λογαριασμούς βάσει της συμπεριφοράς τους όπως για παράδειγμα επαναλαμβανόμενη αποστολή ανεπιθύμητων μηνυμάτων. Μπορεί να υπάρξουν και λανθασμένες ανιχνεύσεις.
- title: Καταπολέμηση ανεπιθύμητης επικοινωνίας
thumbnail:
desc_html: Χρησιμοποιείται για προεπισκοπήσεις μέσω του OpenGraph και του API. Συστήνεται 1200x630px
title: Μικρογραφία κόμβου
@@ -642,13 +610,16 @@ el:
no_status_selected: Καμία δημοσίευση δεν άλλαξε αφού καμία δεν ήταν επιλεγμένη
title: Καταστάσεις λογαριασμού
with_media: Με πολυμέσα
+ system_checks:
+ database_schema_check:
+ message_html: Υπάρχουν μετακινήσεις βάσης δεδομένων που εκκρεμούν. Παρακαλώ εκτελέστε τις για να βεβαιωθείτε ότι η εφαρμογή συμπεριφέρεται όπως αναμένεται
+ rules_check:
+ action: Διαχείριση κανόνων διακομιστή
+ message_html: Δεν έχετε ορίσει κανέναν κανόνα διακομιστή.
tags:
accounts_today: Μοναδικές χρήσεις ημέρας
accounts_week: Μοναδικές χρήσεις εβδομάδας
breakdown: Ανάλυση σημερινής χρήσης ανα πηγή
- context: Συνάφεια
- directory: Στον κατάλογο
- in_directory: "%{count} στον κατάλογο"
last_active: Τελευταία δραστηριότητα
most_popular: Δημοφιλέστερες
most_recent: Πιο πρόσφατες
@@ -665,6 +636,7 @@ el:
add_new: Πρόσθεση νέου
delete: Διαγραφή
edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης
+ empty: Δεν έχετε ακόμη ορίσει κάποια προεπιλογή προειδοποίησης.
title: Διαχείριση προκαθορισμένων προειδοποιήσεων
admin_mailer:
new_pending_account:
@@ -752,6 +724,7 @@ el:
functional: Ο λογαριασμός σου είναι πανέτοιμος.
pending: Η εφαρμογή σας εκκρεμεί έγκρισης, πιθανόν θα διαρκέσει κάποιο χρόνο. Θα λάβετε email αν εγκριθεί.
redirecting_to: Ο λογαριασμός σου είναι ανενεργός γιατί επί του παρόντος ανακατευθύνει στον %{acct}.
+ too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά.
trouble_logging_in: Πρόβλημα σύνδεσης;
use_security_key: Χρήση κλειδιού ασφαλείας
authorize_follow:
@@ -775,10 +748,6 @@ el:
errors:
invalid_key: δεν είναι έγκυρο κλειδί Ed25519 ή Curve25519
invalid_signature: δεν είναι έγκυρη υπογραφή Ed25519
- date:
- formats:
- default: "%b %d, %Y"
- with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}ω"
@@ -1029,6 +998,8 @@ el:
body: 'Η κατάστασή σου προωθήθηκε από τον/την %{name}:'
subject: Ο/Η %{name} προώθησε την κατάστασή σου
title: Νέα προώθηση
+ status:
+ subject: Ο/Η %{name} μόλις έγραψε κάτι
notifications:
email_events: Συμβάντα για ειδοποιήσεις μέσω email
email_events_hint: 'Επέλεξε συμβάντα για τα οποία θέλεις να λαμβάνεις ειδοποιήσεις μέσω email:'
@@ -1113,40 +1084,13 @@ el:
activity: Τελευταία δραστηριότητα
browser: Φυλλομετρητής (Browser)
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Άγνωστος φυλλομετρητής
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Τρέχουσα σύνδεση
description: "%{browser} σε %{platform}"
explanation: Αυτοί είναι οι φυλλομετρητές (browsers) που είναι συνδεδεμένοι στον λογαριασμό σου στο Mastodon αυτή τη στιγμή.
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
mac: Mac
other: άγνωστη πλατφόρμα
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Ανακάλεσε
revoke_success: Η σύνδεση ανακλήθηκε επιτυχώς
title: Σύνδεση
@@ -1171,8 +1115,6 @@ el:
profile: Προφίλ
relationships: Ακολουθείς και σε ακολουθούν
two_factor_authentication: Πιστοποίηση 2 παραγόντων (2FA)
- spam_check:
- spam_detected: Αυτή είναι μια αυτόματη αναφορά. Εντοπίστηκε ανεπιθύμητο υλικό (spam).
statuses:
attached:
audio:
@@ -1213,7 +1155,6 @@ el:
show_older: Εμφάνιση παλαιότερων
show_thread: Εμφάνιση νήματος
sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση
- title: '%{name}: "%{quote}"'
visibilities:
private: Μόνο ακόλουθοι
private_long: Εμφάνιση μόνο σε ακόλουθους
@@ -1314,10 +1255,6 @@ el:
contrast: Mastodon (Υψηλή αντίθεση)
default: Mastodon (Σκοτεινό)
mastodon-light: Mastodon (Ανοιχτόχρωμο)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
add: Προσθήκη
disable: Απενεργοποίησε
@@ -1378,11 +1315,8 @@ el:
tips: Συμβουλές
title: Καλώς όρισες, %{name}!
users:
- blocked_email_provider: Δεν είναι επιτρεπτός αυτός ο πάροχος email
follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα
generic_access_help_html: Δυσκολεύεσαι να μπεις στο λογαριασμό σου; Μπορείς να επικοινωνήσεις στο %{email} για βοήθεια
- invalid_email: Η διεύθυνση email είναι άκυρη
- invalid_email_mx: Αυτή η διεύθυνση email δεν φαίνεται να υπάρχει
invalid_otp_token: Άκυρος κωδικός πιστοποίησης 2 παραγόντων (2FA)
invalid_sign_in_token: Άκυρος κωδικός ασφάλειας
otp_lost_help_html: Αν χάσεις και τα δύο, μπορείς να επικοινωνήσεις με τον/την %{email}
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 8245397d7..486592b29 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,7 +1,7 @@
---
en:
about:
- about_hashtag_html: These are public toots tagged with #%{hashtag}. You can interact with them if you have an account anywhere in the fediverse.
+ about_hashtag_html: These are public posts tagged with #%{hashtag}. You can interact with them if you have an account anywhere in the fediverse.
about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!'
about_this: About
active_count_after: active
@@ -26,13 +26,15 @@ en:
It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block.
learn_more: Learn more
privacy_policy: Privacy policy
+ rules: Server rules
+ rules_html: 'Below is a summary of rules you need to follow if you want to have an account on this server of Mastodon:'
see_whats_happening: See what's happening
server_stats: 'Server stats:'
source_code: Source code
status_count_after:
- one: status
- other: statuses
- status_count_before: Who authored
+ one: post
+ other: posts
+ status_count_before: Who published
tagline: Follow friends and discover new ones
terms: Terms of service
unavailable_content: Moderated servers
@@ -42,7 +44,7 @@ en:
rejecting_media: 'Media files from these servers will not be processed or stored, and no thumbnails will be displayed, requiring manual click-through to the original file:'
rejecting_media_title: Filtered media
silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users interactions, unless you are following them:'
- silenced_title: Silenced servers
+ silenced_title: Limited servers
suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:'
suspended_title: Suspended servers
unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.
@@ -74,11 +76,10 @@ en:
pin_errors:
following: You must be already following the person you want to endorse
posts:
- one: Toot
- other: Toots
- posts_tab_heading: Toots
- posts_with_replies: Toots and replies
- reserved_username: The username is reserved
+ one: Post
+ other: Posts
+ posts_tab_heading: Posts
+ posts_with_replies: Posts and replies
roles:
admin: Admin
bot: Bot
@@ -118,6 +119,7 @@ en:
demote: Demote
destroyed_msg: "%{username}'s data is now queued to be deleted imminently"
disable: Freeze
+ disable_sign_in_token_auth: Disable e-mail token authentication
disable_two_factor_authentication: Disable 2FA
disabled: Frozen
display_name: Display name
@@ -126,6 +128,7 @@ en:
email: Email
email_status: Email status
enable: Unfreeze
+ enable_sign_in_token_auth: Enable e-mail token authentication
enabled: Enabled
enabled_msg: Successfully unfroze %{username}'s account
followers: Followers
@@ -150,7 +153,7 @@ en:
active: Active
all: All
pending: Pending
- silenced: Silenced
+ silenced: Limited
suspended: Suspended
title: Moderation
moderation_notes: Moderation notes
@@ -190,15 +193,19 @@ en:
search: Search
search_same_email_domain: Other users with the same e-mail domain
search_same_ip: Other users with the same IP
- sensitive: Sensitive
- sensitized: marked as sensitive
+ security_measures:
+ only_password: Only password
+ password_and_2fa: Password and 2FA
+ password_and_sign_in_token: Password and e-mail token
+ sensitive: Force-sensitive
+ sensitized: Marked as sensitive
shared_inbox_url: Shared inbox URL
show:
created_reports: Made reports
targeted_reports: Reported by others
silence: Limit
silenced: Limited
- statuses: Statuses
+ statuses: Posts
subscribe: Subscribe
suspended: Suspended
suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had.
@@ -206,10 +213,10 @@ en:
time_in_queue: Waiting in queue %{time}
title: Accounts
unconfirmed_email: Unconfirmed email
- undo_sensitized: Undo sensitive
- undo_silenced: Undo silence
+ undo_sensitized: Undo force-sensitive
+ undo_silenced: Undo limit
undo_suspension: Undo suspension
- unsilenced_msg: Successfully unlimited %{username}'s account
+ unsilenced_msg: Successfully undid limit of %{username}'s account
unsubscribe: Unsubscribe
unsuspended_msg: Successfully unsuspended %{username}'s account
username: Username
@@ -229,18 +236,22 @@ en:
create_domain_block: Create Domain Block
create_email_domain_block: Create E-mail Domain Block
create_ip_block: Create IP rule
+ create_unavailable_domain: Create Unavailable Domain
demote_user: Demote User
destroy_announcement: Delete Announcement
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
- destroy_email_domain_block: Delete e-mail domain block
+ destroy_email_domain_block: Delete E-mail Domain Block
destroy_ip_block: Delete IP rule
- destroy_status: Delete Status
+ destroy_status: Delete Post
+ destroy_unavailable_domain: Delete Unavailable Domain
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
+ disable_sign_in_token_auth_user: Disable E-mail Token Authentication for User
disable_user: Disable User
enable_custom_emoji: Enable Custom Emoji
+ enable_sign_in_token_auth_user: Enable E-mail Token Authentication for User
enable_user: Enable User
memorialize_account: Memorialize Account
promote_user: Promote User
@@ -248,59 +259,63 @@ en:
reopen_report: Reopen Report
reset_password_user: Reset Password
resolve_report: Resolve Report
- sensitive_account: Mark the media in your account as sensitive
- silence_account: Silence Account
+ sensitive_account: Force-Sensitive Account
+ silence_account: Limit Account
suspend_account: Suspend Account
unassigned_report: Unassign Report
- unsensitive_account: Unmark the media in your account as sensitive
- unsilence_account: Unsilence Account
+ unsensitive_account: Undo Force-Sensitive Account
+ unsilence_account: Undo Limit Account
unsuspend_account: Unsuspend Account
update_announcement: Update Announcement
update_custom_emoji: Update Custom Emoji
update_domain_block: Update Domain Block
- update_status: Update Status
+ update_status: Update Post
actions:
- assigned_to_self_report: "%{name} assigned report %{target} to themselves"
- change_email_user: "%{name} changed the e-mail address of user %{target}"
- confirm_user: "%{name} confirmed e-mail address of user %{target}"
- create_account_warning: "%{name} sent a warning to %{target}"
- create_announcement: "%{name} created new announcement %{target}"
- create_custom_emoji: "%{name} uploaded new emoji %{target}"
- create_domain_allow: "%{name} allowed federation with domain %{target}"
- create_domain_block: "%{name} blocked domain %{target}"
- create_email_domain_block: "%{name} blocked e-mail domain %{target}"
- create_ip_block: "%{name} created rule for IP %{target}"
- demote_user: "%{name} demoted user %{target}"
- destroy_announcement: "%{name} deleted announcement %{target}"
- destroy_custom_emoji: "%{name} destroyed emoji %{target}"
- destroy_domain_allow: "%{name} disallowed federation with domain %{target}"
- destroy_domain_block: "%{name} unblocked domain %{target}"
- destroy_email_domain_block: "%{name} unblocked e-mail domain %{target}"
- destroy_ip_block: "%{name} deleted rule for IP %{target}"
- destroy_status: "%{name} removed status by %{target}"
- disable_2fa_user: "%{name} disabled two factor requirement for user %{target}"
- disable_custom_emoji: "%{name} disabled emoji %{target}"
- disable_user: "%{name} disabled login for user %{target}"
- enable_custom_emoji: "%{name} enabled emoji %{target}"
- enable_user: "%{name} enabled login for user %{target}"
- memorialize_account: "%{name} turned %{target}'s account into a memoriam page"
- promote_user: "%{name} promoted user %{target}"
- remove_avatar_user: "%{name} removed %{target}'s avatar"
- reopen_report: "%{name} reopened report %{target}"
- reset_password_user: "%{name} reset password of user %{target}"
- resolve_report: "%{name} resolved report %{target}"
- sensitive_account: "%{name} marked %{target}'s media as sensitive"
- silence_account: "%{name} silenced %{target}'s account"
- suspend_account: "%{name} suspended %{target}'s account"
- unassigned_report: "%{name} unassigned report %{target}"
- unsensitive_account: "%{name} unmarked %{target}'s media as sensitive"
- unsilence_account: "%{name} unsilenced %{target}'s account"
- unsuspend_account: "%{name} unsuspended %{target}'s account"
- update_announcement: "%{name} updated announcement %{target}"
- update_custom_emoji: "%{name} updated emoji %{target}"
- update_domain_block: "%{name} updated domain block for %{target}"
- update_status: "%{name} updated status by %{target}"
- deleted_status: "(deleted status)"
+ assigned_to_self_report_html: "%{name} assigned report %{target} to themselves"
+ change_email_user_html: "%{name} changed the e-mail address of user %{target}"
+ confirm_user_html: "%{name} confirmed e-mail address of user %{target}"
+ create_account_warning_html: "%{name} sent a warning to %{target}"
+ create_announcement_html: "%{name} created new announcement %{target}"
+ create_custom_emoji_html: "%{name} uploaded new emoji %{target}"
+ create_domain_allow_html: "%{name} allowed federation with domain %{target}"
+ create_domain_block_html: "%{name} blocked domain %{target}"
+ create_email_domain_block_html: "%{name} blocked e-mail domain %{target}"
+ create_ip_block_html: "%{name} created rule for IP %{target}"
+ create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}"
+ demote_user_html: "%{name} demoted user %{target}"
+ destroy_announcement_html: "%{name} deleted announcement %{target}"
+ destroy_custom_emoji_html: "%{name} destroyed emoji %{target}"
+ destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}"
+ destroy_domain_block_html: "%{name} unblocked domain %{target}"
+ destroy_email_domain_block_html: "%{name} unblocked e-mail domain %{target}"
+ destroy_ip_block_html: "%{name} deleted rule for IP %{target}"
+ destroy_status_html: "%{name} removed post by %{target}"
+ destroy_unavailable_domain_html: "%{name} resumed delivery to domain %{target}"
+ disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}"
+ disable_custom_emoji_html: "%{name} disabled emoji %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} disabled e-mail token authentication for %{target}"
+ disable_user_html: "%{name} disabled login for user %{target}"
+ enable_custom_emoji_html: "%{name} enabled emoji %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} enabled e-mail token authentication for %{target}"
+ enable_user_html: "%{name} enabled login for user %{target}"
+ memorialize_account_html: "%{name} turned %{target}'s account into a memoriam page"
+ promote_user_html: "%{name} promoted user %{target}"
+ remove_avatar_user_html: "%{name} removed %{target}'s avatar"
+ reopen_report_html: "%{name} reopened report %{target}"
+ reset_password_user_html: "%{name} reset password of user %{target}"
+ resolve_report_html: "%{name} resolved report %{target}"
+ sensitive_account_html: "%{name} marked %{target}'s media as sensitive"
+ silence_account_html: "%{name} limited %{target}'s account"
+ suspend_account_html: "%{name} suspended %{target}'s account"
+ unassigned_report_html: "%{name} unassigned report %{target}"
+ unsensitive_account_html: "%{name} unmarked %{target}'s media as sensitive"
+ unsilence_account_html: "%{name} undid limit of %{target}'s account"
+ unsuspend_account_html: "%{name} unsuspended %{target}'s account"
+ update_announcement_html: "%{name} updated announcement %{target}"
+ update_custom_emoji_html: "%{name} updated emoji %{target}"
+ update_domain_block_html: "%{name} updated domain block for %{target}"
+ update_status_html: "%{name} updated post by %{target}"
+ deleted_status: "(deleted post)"
empty: No logs found.
filter_by_action: Filter by action
filter_by_user: Filter by user
@@ -314,10 +329,12 @@ en:
new:
create: Create announcement
title: New announcement
+ publish: Publish
published_msg: Announcement successfully published!
scheduled_for: Scheduled for %{time}
scheduled_msg: Announcement scheduled for publication!
title: Announcements
+ unpublish: Unpublish
unpublished_msg: Announcement successfully unpublished!
updated_msg: Announcement successfully updated!
custom_emojis:
@@ -362,7 +379,6 @@ en:
feature_profile_directory: Profile directory
feature_registrations: Registrations
feature_relay: Federation relay
- feature_spam_check: Anti-spam
feature_timeline_preview: Timeline preview
features: Features
hidden_service: Federation with hidden services
@@ -415,14 +431,14 @@ en:
rejecting_media: rejecting media files
rejecting_reports: rejecting reports
severity:
- silence: silenced
+ silence: limited
suspend: suspended
show:
affected_accounts:
one: One account in the database affected
other: "%{count} accounts in the database affected"
retroactive:
- silence: Unsilence existing affected accounts from this domain
+ silence: Undo limit of existing affected accounts from this domain
suspend: Unsuspend existing affected accounts from this domain
title: Undo domain block for %{domain}
undo: Undo
@@ -440,9 +456,34 @@ en:
create: Add domain
title: Block new e-mail domain
title: Blocked e-mail domains
+ follow_recommendations:
+ description_html: "Follow recommendations help new users quickly find interesting content. When a user has not interacted with others enough to form personalized follow recommendations, these accounts are recommended instead. They are re-calculated on a daily basis from a mix of accounts with the highest recent engagements and highest local follower counts for a given language."
+ language: For language
+ status: Status
+ suppress: Suppress follow recommendation
+ suppressed: Suppressed
+ title: Follow recommendations
+ unsuppress: Restore follow recommendation
instances:
+ back_to_all: All
+ back_to_limited: Limited
+ back_to_warning: Warning
by_domain: Domain
+ delivery:
+ all: All
+ clear: Clear delivery errors
+ restart: Restart delivery
+ stop: Stop delivery
+ title: Delivery
+ unavailable: Unavailable
+ unavailable_message: Delivery unavailable
+ warning: Warning
+ warning_message:
+ one: Delivery failure %{count} day
+ other: Delivery failure %{count} days
delivery_available: Delivery is available
+ delivery_error_days: Delivery error days
+ delivery_error_hint: If delivery is not possible for %{count} days, it will be automatically marked as undeliverable.
empty: No domains found.
known_accounts:
one: "%{count} known account"
@@ -489,11 +530,11 @@ en:
relays:
add_new: Add new relay
delete: Delete
- description_html: A federation relay is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it. It can help small and medium servers discover content from the fediverse, which would otherwise require local users manually following other people on remote servers.
+ description_html: A federation relay is an intermediary server that exchanges large volumes of public posts between servers that subscribe and publish to it. It can help small and medium servers discover content from the fediverse, which would otherwise require local users manually following other people on remote servers.
disable: Disable
disabled: Disabled
enable: Enable
- enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it.
+ enable_hint: Once enabled, your server will subscribe to all public posts from this relay, and will begin sending this server's public posts to it.
enabled: Enabled
inbox_url: Relay URL
pending: Waiting for relay's approval
@@ -538,17 +579,25 @@ en:
resolved: Resolved
resolved_msg: Report successfully resolved!
status: Status
+ target_origin: Origin of reported account
title: Reports
unassign: Unassign
unresolved: Unresolved
updated_at: Updated
+ rules:
+ add_new: Add rule
+ delete: Delete
+ description_html: While most claim to have read and agree to the terms of service, usually people do not read through until after a problem arises. Make it easier to see your server's rules at a glance by providing them in a flat bullet point list. Try to keep individual rules short and simple, but try not to split them up into many separate items either.
+ edit: Edit rule
+ empty: No server rules have been defined yet.
+ title: Server rules
settings:
activity_api_enabled:
- desc_html: Counts of locally posted statuses, active users, and new registrations in weekly buckets
- title: Publish aggregate statistics about user activity
+ desc_html: Counts of locally published posts, active users, and new registrations in weekly buckets
+ title: Publish aggregate statistics about user activity in the API
bootstrap_timeline_accounts:
- desc_html: Separate multiple usernames by comma. Only local and unlocked accounts will work. Default when empty is all local admins.
- title: Default follows for new users
+ desc_html: Separate multiple usernames by comma. These accounts will be guaranteed to be shown in follow recommendations
+ title: Recommend these accounts to new users
contact_information:
email: Business e-mail
username: Contact username
@@ -565,9 +614,6 @@ en:
users: To logged-in local users
domain_blocks_rationale:
title: Show rationale
- enable_bootstrap_timeline_accounts:
- desc_html: Make new users automatically follow configured accounts so their home feed doesn't start out empty
- title: Enable default follows for new users
hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
title: Hero image
@@ -576,7 +622,7 @@ en:
title: Mascot image
peers_api_enabled:
desc_html: Domain names this server has encountered in the fediverse
- title: Publish list of discovered servers
+ title: Publish list of discovered servers in the API
preview_sensitive_media:
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
title: Show sensitive media in OpenGraph previews
@@ -621,9 +667,6 @@ en:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
title: Custom terms of service
site_title: Server name
- spam_check_enabled:
- desc_html: Mastodon can auto-report accounts that send repeated unsolicited messages. There may be false positives.
- title: Anti-spam automation
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
title: Server thumbnail
@@ -651,19 +694,24 @@ en:
media:
title: Media
no_media: No media
- no_status_selected: No statuses were changed as none were selected
- title: Account statuses
+ no_status_selected: No posts were changed as none were selected
+ title: Account posts
with_media: With media
+ system_checks:
+ database_schema_check:
+ message_html: There are pending database migrations. Please run them to ensure the application behaves as expected
+ rules_check:
+ action: Manage server rules
+ message_html: You haven't defined any server rules.
+ sidekiq_process_check:
+ message_html: No Sidekiq process running for the %{value} queue(s). Please review your Sidekiq configuration
tags:
accounts_today: Unique uses today
accounts_week: Unique uses this week
breakdown: Breakdown of today's usage by source
- context: Context
- directory: In directory
- in_directory: "%{count} in directory"
- last_active: Last active
+ last_active: Recently used
most_popular: Most popular
- most_recent: Most recent
+ most_recent: Recently created
name: Hashtag
review: Review status
reviewed: Reviewed
@@ -677,6 +725,7 @@ en:
add_new: Add new
delete: Delete
edit_preset: Edit warning preset
+ empty: You haven't defined any warning presets yet.
title: Manage warning presets
admin_mailer:
new_pending_account:
@@ -692,7 +741,7 @@ en:
aliases:
add_new: Create alias
created_msg: Successfully created a new alias. You can now initiate the move from the old account.
- deleted_msg: Successfully remove the alias. Moving from that account to this one will no longer be possible.
+ deleted_msg: Successfully removed the alias. Moving from that account to this one will no longer be possible.
empty: You have no aliases.
hint_html: If you want to move from another account to this one, here you can create an alias, which is required before you can proceed with moving followers from the old account to this one. This action by itself is harmless and reversible. The account migration is initiated from the old account.
remove: Unlink alias
@@ -707,14 +756,14 @@ en:
guide_link: https://crowdin.com/project/mastodon
guide_link_text: Everyone can contribute.
sensitive_content: Sensitive content
- toot_layout: Toot layout
+ toot_layout: Post layout
application_mailer:
notification_preferences: Change e-mail preferences
salutation: "%{name},"
settings: 'Change e-mail preferences: %{link}'
view: 'View:'
view_profile: View profile
- view_status: View status
+ view_status: View post
applications:
created: Application successfully created
destroyed: Application successfully deleted
@@ -851,7 +900,7 @@ en:
archive_takeout:
date: Date
download: Download your archive
- hint_html: You can request an archive of your toots and uploaded media. The exported data will be in the ActivityPub format, readable by any compliant software. You can request an archive every 7 days.
+ hint_html: You can request an archive of your posts and uploaded media. The exported data will be in the ActivityPub format, readable by any compliant software. You can request an archive every 7 days.
in_progress: Compiling your archive...
request: Request your archive
size: Size
@@ -932,7 +981,7 @@ en:
overwrite: Overwrite
overwrite_long: Replace current records with the new ones
preface: You can import data that you have exported from another server, such as a list of the people you are following or blocking.
- success: Your data was successfully uploaded and will now be processed in due time
+ success: Your data was successfully uploaded and will be processed in due time
types:
blocking: Blocking list
bookmarks: Bookmarks
@@ -966,9 +1015,20 @@ en:
lists:
errors:
limit: You have reached the maximum amount of lists
+ login_activities:
+ authentication_methods:
+ otp: two-factor authentication app
+ password: password
+ sign_in_token: e-mail security code
+ webauthn: security keys
+ description_html: If you see activity that you don't recognize, consider changing your password and enabling two-factor authentication.
+ empty: No authentication history available
+ failed_sign_in_html: Failed sign-in attempt with %{method} from %{ip} (%{browser})
+ successful_sign_in_html: Successful sign-in with %{method} from %{ip} (%{browser})
+ title: Authentication history
media_attachments:
validations:
- images_and_video: Cannot attach a video to a status that already contains images
+ images_and_video: Cannot attach a video to a post that already contains images
not_ready: Cannot attach files that have not finished processing. Try again in a moment!
too_many: Cannot attach more than 4 files
migrations:
@@ -996,7 +1056,7 @@ en:
warning:
backreference_required: The new account must first be configured to back-reference this one
before: 'Before proceeding, please read these notes carefully:'
- cooldown: After moving there is a cooldown period during which you will not be able to move again
+ cooldown: After moving there is a waiting period during which you will not be able to move again
disabled_account: Your current account will not be fully usable afterwards. However, you will have access to data export as well as re-activation.
followers: This action will move all followers from the current account to the new account
only_redirect_html: Alternatively, you can only put up a redirect on your profile.
@@ -1021,8 +1081,8 @@ en:
other: "%{count} new notifications since your last visit \U0001F418"
title: In your absence...
favourite:
- body: 'Your status was favourited by %{name}:'
- subject: "%{name} favourited your status"
+ body: 'Your post was favourited by %{name}:'
+ subject: "%{name} favourited your post"
title: New favourite
follow:
body: "%{name} is now following you!"
@@ -1038,10 +1098,14 @@ en:
body: 'You were mentioned by %{name} in:'
subject: You were mentioned by %{name}
title: New mention
+ poll:
+ subject: A poll by %{name} has ended
reblog:
- body: 'Your status was boosted by %{name}:'
- subject: "%{name} boosted your status"
+ body: 'Your post was boosted by %{name}:'
+ subject: "%{name} boosted your post"
title: New boost
+ status:
+ subject: "%{name} just posted"
notifications:
email_events: Events for e-mail notifications
email_events_hint: 'Select events that you want to receive notifications for:'
@@ -1061,7 +1125,7 @@ en:
code_hint: Enter the code generated by your authenticator app to confirm
description_html: If you enable two-factor authentication using an authenticator app, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
enable: Enable
- instructions_html: "Scan this QR code into Google Authenticator or a similiar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
+ instructions_html: "Scan this QR code into Google Authenticator or a similar TOTP app on your phone. From now on, that app will generate tokens that you will have to enter when logging in."
manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
setup: Set up
wrong_code: The entered code was invalid! Are server time and device time correct?
@@ -1117,16 +1181,16 @@ en:
remote_interaction:
favourite:
proceed: Proceed to favourite
- prompt: 'You want to favourite this toot:'
+ prompt: 'You want to favourite this post:'
reblog:
proceed: Proceed to boost
- prompt: 'You want to boost this toot:'
+ prompt: 'You want to boost this post:'
reply:
proceed: Proceed to reply
- prompt: 'You want to reply to this toot:'
+ prompt: 'You want to reply to this post:'
scheduled_statuses:
- over_daily_limit: You have exceeded the limit of %{limit} scheduled toots for that day
- over_total_limit: You have exceeded the limit of %{limit} scheduled toots
+ over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today
+ over_total_limit: You have exceeded the limit of %{limit} scheduled posts
too_soon: The scheduled date must be in the future
sessions:
activity: Last activity
@@ -1157,7 +1221,7 @@ en:
adobe_air: Adobe Air
android: Android
blackberry: Blackberry
- chrome_os: ChromeOS
+ chrome_os: Chrome OS
firefox_os: Firefox OS
ios: iOS
linux: Linux
@@ -1169,6 +1233,7 @@ en:
revoke: Revoke
revoke_success: Session successfully revoked
title: Sessions
+ view_authentication_history: View authentication history of your account
settings:
account: Account
account_settings: Account settings
@@ -1189,10 +1254,9 @@ en:
preferences: Preferences
profile: Profile
relationships: Follows and followers
+ statuses_cleanup: Automated post deletion
two_factor_authentication: Two-factor Auth
webauthn_authentication: Security keys
- spam_check:
- spam_detected: This is an automated report. Spam has been detected.
statuses:
attached:
audio:
@@ -1211,14 +1275,14 @@ en:
one: 'contained a disallowed hashtag: %{tags}'
other: 'contained the disallowed hashtags: %{tags}'
errors:
- in_reply_not_found: The status you are trying to reply to does not appear to exist.
+ in_reply_not_found: The post you are trying to reply to does not appear to exist.
language_detection: Automatically detect language
open_in_web: Open in web
over_character_limit: character limit of %{max} exceeded
pin_errors:
- limit: You have already pinned the maximum number of toots
- ownership: Someone else's toot cannot be pinned
- private: Non-public toot cannot be pinned
+ limit: You have already pinned the maximum number of posts
+ ownership: Someone else's post cannot be pinned
+ private: Non-public posts cannot be pinned
reblog: A boost cannot be pinned
poll:
total_people:
@@ -1235,14 +1299,49 @@ en:
sign_in_to_participate: Sign in to participate in the conversation
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Direct
private: Followers-only
private_long: Only show to followers
public: Public
public_long: Everyone can see
unlisted: Unlisted
unlisted_long: Everyone can see, but not listed on public timelines
+ statuses_cleanup:
+ enabled: Automatically delete old posts
+ enabled_hint: Automatically deletes your posts once they reach a specified age threshold, unless they match one of the exceptions below
+ exceptions: Exceptions
+ explanation: Because deleting posts is an expensive operation, this is done slowly over time when the server is not otherwise busy. For this reason, your posts may be deleted a while after they reach the age threshold.
+ ignore_favs: Ignore favourites
+ ignore_reblogs: Ignore boosts
+ interaction_exceptions: Exceptions based on interactions
+ interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favourite or boost threshold after having once gone over them.
+ keep_direct: Keep direct messages
+ keep_direct_hint: Doesn't delete any of your direct messages
+ keep_media: Keep posts with media attachments
+ keep_media_hint: Doesn't delete any of your posts that have media attachments
+ keep_pinned: Keep pinned posts
+ keep_pinned_hint: Doesn't delete any of your pinned posts
+ keep_polls: Keep polls
+ keep_polls_hint: Doesn't delete any of your polls
+ keep_self_bookmark: Keep posts you bookmarked
+ keep_self_bookmark_hint: Doesn't delete your own posts if you have bookmarked them
+ keep_self_fav: Keep posts you favourited
+ keep_self_fav_hint: Doesn't delete your own posts if you have favourited them
+ min_age:
+ '1209600': 2 weeks
+ '15778476': 6 months
+ '2629746': 1 month
+ '31556952': 1 year
+ '5259492': 2 months
+ '63113904': 2 years
+ '7889238': 3 months
+ min_age_label: Age threshold
+ min_favs: Keep posts favourited more than
+ min_favs_hint: Doesn't delete any of your posts that has received more than this amount of favourites. Leave blank to delete posts regardless of their number of favourites
+ min_reblogs: Keep posts boosted more than
+ min_reblogs_hint: Doesn't delete any of your posts that has been boosted more than this number of times. Leave blank to delete posts regardless of their number of boosts
stream_entries:
- pinned: Pinned toot
+ pinned: Pinned post
reblogged: boosted
sensitive_content: Sensitive content
tags:
@@ -1368,7 +1467,7 @@ en:
explanation:
disable: You can no longer login to your account or use it in any other way, but your profile and other data remains intact.
sensitive: Your uploaded media files and linked media will be treated as sensitive.
- silence: You can still use your account but only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you.
+ silence: You can still use your account but only people who are already following you will see your posts on this server, and you may be excluded from various public listings. However, others may still manually follow you.
suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed, but we will retain some data to prevent you from evading the suspension.
get_in_touch: You can reply to this e-mail to get in touch with the staff of %{instance}.
review_server_policies: Review server policies
@@ -1390,7 +1489,7 @@ en:
edit_profile_step: You can customize your profile by uploading an avatar, header, changing your display name and more. If you’d like to review new followers before they’re allowed to follow you, you can lock your account.
explanation: Here are some tips to get you started
final_action: Start posting
- final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
+ final_step: 'Start posting! Even without followers your public posts may be seen by others, for example on the local timeline and in hashtags. You may want to introduce yourself on the #introductions hashtag.'
full_handle: Your full handle
full_handle_hint: This is what you would tell your friends so they can message or follow you from another server.
review_preferences_action: Change preferences
@@ -1403,17 +1502,14 @@ en:
tips: Tips
title: Welcome aboard, %{name}!
users:
- blocked_email_provider: This e-mail provider isn't allowed
follow_limit_reached: You cannot follow more than %{limit} people
generic_access_help_html: Trouble accessing your account? You may get in touch with %{email} for assistance
- invalid_email: The e-mail address is invalid
- invalid_email_mx: The e-mail address does not seem to exist
invalid_otp_token: Invalid two-factor code
invalid_sign_in_token: Invalid security code
otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available.
signed_in_as: 'Signed in as:'
- suspicious_sign_in_confirmation: You appear to not have logged in from this device before, and you haven't logged in for a while, so we're sending a security code to your e-mail address to confirm that it's you.
+ suspicious_sign_in_confirmation: You appear to not have logged in from this device before, so we're sending a security code to your e-mail address to confirm that it's you.
verification:
explanation_html: 'You can verify yourself as the owner of the links in your profile metadata. For that, the linked website must contain a link back to your Mastodon profile. The link back must have a rel="me" attribute. The text content of the link does not matter. Here is an example:'
verification: Verification
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 64b7ccfc7..3031acb5a 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -26,6 +26,7 @@ eo:
Ĝi estas uzata por frataraj celoj kaj ĝi ne devus esti blokita krom se vi volas bloki la tutan servilon, tiuokaze vi devus uzi domajnan blokadon.
learn_more: Lerni pli
privacy_policy: Privateca politiko
+ rules: Reguloj de la servilo
see_whats_happening: Vidi kio okazas
server_stats: Servo statuso
source_code: Fontkodo
@@ -71,7 +72,6 @@ eo:
other: Mesaĝoj
posts_tab_heading: Mesaĝoj
posts_with_replies: Mesaĝoj kaj respondoj
- reserved_username: La uzantnomo estas rezervita
roles:
admin: Administranto
bot: Roboto
@@ -136,11 +136,11 @@ eo:
memorialize: Ŝanĝi al memoro
memorialized: Memorita
moderation:
- active: Aktivaj
+ active: Aktiva
all: Ĉio
pending: Pritraktata
- silenced: Silentigitaj
- suspended: Haltigitaj
+ silenced: Silentigita
+ suspended: Haltigita
title: Kontrolado
moderation_notes: Kontrolaj notoj
most_recent_activity: Lasta ago
@@ -173,6 +173,7 @@ eo:
staff: Teamo
user: Uzanto
search: Serĉi
+ search_same_email_domain: Aliaj uzantoj kun la sama retpoŝta domajno
search_same_ip: Aliaj uzantoj kun la sama IP
sensitive: Tikla
sensitized: markita tikla
@@ -222,6 +223,7 @@ eo:
disable_user: Malebligi uzanton
enable_custom_emoji: Ebligi Propran Emoĝion
enable_user: Ebligi uzanton
+ memorialize_account: Memorigu Konton
promote_user: Promocii Uzanton
remove_avatar_user: Forigi profilbildon
reopen_report: Remalfermi signalon
@@ -230,6 +232,8 @@ eo:
sensitive_account: Marki tikla la aŭdovidaĵojn de via konto
silence_account: Silentigi konton
suspend_account: Haltigi konton
+ unassigned_report: Malatribui Raporton
+ unsensitive_account: Malmarku la amaskomunikilojn en via konto kiel sentemaj
unsilence_account: Malsilentigi konton
unsuspend_account: Malhaltigi konton
update_announcement: Ĝisdatigi anoncon
@@ -237,43 +241,33 @@ eo:
update_domain_block: Ĝigdatigi domajnan blokadon
update_status: Ĝisdatigi staton
actions:
- assigned_to_self_report: "%{name} asignis signalon %{target} al si mem"
- change_email_user: "%{name} ŝanĝis retadreson de uzanto %{target}"
- confirm_user: "%{name} konfirmis retadreson de uzanto %{target}"
- create_account_warning: "%{name} sendis averton al %{target}"
- create_announcement: "%{name} kreis novan anoncon %{target}"
- create_custom_emoji: "%{name} alŝutis novan emoĝion %{target}"
- create_domain_allow: "%{name} aldonis domajnon %{target} al la blanka listo"
- create_domain_block: "%{name} blokis domajnon %{target}"
- create_email_domain_block: "%{name} blokis retpoŝtan domajnon %{target}"
- create_ip_block: "%{name} kreis regulon por IP %{target}"
- demote_user: "%{name} degradis uzanton %{target}"
- destroy_announcement: "%{name} forigis anoncon %{target}"
- destroy_custom_emoji: "%{name} neniigis la emoĝion %{target}"
- destroy_domain_allow: "%{name} forigis domajnon %{target} el la blanka listo"
- destroy_domain_block: "%{name} malblokis domajnon %{target}"
- destroy_email_domain_block: "%{name} malblokis retpoŝtan domajnon %{target}"
- destroy_ip_block: "%{name} forigis regulon por IP %{target}"
- destroy_status: "%{name} forigis mesaĝojn de %{target}"
- disable_2fa_user: "%{name} malebligis dufaktoran aŭtentigon por uzanto %{target}"
- disable_custom_emoji: "%{name} malebligis emoĝion %{target}"
- disable_user: "%{name} malebligis ensaluton por uzanto %{target}"
- enable_custom_emoji: "%{name} ebligis emoĝion %{target}"
- enable_user: "%{name} ebligis ensaluton por uzanto %{target}"
- memorialize_account: "%{name} ŝanĝis la konton de %{target} al memora paĝo"
- promote_user: "%{name} plirangigis uzanton %{target}"
- remove_avatar_user: "%{name} forigis profilbildon de %{target}"
- reopen_report: "%{name} remalfermis signalon %{target}"
- reset_password_user: "%{name} restarigis pasvorton de uzanto %{target}"
- resolve_report: "%{name} solvis signalon %{target}"
- silence_account: "%{name} kaŝis la konton de %{target}"
- suspend_account: "%{name} haltigis la konton de %{target}"
- unassigned_report: "%{name} malasignis signalon %{target}"
- unsilence_account: "%{name} malkaŝis la konton de %{target}"
- unsuspend_account: "%{name} malhaltigis la konton de %{target}"
- update_announcement: "%{name} ĝisdatigis anoncon %{target}"
- update_custom_emoji: "%{name} ĝisdatigis emoĝion %{target}"
- update_status: "%{name} ĝisdatigis mesaĝon de %{target}"
+ assigned_to_self_report_html: "%{name} asignis signalon %{target} al si mem"
+ change_email_user_html: "%{name} ŝanĝis retadreson de uzanto %{target}"
+ confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}"
+ create_account_warning_html: "%{name} sendis averton al %{target}"
+ create_announcement_html: "%{name} kreis novan anoncon %{target}"
+ create_custom_emoji_html: "%{name} alŝutis novan emoĝion %{target}"
+ create_domain_allow_html: "%{name} aldonis domajnon %{target} al la blanka listo"
+ create_domain_block_html: "%{name} blokis domajnon %{target}"
+ create_email_domain_block_html: "%{name} blokis retpoŝtan domajnon %{target}"
+ create_ip_block_html: "%{name} kreis regulon por IP %{target}"
+ demote_user_html: "%{name} degradis uzanton %{target}"
+ destroy_announcement_html: "%{name} forigis anoncon %{target}"
+ destroy_custom_emoji_html: "%{name} neniigis la emoĝion %{target}"
+ destroy_domain_allow_html: "%{name} forigis domajnon %{target} el la blanka listo"
+ destroy_domain_block_html: "%{name} malblokis domajnon %{target}"
+ destroy_email_domain_block_html: "%{name} malblokis retpoŝtan domajnon %{target}"
+ destroy_ip_block_html: "%{name} forigis regulon por IP %{target}"
+ destroy_status_html: "%{name} forigis mesaĝojn de %{target}"
+ disable_2fa_user_html: "%{name} malebligis dufaktoran aŭtentigon por uzanto %{target}"
+ disable_custom_emoji_html: "%{name} malebligis emoĝion %{target}"
+ disable_user_html: "%{name} malebligis ensaluton por uzanto %{target}"
+ enable_custom_emoji_html: "%{name} ebligis emoĝion %{target}"
+ enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}"
+ memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo"
+ promote_user_html: "%{name} plirangigis uzanton %{target}"
+ remove_avatar_user_html: "%{name} forigis profilbildon de %{target}"
+ reopen_report_html: "%{name} remalfermis signalon %{target}"
deleted_status: "(forigita mesaĝo)"
empty: Neniu protokolo trovita.
filter_by_action: Filtri per ago
@@ -288,10 +282,12 @@ eo:
new:
create: Krei anoncon
title: Nova anonco
+ publish: Publikigi
published_msg: Anonco sukcese publikigita!
scheduled_for: Planigita je %{time}
scheduled_msg: Anonco planigita por publikigo!
title: Anoncoj
+ unpublish: Malpublikigi
unpublished_msg: Anonco sukcese malpublikigita!
updated_msg: Anonco sukcese ĝisdatigis!
custom_emojis:
@@ -336,7 +332,6 @@ eo:
feature_profile_directory: Profilujo
feature_registrations: Registriĝoj
feature_relay: Federacia ripetilo
- feature_spam_check: Kontraŭ-spamo
feature_timeline_preview: Templinio antaŭvidi
features: Funkcioj
hidden_service: Federacio kun kaŝitaj servoj
@@ -376,6 +371,7 @@ eo:
silence: Kaŝi
suspend: Haltigi
title: Nova domajna blokado
+ obfuscate: Malklara domajna nomo
private_comment: Privata komento
public_comment: Publika komento
reject_media: Malakcepti aŭdovidajn dosierojn
@@ -410,8 +406,16 @@ eo:
create: Aldoni domajnon
title: Nova blokado de retadresa domajno
title: Nigra listo de retadresaj domajnoj
+ follow_recommendations:
+ language: Por la lingvo
+ status: Stato
+ suppress: Subpremita sekvu rekomendojn
+ suppressed: Subpremita
+ title: Rekomendoj de sekvado
instances:
by_domain: Domajno
+ delivery:
+ warning: Averto
delivery_available: Liverado disponeblas
empty: Neniuj domajnoj trovitaj.
known_accounts:
@@ -490,6 +494,8 @@ eo:
comment:
none: Nenio
created_at: Signalita
+ forwarded: Plusendita
+ forwarded_to: Plusendita al %{domain}
mark_as_resolved: Marki solvita
mark_as_unresolved: Marki nesolvita
notes:
@@ -509,6 +515,11 @@ eo:
unassign: Malasigni
unresolved: Nesolvitaj
updated_at: Ĝisdatigita
+ rules:
+ add_new: Aldoni regulon
+ delete: Forigi
+ edit: Redakti la regulon
+ title: Reguloj de la servilo
settings:
activity_api_enabled:
desc_html: Sumo de lokaj mesaĝoj, aktivaj uzantoj, kaj novaj registriĝoj laŭsemajne
@@ -529,8 +540,6 @@ eo:
users: Al ensalutintaj lokaj uzantoj
domain_blocks_rationale:
title: Montri la kialon
- enable_bootstrap_timeline_accounts:
- title: Ebligi dekomencajn sekvantojn por novaj uzantoj
hero:
desc_html: Montrata en la ĉefpaĝo. Almenaŭ 600x100px rekomendita. Kiam ne agordita, la bildeto de la servilo estos uzata
title: Kapbildo
@@ -581,8 +590,6 @@ eo:
desc_html: Vi povas skribi vian propran privatecan politikon, viajn uzkondiĉojn aŭ aliajn leĝaĵojn. Vi povas uzi HTML-etikedojn
title: Propraj uzkondiĉoj
site_title: Nomo de la servilo
- spam_check_enabled:
- title: Kontraŭ-spamo aŭtomatige
thumbnail:
desc_html: Uzata por antaŭvidoj per OpenGraph kaj per API. 1200x630px rekomendita
title: Bildeto de la servilo
@@ -593,6 +600,8 @@ eo:
trends:
desc_html: Publike montri antaŭe kontrolitajn kradvortojn, kiuj nune furoras
title: Furoraj kradvortoj
+ site_uploads:
+ delete: Forigi elŝutitan dosieron
statuses:
back_to_account: Reveni al konta paĝo
batch:
@@ -607,13 +616,16 @@ eo:
no_status_selected: Neniu mesaĝo estis ŝanĝita ĉar neniu estis elektita
title: Mesaĝoj de la konto
with_media: Kun aŭdovidaĵoj
+ system_checks:
+ database_schema_check:
+ message_html: Estas pritraktataj datumbazaj migradoj. Bonvolu ekzekuti ilin por certigi, ke la apliko kondutas kiel atendite
+ rules_check:
+ action: Administri servilajn regulojn
+ message_html: Vi ne difinis iujn servilajn regulojn.
tags:
accounts_today: Unikaj uzoj hodiaŭ
accounts_week: Unikaj uzoj je ĉi tiu semajno
breakdown: Disigo de la hodiaŭa uzo per fonto
- context: Kunteksto
- directory: En la adresaro
- in_directory: "%{count} en adresaro"
last_active: Laste aktiva
most_popular: La plej populara
most_recent: Plej lasta
@@ -646,6 +658,7 @@ eo:
add_new: Krei alinomon
created_msg: Kreis novan alinomon sukcese. Vi povas inici la transloki el la malnovan konton nun.
deleted_msg: Forigis la alinomon sukcese. Transloki el tiu konto al ĉi tiu ne plu eblos.
+ empty: Vi havas neniun kaŝnomon.
remove: Malligili alinomon
appearance:
advanced_web_interface: Altnivela retpaĝa interfaco
@@ -685,8 +698,10 @@ eo:
prefix_invited_by_user: "@%{name} invitigi vin aligiĝi ĉi tiu servilo de Mastodon!"
prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ!
didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi?
+ dont_have_your_security_key: Ne havas vi vian sekurecan ŝlosilon?
forgot_password: Pasvorto forgesita?
invalid_reset_password_token: Ĵetono por restarigi pasvorton nevalida aŭ eksvalida. Bonvolu peti novan.
+ link_to_webauth: Uzi vian sekurecan ŝlosilon
login: Ensaluti
logout: Elsaluti
migrate_account: Movi al alia konto
@@ -708,6 +723,7 @@ eo:
functional: Via konto estas plene funkcianta.
too_fast: Formularo sendita tro rapide, klopodu denove.
trouble_logging_in: Ĝeni ensaluti?
+ use_security_key: Uzi sekurecan ŝlosilon
authorize_follow:
already_following: Vi jam sekvas tiun konton
already_requested: Vi jam sendis peton de sekvado al ĉi tiu konto
@@ -731,6 +747,7 @@ eo:
date:
formats:
default: "%Y-%m-%d "
+ with_month_name: "%e-a de %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -816,7 +833,7 @@ eo:
invalid_irreversible: Nemalfarebla filtrado funkcias nur por hejma aŭ sciiga kuntekstoj
index:
delete: Forigi
- empty: Vi ne havas filtriloj.
+ empty: Vi havas neniun filtrilon.
title: Filtriloj
new:
title: Aldoni novan filtrilon
@@ -956,6 +973,8 @@ eo:
body: "%{name} diskonigis vian mesaĝon:"
subject: "%{name} diskonigis vian mesaĝon"
title: Nova diskonigo
+ status:
+ subject: "%{name} ĵus afiŝita"
notifications:
email_events: Eventoj por retpoŝtaj sciigoj
email_events_hint: 'Elekti la eventojn pri kioj vi volas ricevi sciigojn:'
@@ -971,7 +990,12 @@ eo:
thousand: m
trillion: Dn
otp_authentication:
+ code_hint: Enmetu la kodon kreitan de via aŭtentiga aplikaĵo por konfirmi
enable: Ebligi
+ instructions_html: "Skanu ĉi tiun QR-kodon per Google Authenticator aŭ per simila aplikaĵo en via poŝtelefono. De tiam, la aplikaĵo kreos nombrojn, kiujn vi devos enmeti."
+ manual_instructions: 'Se vi ne povas skani la QR-kodon kaj bezonas enmeti ĝin mane, jen la tut-teksta sekreto:'
+ setup: Agordi
+ wrong_code: La enmetita kodo estis nevalida! Ĉu la servila tempo kaj la aparata tempo ĝustas?
pagination:
newer: Pli nova
next: Sekva
@@ -1000,7 +1024,7 @@ eo:
relationships:
activity: Konta aktiveco
dormant: Dormanta
- follow_selected_followers: Forigu selektitajn sekvantojn
+ follow_selected_followers: Sekvi selektitajn sekvantojn
followers: Sekvantoj
following: Sekvatoj
invited: Invitita
@@ -1097,6 +1121,7 @@ eo:
profile: Profilo
relationships: Sekvatoj kaj sekvantoj
two_factor_authentication: Dufaktora aŭtentigo
+ webauthn_authentication: Sekurecaj ŝlosiloj
statuses:
attached:
audio:
@@ -1137,6 +1162,7 @@ eo:
sign_in_to_participate: Ensaluti por partopreni en la konversacio
title: "%{name}: “%{quote}”"
visibilities:
+ direct: Rekta
private: Montri nur al sekvantoj
private_long: Montri nur al sekvantoj
public: Publika
@@ -1168,9 +1194,11 @@ eo:
enabled_success: Dufaktora aŭtentigo sukcese ebligita
generate_recovery_codes: Krei realirajn kodojn
lost_recovery_codes: Realiraj kodoj permesas rehavi aliron al via konto se vi perdis vian telefonon. Se vi perdis viajn realirajn kodojn, vi povas rekrei ilin ĉi tie. Viaj malnovaj realiraj kodoj iĝos eksvalidaj.
+ methods: Metodoj de dufaktora aŭtentigo
recovery_codes: Realiraj kodoj
recovery_codes_regenerated: Realiraj kodoj sukcese rekreitaj
recovery_instructions_html: Se vi perdas aliron al via telefono, vi povas uzi unu el la subaj realiraj kodoj por rehavi aliron al via konto. Konservu realirajn kodojn sekure. Ekzemple, vi povas printi ilin kaj konservi ilin kun aliaj gravaj dokumentoj.
+ webauthn: Sekurecaj ŝlosiloj
user_mailer:
backup_ready:
explanation: Vi petis kompletan arkivon de via Mastodon-konto. Ĝi nun pretas por elŝutado!
@@ -1212,8 +1240,8 @@ eo:
title: Bonvenon, %{name}!
users:
follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j)
- invalid_email: La retadreso estas nevalida
invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo
+ invalid_sign_in_token: Nevalida sekureca kodo
otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email}
seamless_external_login: Vi estas ensalutinta per ekstera servo, do pasvortaj kaj retadresaj agordoj ne estas disponeblaj.
signed_in_as: 'Ensalutinta kiel:'
@@ -1221,5 +1249,12 @@ eo:
explanation_html: 'Vi povas pruvi, ke vi estas la posedanto de la ligiloj en viaj profilaj metadatumoj. Por fari tion, la alligita retejo devas enhavi ligilon reen al via Mastodon-profilo. La religilo devas havi la atributon rel="me". Ne gravas la teksta enhavo de la religilo. Jen ekzemplo:'
verification: Kontrolo
webauthn_credentials:
+ add: Aldoni novan sekurecan ŝlosilon
+ create:
+ success: Via sekureca ŝlosilo estis sukcese aldonita.
delete: Forigi
+ delete_confirmation: Ĉu vi certas, ke vi volas forigi ĉi tiun sekurecan ŝlosilon?
+ destroy:
+ success: Via sekureca ŝlosilo estis sukcese forigita.
+ invalid_credential: Nevalida sekureca ŝlosilo
registered_on: Registrigita je %{date}
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 32e079074..019887bb8 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -1,7 +1,7 @@
---
es-AR:
about:
- about_hashtag_html: Estos son toots públicos etiquetados con #%{hashtag}. Si tenés una cuenta en cualquier parte del fediverso, podés interactuar con ellos.
+ about_hashtag_html: Estos son mensajes públicos etiquetados con #%{hashtag}. Si tenés una cuenta en cualquier parte del fediverso, podés interactuar con ellos.
about_mastodon_html: 'La red social del futuro: ¡sin publicidad, sin vigilancia corporativa, con diseño ético y descentralización! ¡Con Mastodon vos sos el dueño de tus datos!'
about_this: Acerca de Mastodon
active_count_after: activo
@@ -11,12 +11,12 @@ es-AR:
apps: Aplicaciones móviles
apps_platforms: Usá Mastodon desde iOS, Android y otras plataformas
browse_directory: Explorá el directorio de perfiles y filtrá por intereses
- browse_local_posts: Explorá un flujo en tiempo real de toots públicos en este servidor
- browse_public_posts: Explorá un flujo en tiempo real de toots públicos en Mastodon
+ browse_local_posts: Explorá un flujo en tiempo real de mensajes públicos en este servidor
+ browse_public_posts: Explorá un flujo en tiempo real de mensajes públicos en Mastodon
contact: Contacto
contact_missing: No establecido
contact_unavailable: No disponible
- discover_users: Descubrir usuarios
+ discover_users: Descubrí usuarios
documentation: Documentación
federation_hint_html: Con una cuenta en %{instance} vas a poder seguir a cuentas de cualquier servidor de Mastodon y más allá.
get_apps: Probá una aplicación móvil
@@ -26,22 +26,24 @@ es-AR:
Se usa para fines federativos y no debe ser bloqueado a menos que quieras bloquear toda la instancia, en cuyo caso deberías usar un bloqueo de dominio.
learn_more: Aprendé más
privacy_policy: Política de privacidad
+ rules: Reglas del servidor
+ rules_html: 'Abajo hay un resumen de las reglas que tenés que seguir si querés tener una cuenta en este servidor de Mastodon:'
see_whats_happening: Esto es lo que está pasando ahora
server_stats: 'Estadísticas del servidor:'
source_code: Código fuente
status_count_after:
- one: toot
- other: toots
+ one: mensaje
+ other: mensajes
status_count_before: Que enviaron
tagline: Seguí a tus amigos y descubrí nueva gente
terms: Términos del servicio
unavailable_content: Servidores moderados
unavailable_content_description:
domain: Servidor
- reason: Razón
+ reason: Motivo
rejecting_media: 'Los archivos de medios de este servidor no van a ser procesados y no se mostrarán miniaturas, lo que requiere un clic manual hacia el archivo original:'
rejecting_media_title: Medios filtrados
- silenced: 'Los toots de estos servidores se ocultarán en las líneas temporales y conversaciones públicas, y no se generarán notificaciones de las interacciones de sus usuarios, a menos que los estés siguiendo:'
+ silenced: 'Los mensajes de estos servidores se ocultarán en las líneas temporales y conversaciones públicas, y no se generarán notificaciones de las interacciones de sus usuarios, a menos que los estés siguiendo:'
silenced_title: Servidores silenciados
suspended: 'No se procesarán, almacenarán o intercambiarán datos de estos servidores, haciendo imposible cualquier interacción o comunicación con los usuarios de estos servidores:'
suspended_title: Servidores suspendidos
@@ -53,7 +55,7 @@ es-AR:
what_is_mastodon: "¿Qué es Mastodon?"
accounts:
choices_html: 'Recomendados de %{name}:'
- endorsements_hint: Podés recomendar a cuentas que seguís desde la interface web, y van a aparecer acá.
+ endorsements_hint: Podés recomendar, desde la interface web, a cuentas que seguís, y van a aparecer acá.
featured_tags_hint: Podés destacar etiquetas específicas que se mostrarán acá.
follow: Seguir
followers:
@@ -74,11 +76,10 @@ es-AR:
pin_errors:
following: Ya tenés que estar siguiendo a la cuenta que querés recomendar
posts:
- one: Toot
- other: Toots
- posts_tab_heading: Toots
- posts_with_replies: Toots y respuestas
- reserved_username: El nombre de usuario está reservado
+ one: Mensaje
+ other: Mensajes
+ posts_tab_heading: Mensajes
+ posts_with_replies: Mensajes y respuestas
roles:
admin: Administrador
bot: Bot
@@ -129,7 +130,7 @@ es-AR:
enabled: Habilitada
enabled_msg: Se descongeló exitosamente la cuenta de %{username}
followers: Seguidores
- follows: Seguidores
+ follows: Siguiendo
header: Cabecera
inbox_url: Dirección web de la bandeja de entrada
invite_request_text: Motivos para unirte
@@ -147,15 +148,15 @@ es-AR:
memorialized: Cuenta conmemorativa
memorialized_msg: "%{username} se convirtió exitosamente en una cuenta conmemorativa"
moderation:
- active: Activa
+ active: Activas
all: Todas
- pending: Pendiente
+ pending: Pendientes
silenced: Silenciadas
suspended: Suspendidas
title: Moderación
moderation_notes: Notas de moderación
most_recent_activity: Actividad más reciente
- most_recent_ip: Direcciones IP más recientes
+ most_recent_ip: Dirección IP más reciente
no_account_selected: No se cambió ninguna cuenta ya que ninguna fue seleccionada
no_limits_imposed: Sin límites impuestos
not_subscribed: No suscripto
@@ -165,15 +166,15 @@ es-AR:
protocol: Protocolo
public: Pública
push_subscription_expires: La suscripción push vence
- redownload: Recargar perfil
- redownloaded_msg: Se actualizó exitosamente el perfil de %{username} desde el origen
+ redownload: Refrescar perfil
+ redownloaded_msg: Se refrescó exitosamente el perfil de %{username} desde el origen
reject: Rechazar
reject_all: Rechazar todas
rejected_msg: Se rechazó exitosamente la solicitud de registro de %{username}
remove_avatar: Quitar avatar
remove_header: Quitar cabecera
removed_avatar_msg: Se quitó exitosamente el avatar de %{username}
- removed_header_msg: Se quitó exitosamente el encabezado de %{username}
+ removed_header_msg: Se quitó exitosamente la cabecera de %{username}
resend_confirmation:
already_confirmed: Este usuario ya está confirmado
send: Reenviar correo electrónico de confirmación
@@ -195,10 +196,10 @@ es-AR:
shared_inbox_url: Dirección web de la bandeja de entrada compartida
show:
created_reports: Denuncias hechas
- targeted_reports: Denunciado por otros
+ targeted_reports: Denunciada por otros
silence: Limitar
silenced: Limitadas
- statuses: Toots
+ statuses: Mensajes
subscribe: Suscribirse
suspended: Suspendidas
suspension_irreversible: Se eliminaron irreversiblemente los datos de esta cuenta. Podés dejar de suspenderla para hacerla utilizable, pero no se recuperarán los datos que tenía anteriormente.
@@ -229,6 +230,7 @@ es-AR:
create_domain_block: Crear bloqueo de dominio
create_email_domain_block: Crear bloqueo de dominio de correo electrónico
create_ip_block: Crear regla de dirección IP
+ create_unavailable_domain: Crear dominio no disponible
demote_user: Descender usuario
destroy_announcement: Eliminar anuncio
destroy_custom_emoji: Eliminar emoji personalizado
@@ -236,7 +238,8 @@ es-AR:
destroy_domain_block: Eliminar bloqueo de dominio
destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico
destroy_ip_block: Eliminar regla de dirección IP
- destroy_status: Eliminar toot
+ destroy_status: Eliminar mensaje
+ destroy_unavailable_domain: Eliminar dominio no disponible
disable_2fa_user: Deshabilitar 2FA
disable_custom_emoji: Deshabilitar emoji personalizado
disable_user: Deshabilitar usuario
@@ -258,49 +261,51 @@ es-AR:
update_announcement: Actualizar anuncio
update_custom_emoji: Actualizar emoji personalizado
update_domain_block: Actualizar bloque de dominio
- update_status: Actualizar toot
+ update_status: Actualizar mensaje
actions:
- assigned_to_self_report: "%{name} se asignó la denuncia %{target} a sí"
- change_email_user: "%{name} cambió la dirección de correo electrónico del usuario %{target}"
- confirm_user: "%{name} confirmó la dirección de correo del usuario %{target}"
- create_account_warning: "%{name} envió una advertencia a %{target}"
- create_announcement: "%{name} creó el nuevo anuncio %{target}"
- create_custom_emoji: "%{name} subió nuevo emoji %{target}"
- create_domain_allow: "%{name} permitió la federación con el dominio %{target}"
- create_domain_block: "%{name} bloqueó el dominio %{target}"
- create_email_domain_block: "%{name} bloqueó el dominio de correo electrónico %{target}"
- create_ip_block: "%{name} creó la regla para la dirección IP %{target}"
- demote_user: "%{name} bajó de nivel al usuario %{target}"
- destroy_announcement: "%{name} eliminó el anuncio %{target}"
- destroy_custom_emoji: "%{name} destruyó el emoji %{target}"
- destroy_domain_allow: "%{name} no permitió la federación con el dominio %{target}"
- destroy_domain_block: "%{name} desbloqueó el dominio %{target}"
- destroy_email_domain_block: "%{name} desbloqueó el dominio de correo electrónico %{target}"
- destroy_ip_block: "%{name} eliminó la regla para la dirección IP %{target}"
- destroy_status: "%{name} eliminó el toot de %{target}"
- disable_2fa_user: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}"
- disable_custom_emoji: "%{name} deshabilitó el emoji %{target}"
- disable_user: "%{name} deshabilitó el inicio de sesión para el usuario %{target}"
- enable_custom_emoji: "%{name} habilitó el emoji %{target}"
- enable_user: "%{name} habilitó el inicio de sesión para el usuario %{target}"
- memorialize_account: "%{name} convirtió la cuenta de %{target} en una cuenta conmemorativa"
- promote_user: "%{name} promovió al usuario %{target}"
- remove_avatar_user: "%{name} quitó el avatar de %{target}"
- reopen_report: "%{name} reabrió la denuncia %{target}"
- reset_password_user: "%{name} cambió la contraseña del usuario %{target}"
- resolve_report: "%{name} resolvió la denuncia %{target}"
- sensitive_account: "%{name} marcó los medios de %{target} como sensibles"
- silence_account: "%{name} silenció la cuenta de %{target}"
- suspend_account: "%{name} suspendió la cuenta de %{target}"
- unassigned_report: "%{name} desasignó la denuncia %{target}"
- unsensitive_account: "%{name} desmarcó los medios de %{target} como sensibles"
- unsilence_account: "%{name} quitó el silenciado de la cuenta de %{target}"
- unsuspend_account: "%{name} quitó la suspensión de la cuenta de %{target}"
- update_announcement: "%{name} actualizó el anuncio %{target}"
- update_custom_emoji: "%{name} actualizó el emoji %{target}"
- update_domain_block: "%{name} actualizó el bloqueo de dominio para %{target}"
- update_status: "%{name} actualizó el toot de %{target}"
- deleted_status: "[toot eliminado]"
+ assigned_to_self_report_html: "%{name} se asignó la denuncia %{target} a sí"
+ change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}"
+ confirm_user_html: "%{name} confirmó la dirección de correo del usuario %{target}"
+ create_account_warning_html: "%{name} envió una advertencia a %{target}"
+ create_announcement_html: "%{name} creó el nuevo anuncio %{target}"
+ create_custom_emoji_html: "%{name} subió nuevo emoji %{target}"
+ create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}"
+ create_domain_block_html: "%{name} bloqueó el dominio %{target}"
+ create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}"
+ create_ip_block_html: "%{name} creó la regla para la dirección IP %{target}"
+ create_unavailable_domain_html: "%{name} detuvo la entrega al dominio %{target}"
+ demote_user_html: "%{name} bajó de nivel al usuario %{target}"
+ destroy_announcement_html: "%{name} eliminó el anuncio %{target}"
+ destroy_custom_emoji_html: "%{name} destruyó el emoji %{target}"
+ destroy_domain_allow_html: "%{name} no permitió la federación con el dominio %{target}"
+ destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}"
+ destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}"
+ destroy_ip_block_html: "%{name} eliminó la regla para la dirección IP %{target}"
+ destroy_status_html: "%{name} eliminó el mensaje de %{target}"
+ destroy_unavailable_domain_html: "%{name} reanudó la entrega al dominio %{target}"
+ disable_2fa_user_html: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}"
+ disable_custom_emoji_html: "%{name} deshabilitó el emoji %{target}"
+ disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}"
+ enable_custom_emoji_html: "%{name} habilitó el emoji %{target}"
+ enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}"
+ memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una cuenta conmemorativa"
+ promote_user_html: "%{name} promovió al usuario %{target}"
+ remove_avatar_user_html: "%{name} quitó el avatar de %{target}"
+ reopen_report_html: "%{name} reabrió la denuncia %{target}"
+ reset_password_user_html: "%{name} cambió la contraseña del usuario %{target}"
+ resolve_report_html: "%{name} resolvió la denuncia %{target}"
+ sensitive_account_html: "%{name} marcó los medios de %{target} como sensibles"
+ silence_account_html: "%{name} silenció la cuenta de %{target}"
+ suspend_account_html: "%{name} suspendió la cuenta de %{target}"
+ unassigned_report_html: "%{name} desasignó la denuncia %{target}"
+ unsensitive_account_html: "%{name} desmarcó los medios de %{target} como sensibles"
+ unsilence_account_html: "%{name} quitó el silenciado de la cuenta de %{target}"
+ unsuspend_account_html: "%{name} quitó la suspensión de la cuenta de %{target}"
+ update_announcement_html: "%{name} actualizó el anuncio %{target}"
+ update_custom_emoji_html: "%{name} actualizó el emoji %{target}"
+ update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}"
+ update_status_html: "%{name} actualizó el mensaje de %{target}"
+ deleted_status: "[mensaje eliminado]"
empty: No se encontraron registros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuario
@@ -314,10 +319,12 @@ es-AR:
new:
create: Crear anuncio
title: Nuevo anuncio
+ publish: Publicar
published_msg: "¡Anuncio publicado exitosamente!"
scheduled_for: Programado para %{time}
scheduled_msg: "¡Anuncio programado para su publicación!"
title: Anuncios
+ unpublish: Eliminar publicación
unpublished_msg: "¡Se dejó de publicar el anuncio exitosamente!"
updated_msg: "¡Anuncio actualizado exitosamente!"
custom_emojis:
@@ -362,7 +369,6 @@ es-AR:
feature_profile_directory: Directorio de perfiles
feature_registrations: Registros
feature_relay: Relé de federación
- feature_spam_check: Anti-spam
feature_timeline_preview: Previsualización de la línea temporal
features: Funciones
hidden_service: Federación con servicios ocultos
@@ -395,15 +401,15 @@ es-AR:
existing_domain_block_html: Ya le aplicaste límites más estrictos a %{name}, por lo que primero necesitás desbloquearlo.
new:
create: Crear bloqueo
- hint: El bloqueo de dominio no va a prevenir la creación de toots de cuenta en la base de datos, pero se aplicarán métodos específicos de moderación en esas cuentas, retroactiva y automáticamente.
+ hint: El bloqueo de dominio no va a prevenir la creación de mensajes de cuenta en la base de datos, pero se aplicarán métodos específicos de moderación en esas cuentas, retroactiva y automáticamente.
severity:
- desc_html: "Silenciar hará que los toots de la cuenta sean invisibles a quienes no estén siguiendo esa cuenta. Suspender quitará todo el contenido, archivos de medio y datos de perfil de la cuenta. Usá Ninguno si simplemente querés rechazar archivos de medios."
+ desc_html: "Silenciar hará que los mensajes de la cuenta sean invisibles a quienes no estén siguiendo esa cuenta. Suspender quitará todo el contenido, archivos de medio y datos de perfil de la cuenta. Usá Ninguno si simplemente querés rechazar archivos de medios."
noop: Ninguno
silence: Silenciar
suspend: Suspender
title: Nuevo bloqueo de dominio
obfuscate: Obfuscar nombre de dominio
- obfuscate_hint: Obfusca parcialmente el nombre de dominio en la lista si el anuncio de la lista de limitaciones de dominio está habilitado
+ obfuscate_hint: Obfusca parcialmente el nombre de dominio en la lista, si el anuncio de la lista de limitaciones de dominio está habilitado
private_comment: Comentario privado
private_comment_hint: Comentario sobre la limitación de este dominio, para uso interno de los moderadores.
public_comment: Comentario público
@@ -440,9 +446,34 @@ es-AR:
create: Agregar dominio
title: Bloquear nuevo dominio de correo electrónico
title: Dominios bloqueados de correo electrónico
+ follow_recommendations:
+ description_html: "Las recomendaciones de cuentas para seguir ayudan a los nuevos usuarios a encontrar rápidamente contenido interesante. Cuando un usuario no ha interactuado con otros lo suficiente como para formar recomendaciones personalizadas de seguimiento, se recomiendan estas cuentas, en su lugar. Se recalculan diariamente a partir de una mezcla de cuentas con las interacciones más recientes y el mayor número de seguidores para un idioma determinado."
+ language: Por idioma
+ status: Estado
+ suppress: Eliminar recomendación de cuentas para seguir
+ suppressed: Eliminado
+ title: Recomendaciones de cuentas para seguir
+ unsuppress: Restablecer recomendaciones de cuentas para seguir
instances:
+ back_to_all: Todos
+ back_to_limited: Limitados
+ back_to_warning: Advertencia
by_domain: Dominio
+ delivery:
+ all: Todos
+ clear: Limpiar errores de entrega
+ restart: Reiniciar entrega
+ stop: Detener entrega
+ title: Entrega
+ unavailable: No disponible
+ unavailable_message: Entrega no disponible
+ warning: Advertencia
+ warning_message:
+ one: Falla de entrega %{count} día
+ other: Falla de entrega %{count} días
delivery_available: La entrega está disponible
+ delivery_error_days: Días de error de entrega
+ delivery_error_hint: Si la entrega no es posible durante %{count} días, se marcará automáticamente como no entregable.
empty: No se encontraron dominios.
known_accounts:
one: "%{count} cuenta conocida"
@@ -457,7 +488,7 @@ es-AR:
total_blocked_by_us: Bloqueada por nosotros
total_followed_by_them: Seguidas por ellos
total_followed_by_us: Seguidas por nosotros
- total_reported: Denuncias sobre ellos
+ total_reported: Denuncias sobre ellas
total_storage: Adjuntos
invites:
deactivate_all: Desactivar todas
@@ -489,11 +520,11 @@ es-AR:
relays:
add_new: Agregar nuevo relé
delete: Eliminar
- description_html: Un relé de federación es un servidor intermedio que intercambia grandes volúmenes de toots públicos entre servidores que se suscriben y publican en él. Puede ayudar a servidores chicos y medianos a descubrir contenido del fediverso, que de otra manera requeriría que los usuarios locales siguiesen manualmente a cuentas de servidores remotos.
+ description_html: Un relé de federación es un servidor intermedio que intercambia grandes volúmenes de mensajes públicos entre servidores que se suscriben y publican en él. Puede ayudar a servidores chicos y medianos a descubrir contenido del fediverso, que de otra manera requeriría que los usuarios locales siguiesen manualmente a cuentas de servidores remotos.
disable: Deshabilitar
disabled: Deshabilitado
enable: Habilitar
- enable_hint: Una vez habilitado, tu servidor se suscribirá a todos los toots públicos desde este relé, y comenzará a enviar los toots públicos de este servidor al relé.
+ enable_hint: Una vez habilitado, tu servidor se suscribirá a todos los mensajes públicos desde este relé, y comenzará a enviar los mensajes públicos de este servidor al relé.
enabled: Habilitado
inbox_url: Dirección web del relé
pending: Esperando aprobación del relé
@@ -541,14 +572,21 @@ es-AR:
title: Denuncias
unassign: Desasignar
unresolved: No resueltas
- updated_at: Actualizada
+ updated_at: Actualizadas
+ rules:
+ add_new: Agregar regla
+ delete: Eliminar
+ description_html: Aunque la mayoría afirma haber leído y aceptado los términos del servicio, normalmente la gente no los revisa hasta después de que surge un problema. Hacé que sea más fácil ver las reglas de tu servidor, de un vistazo, disponiéndolas en una lista por puntos. Tratá de hacer cada regla corta y sencilla, pero no de dividirlas en muchos temas individuales.
+ edit: Editar regla
+ empty: Aún no se han definido las reglas del servidor.
+ title: Reglas del servidor
settings:
activity_api_enabled:
- desc_html: Conteos de toots publicados localmente, usuarios activos y nuevos registros en tandas semanales
- title: Publicar estadísticas agregadas sobre la actividad del usuario
+ desc_html: Conteos de mensajes publicados localmente, usuarios activos y nuevos registros en tandas semanales
+ title: Publicar estadísticas agregadas sobre la actividad del usuario en la API
bootstrap_timeline_accounts:
- desc_html: Separar múltiples nombres de usuario con coma. Sólo funcionarán las cuentas locales y desbloqueadas. Predeterminadamente, cuando está vacío todos los administradores locales.
- title: Seguimientos predeterminados para usuarios nuevos
+ desc_html: Separar múltiples nombres de usuario con coma. Sólo funcionarán las cuentas locales y desbloqueadas. Predeterminadamente, cuando está vacío se trata de todos los administradores locales.
+ title: Recomendar estas cuentas a usuarios nuevos
contact_information:
email: Correo electrónico de negocios
username: Nombre de usuario de contacto
@@ -565,9 +603,6 @@ es-AR:
users: A usuarios locales con sesiones abiertas
domain_blocks_rationale:
title: Mostrar razonamiento
- enable_bootstrap_timeline_accounts:
- desc_html: Hacer que los nuevos usuarios sigan automáticamente las cuentas configuradas para que su línea temporal principal no comience vacía
- title: Habilitar seguimientos predeterminados para nuevas cuentas
hero:
desc_html: Mostrado en la página principal. Se recomienda un tamaño mínimo de 600x100 píxeles. Predeterminadamente se establece a la miniatura del servidor
title: Imagen de portada
@@ -576,7 +611,7 @@ es-AR:
title: Imagen de la mascota
peers_api_enabled:
desc_html: Nombres de dominio que este servidor encontró en el fediverso
- title: Publicar lista de servidores descubiertos
+ title: Publicar lista de servidores descubiertos en la API
preview_sensitive_media:
desc_html: Las previsualizaciones de enlaces en otros sitios web mostrarán una miniatura incluso si el medio está marcado como contenido sensible
title: Mostrar medios sensibles en previsualizaciones de OpenGraph
@@ -615,15 +650,12 @@ es-AR:
desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que definen tu servidor. Podés usar etiquets HTML
title: Información extendida personalizada
site_short_description:
- desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo.
+ desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe qué es Mastodon y qué hace especial a este servidor en un solo párrafo.
title: Descripción corta del servidor
site_terms:
- desc_html: Podés escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Podés usar etiquetas HTML
- title: Términos de servicio personalizados
+ desc_html: Podés escribir tus propias políticas de privacidad, términos del servicio u otras cuestiones legales. Podés usar etiquetas HTML
+ title: Términos del servicio personalizados
site_title: Nombre del servidor
- spam_check_enabled:
- desc_html: Mastodon puede denunciar automáticamente cuentas que envían mensajes no solicitados de forma repetida. Podrían haber falsos positivos.
- title: Automatización antispam
thumbnail:
desc_html: Usado para previsualizaciones vía OpenGraph y APIs. Se recomienda 1200x630 píxeles
title: Miniatura del servidor
@@ -651,36 +683,42 @@ es-AR:
media:
title: Medios
no_media: Sin medios
- no_status_selected: No se cambió ningún toot ya que ninguno fue seleccionado
- title: Toots de la cuenta
+ no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado
+ title: Mensajes de la cuenta
with_media: Con medios
+ system_checks:
+ database_schema_check:
+ message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecutalas para asegurarte de que la aplicación funciona según lo esperado
+ rules_check:
+ action: Administrar reglas del servidor
+ message_html: No definiste ninguna regla del servidor.
+ sidekiq_process_check:
+ message_html: No hay ningún proceso Sidekiq en ejecución para la/s cola/s %{value}. Por favor, revisá tu configuración de Sidekiq
tags:
accounts_today: Usos únicos de hoy
accounts_week: Usos únicos esta semana
breakdown: Desglose del consumo de hoy por fuentes
- context: Contexto
- directory: En el directorio
- in_directory: "%{count} en el directorio"
- last_active: Última actividad
+ last_active: Usadas recientemente
most_popular: Lo más popular
- most_recent: Lo más reciente
+ most_recent: Creadas recientemente
name: Etiqueta
review: Estado de revisión
reviewed: Revisado
title: Etiquetas
trending_right_now: En tendencia ahora mismo
- unique_uses_today: "%{count} toots hoy"
- unreviewed: No revisado
- updated_msg: La configuración de letiqueta se actualizó exitosamente
+ unique_uses_today: "%{count} mensajes hoy"
+ unreviewed: No revisada
+ updated_msg: La configuración de la etiqueta se actualizó exitosamente
title: Administración
warning_presets:
add_new: Agregar nuevo
delete: Eliminar
edit_preset: Editar preajuste de advertencia
+ empty: Aún no ha definido ningún preajuste de advertencia.
title: Administrar preajustes de advertencia
admin_mailer:
new_pending_account:
- body: Abajo están los detalles de la nueva cuenta. Podés aprobar o rechazar esta aplicación.
+ body: Abajo están los detalles de la nueva cuenta. Podés aprobar o rechazar esta solicitud.
subject: Nueva cuenta para revisión en %{instance} (%{username})
new_report:
body: "%{reporter} denunció a %{target}"
@@ -692,9 +730,9 @@ es-AR:
aliases:
add_new: Crear alias
created_msg: El nuevo alias se creó exitosamente. Ahora podés empezar la mudanza desde la cuenta vieja.
- deleted_msg: Eliminaste el alias exitosamente. La mudanza de esa cuenta a esta ya no será posible.
+ deleted_msg: Eliminaste el alias exitosamente. La mudanza de esa cuenta a ésta ya no será posible.
empty: No tenés alias.
- hint_html: Si querés mudarte desde otra cuenta a esta, acá podés crear un alias, el cual es necesario antes de empezar a mudar seguidores de la cuenta vieja a esta. Esta acción por sí misma es inofensiva y reversible. La migración de la cuenta se inicia desde la cuenta anterior.
+ hint_html: Si querés mudarte desde otra cuenta a esta, acá podés crear un alias, el cual es necesario antes de empezar a mudar seguidores de la cuenta vieja a ésta. Esta acción por sí misma es inofensiva y reversible. La migración de la cuenta se inicia desde la cuenta anterior.
remove: Desvincular alias
appearance:
advanced_web_interface: Interface web avanzada
@@ -707,14 +745,14 @@ es-AR:
guide_link: https://es.crowdin.com/project/mastodon
guide_link_text: Todos pueden contribuir.
sensitive_content: Contenido sensible
- toot_layout: Diseño del toot
+ toot_layout: Diseño del mensaje
application_mailer:
notification_preferences: Cambiar configuración de correo electrónico
salutation: "%{name}:"
settings: 'Cambiar configuración de correo electrónico: %{link}'
view: 'Vista:'
view_profile: Ver perfil
- view_status: Ver estado
+ view_status: Ver mensaje
applications:
created: Aplicación creada exitosamente
destroyed: Aplicación eliminada exitosamente
@@ -733,7 +771,7 @@ es-AR:
description:
prefix_invited_by_user: "¡@%{name} te invita para que te unás a este servidor de Mastodon!"
prefix_sign_up: "¡Unite a Mastodon hoy!"
- suffix: Con una cuenta vas a poder seguir gente, escribir toots e intercambiar mensajes ¡con usuarios de cualquier servidor de Mastodon y más!
+ suffix: Con una cuenta vas a poder seguir a otras cuentas, escribir mensajes e intercambiarlos con usuarios de cualquier servidor de Mastodon, ¡y mucho más!
didnt_get_confirmation: "¿No recibiste el correo electrónico de confirmación?"
dont_have_your_security_key: "¿No tenés tu llave de seguridad?"
forgot_password: "¿Te olvidaste la contraseña?"
@@ -808,14 +846,14 @@ es-AR:
x_seconds: "%{count}s"
deletes:
challenge_not_passed: La información que ingresaste no es correcta
- confirm_password: Ingresa tu contraseña actual para verificar tu identidad
+ confirm_password: Ingresá tu contraseña actual para verificar tu identidad
confirm_username: Ingresá tu nombre de usuario para confirmar el procedimiento
proceed: Eliminar cuenta
success_msg: Tu cuenta fue eliminada exitosamente
warning:
before: 'Antes de proceder, por favor, leé estas notas cuidadosamente:'
caches: El contenido que fue almacenado en caché por otros servidores puede persistir
- data_removal: Tus toots y el resto de los datos se eliminarán definitivamente
+ data_removal: Tus mensajes y el resto de los datos se eliminarán definitivamente
email_change_html: Podés cambiar tu dirección de correo electrónico sin eliminar tu cuenta
email_contact_html: Si todavía no llegó, podés escribir a %{email} para pedir ayuda
email_reconfirmation_html: Si no te llegó el correo de confirmación, podés solicitarlo de nuevo
@@ -845,13 +883,13 @@ es-AR:
'503': La página no se pudo cargar debido a un fallo temporal del servidor.
noscript_html: Para usar la aplicación web de Mastodon, por favor, activá Javascript. Alternativamente, probá alguna de las aplicaciones nativas de Mastodon para tu plataforma.
existing_username_validator:
- not_found: no pudo encontrar un usuario local con ese nombre de usuario
+ not_found: no se pudo encontrar un usuario local con ese nombre de usuario
not_found_multiple: no se pudo encontrar a %{usernames}
exports:
archive_takeout:
date: Fecha
download: Descargá tu archivo historial
- hint_html: Podés solicitar un archivo historial de tus toots y medios subidos. Los datos exportados estarán en formato "ActivityPub", legibles por cualquier software compatible. Podés solicitar un archivo historial cada 7 días.
+ hint_html: Podés solicitar un archivo historial de tus mensajes y medios subidos. Los datos exportados estarán en formato "ActivityPub", legibles por cualquier software compatible. Podés solicitar un archivo historial cada 7 días.
in_progress: Compilando tu archivo historial...
request: Solicitá tu archivo historial
size: Tamaño
@@ -866,11 +904,11 @@ es-AR:
add_new: Agregar nueva
errors:
limit: Alcanzaste el máximo de etiquetas destacadas
- hint_html: "¿Qué son las etiquetas destacadas? Se muestran de forma prominente en tu perfil público y permiten a los usuarios navegar por tus toots públicos específicamente bajo esas etiquetas. Son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo."
+ hint_html: "¿Qué son las etiquetas destacadas? Son etiquetas que se muestran de forma permanente en tu perfil público y permiten a los usuarios navegar por tus mensajes públicos que contengan esas etiquetas. Las etiquetas destacadas son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo."
filters:
contexts:
account: Perfiles
- home: Inicio y listas
+ home: Principal y listas
notifications: Notificaciones
public: Líneas temporales públicas
thread: Conversaciones
@@ -917,7 +955,7 @@ es-AR:
i_am_html: Soy %{username} en %{service}.
identity: Identidad
inactive: Inactiva
- publicize_checkbox: 'Y tooteá esto:'
+ publicize_checkbox: 'Y enviá esto:'
publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}"
remove: Quitar prueba de cuenta
removed: Se quitó la prueba de cuenta exitosamente
@@ -968,7 +1006,7 @@ es-AR:
limit: Alcanzaste el máximo de listas
media_attachments:
validations:
- images_and_video: No se puede adjuntar un video a un toot que ya contenga imágenes
+ images_and_video: No se puede adjuntar un video a un mensaje que ya contenga imágenes
not_ready: No se pueden adjuntar archivos que no se han terminado de procesar. ¡Intentá de nuevo en un rato!
too_many: No se pueden adjuntar más de 4 archivos
migrations:
@@ -994,11 +1032,11 @@ es-AR:
redirecting_to: Tu cuenta está siendo redirigida a %{acct}.
set_redirect: Establecer redireccionamiento
warning:
- backreference_required: La nueva cuenta debe ser configurada primero para hacer referencia a esta
+ backreference_required: La cuenta nueva debe ser configurada primero para hacer referencia a ésta
before: 'Antes de proceder, por favor, leé estas notas cuidadosamente:'
cooldown: Después de mudarte hay un período de receso intermedio durante el cual no podrás volver a mudarte
disabled_account: Tu cuenta actual no será completamente utilizable luego de esto. Sin embargo, tendrás acceso a la exportación de datos así como a la reactivación.
- followers: Esta acción mudará a todos los seguidores de la cuenta actual a la nueva cuenta
+ followers: Esta acción mudará a todos los seguidores de la cuenta actual a la cuenta nueva
only_redirect_html: Alternativamente, podés poner solamente un redireccionamiento en tu perfil.
other_data: No se mudarán otros datos automáticamente
redirect: El perfil de tu cuenta actual se actualizará con un aviso de redireccionamiento y será excluido de las búsquedas
@@ -1021,8 +1059,8 @@ es-AR:
other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
title: En tu ausencia...
favourite:
- body: 'Tu toot fue marcado como favorito por %{name}:'
- subject: "%{name} marcó tu toot como favorito"
+ body: 'Tu mensaje fue marcado como favorito por %{name}:'
+ subject: "%{name} marcó tu mensaje como favorito"
title: Nuevo favorito
follow:
body: "¡%{name} te está siguiendo!"
@@ -1038,10 +1076,14 @@ es-AR:
body: 'Fuiste mencionado por %{name} en:'
subject: Fuiste mencionado por %{name}
title: Nueva mención
+ poll:
+ subject: Terminó una encuesta de %{name}
reblog:
- body: "%{name} retooteó tu toot:"
- subject: "%{name} retooteó tu toot"
- title: Nuevo retoot
+ body: "%{name} adhirió a tu mensaje:"
+ subject: "%{name} adhirió a tu mensaje"
+ title: Nueva adhesión
+ status:
+ subject: "%{name} acaba de enviar un mensaje"
notifications:
email_events: Eventos para notificaciones por correo electrónico
email_events_hint: 'Seleccioná los eventos para los que querés recibir notificaciones:'
@@ -1083,7 +1125,7 @@ es-AR:
too_many_options: no puede contener más de %{max} elementos
preferences:
other: Otras opciones
- posting_defaults: Configuración predeterminada de publicaciones
+ posting_defaults: Configuración predeterminada de mensajes
public_timelines: Líneas temporales públicas
reactions:
errors:
@@ -1095,19 +1137,19 @@ es-AR:
follow_selected_followers: Seguir a los seguidores seleccionados
followers: Seguidores
following: Siguiendo
- invited: Invitado
+ invited: Invitados
last_active: Última actividad
- most_recent: Más reciente
- moved: Mudada
- mutual: Mutua
- primary: Principal
+ most_recent: Más recientes
+ moved: Mudadas
+ mutual: Mutuales
+ primary: Principales
relationship: Relación
remove_selected_domains: Quitar todos los seguidores de los dominios seleccionados
remove_selected_followers: Quitar los seguidores seleccionados
remove_selected_follows: Dejar de seguir a los usuarios seleccionados
status: Estado de la cuenta
remote_follow:
- acct: Ingresá tu usuario@dominio desde el que querés seguir
+ acct: Ingresá tu usuario@dominio desde el que querés continuar
missing_resource: No se pudo encontrar la dirección web de redireccionamiento requerida para tu cuenta
no_account_html: "¿No tenés cuenta? Podés registrarte acá"
proceed: Proceder para seguir
@@ -1116,16 +1158,16 @@ es-AR:
remote_interaction:
favourite:
proceed: Proceder para marcar como favorito
- prompt: 'Vas a marcar este toot como favorito:'
+ prompt: 'Vas a marcar este mensaje como favorito:'
reblog:
- proceed: Proceder para retootear
- prompt: 'Vas a retootear este toot:'
+ proceed: Proceder para adherir
+ prompt: 'Vas a adherir a este mensaje:'
reply:
proceed: Proceder para responder
- prompt: 'Vas a responder a este toot:'
+ prompt: 'Vas a responder a este mensaje:'
scheduled_statuses:
- over_daily_limit: Superaste el límite de %{limit} toots programados para ese día
- over_total_limit: Superaste el límite de %{limit} toots programados
+ over_daily_limit: Superaste el límite de %{limit} mensajes programados para ese día
+ over_total_limit: Superaste el límite de %{limit} mensajes programados
too_soon: La fecha programada debe estar en el futuro
sessions:
activity: Última actividad
@@ -1170,7 +1212,7 @@ es-AR:
title: Sesiones
settings:
account: Cuenta
- account_settings: Configuración de la cuenta
+ account_settings: Config. de la cuenta
aliases: Alias de la cuenta
appearance: Apariencia
authorized_apps: Aplicaciones autorizadas
@@ -1190,8 +1232,6 @@ es-AR:
relationships: Seguimientos
two_factor_authentication: Autenticación de dos factores
webauthn_authentication: Llaves de seguridad
- spam_check:
- spam_detected: Este es un informe automatizado. Se detectó spam.
statuses:
attached:
audio:
@@ -1204,21 +1244,21 @@ es-AR:
video:
one: "%{count} video"
other: "%{count} videos"
- boosted_from_html: Retooteado desde %{acct_link}
+ boosted_from_html: Adherido desde %{acct_link}
content_warning: 'Advertencia de contenido: %{warning}'
disallowed_hashtags:
one: 'contenía una etiqueta no permitida: %{tags}'
other: 'contenía las etiquetas no permitidas: %{tags}'
errors:
- in_reply_not_found: El toot al que intentás responder no existe.
+ in_reply_not_found: El mensaje al que intentás responder no existe.
language_detection: Detectar idioma automáticamente
- open_in_web: Abrir en web
+ open_in_web: Abrir en la web
over_character_limit: se excedió el límite de %{max} caracteres
pin_errors:
- limit: Ya fijaste el número máximo de toots
- ownership: No se puede fijar el toot de otra persona
- private: Los toots no públicos no se pueden fijar
- reblog: No se puede fijar un retoot
+ limit: Ya fijaste el número máximo de mensajes
+ ownership: No se puede fijar el mensaje de otra cuenta
+ private: Los mensajes que no son públicos no se pueden fijar
+ reblog: No se puede fijar una adhesión
poll:
total_people:
one: "%{count} persona"
@@ -1234,6 +1274,7 @@ es-AR:
sign_in_to_participate: Iniciá sesión para participar en la conversación
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Directo
private: Sólo a seguidores
private_long: Sólo mostrar a seguidores
public: Público
@@ -1241,8 +1282,8 @@ es-AR:
unlisted: No listado
unlisted_long: Todos pueden ver, pero no está listado en las líneas temporales públicas
stream_entries:
- pinned: Toot fijado
- reblogged: retooteó
+ pinned: Mensaje fijado
+ reblogged: adhirió a este mensaje
sensitive_content: Contenido sensible
tags:
does_not_match_previous_name: no coincide con el nombre anterior
@@ -1253,8 +1294,8 @@ es-AR:
@@ -1265,9 +1306,9 @@ es-AR:
-
@@ -1287,7 +1328,7 @@ es-AR:
¿Usamos cookies?
- <a> y <em>.
+ title: Descripción de instancia
+ site_description_extended:
+ desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML
+ title: Información extendida personalizada
+ site_short_description:
+ desc_html: Mostrado en la barra lateral y las etiquetas de metadatos. Describe lo que es Mastodon y qué hace especial a este servidor en un solo párrafo. si está vacío, pone por defecto la descripción de la instancia.
+ title: Descripción corta de la instancia
+ site_terms:
+ desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML
+ title: Términos de servicio personalizados
+ site_title: Nombre de instancia
+ thumbnail:
+ desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px
+ title: Portada de instancia
+ timeline_preview:
+ desc_html: Mostrar línea de tiempo pública en la portada
+ title: Previsualización
+ title: Ajustes del sitio
+ trendable_by_default:
+ desc_html: Afecta a etiquetas que no han sido previamente rechazadas
+ title: Permitir que las etiquetas sean tendencia sin revisión previa
+ trends:
+ desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia
+ title: Hashtags de tendencia
+ site_uploads:
+ delete: Eliminar archivo subido
+ destroyed_msg: "¡Carga del sitio eliminada con éxito!"
+ statuses:
+ back_to_account: Volver a la cuenta
+ batch:
+ delete: Eliminar
+ nsfw_off: Marcar contenido como no sensible
+ nsfw_on: Marcar contenido como sensible
+ deleted: Eliminado
+ failed_to_execute: Falló al ejecutar
+ media:
+ title: Multimedia
+ no_media: No hay multimedia
+ no_status_selected: No se cambió ningún estado al no seleccionar ninguno
+ title: Estado de las cuentas
+ with_media: Con multimedia
+ system_checks:
+ database_schema_check:
+ message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería
+ rules_check:
+ action: Administrar reglas del servidor
+ message_html: No ha definido ninguna regla del servidor.
+ sidekiq_process_check:
+ message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq
+ tags:
+ accounts_today: Usos únicos de hoy
+ accounts_week: Usos únicos esta semana
+ breakdown: Desglose del consumo actual por fuentes
+ last_active: Última actividad
+ most_popular: Más popular
+ most_recent: Más reciente
+ name: Hashtag
+ review: Estado de revisión
+ reviewed: Revisado
+ title: Etiquetas
+ trending_right_now: En tendencia ahora mismo
+ unique_uses_today: "%{count} publicando hoy"
+ unreviewed: No revisado
+ updated_msg: Hashtags actualizados exitosamente
+ title: Administración
+ warning_presets:
+ add_new: Añadir nuevo
+ delete: Borrar
+ edit_preset: Editar aviso predeterminado
+ empty: Aún no has definido ningún preajuste de advertencia.
+ title: Editar configuración predeterminada de avisos
+ admin_mailer:
+ new_pending_account:
+ body: Los detalles de la nueva cuenta están abajos. Puedes aprobar o rechazar esta aplicación.
+ subject: Nueva cuenta para revisión en %{instance} (%{username})
+ new_report:
+ body: "%{reporter} ha reportado a %{target}"
+ body_remote: Alguien de %{domain} a reportado a %{target}
+ subject: Nuevo reporte para la %{instance} (#%{id})
+ new_trending_tag:
+ body: 'El hashtag #%{name} está en tendencia hoy, pero no ha sido revisado previamente. No se mostrará públicamente a menos que lo permita, o simplemente guarde el formulario como para no volver a ver esto.'
+ subject: Nuevo hashtag para revisión en %{instance} (#%{name})
+ aliases:
+ add_new: Crear alias
+ created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua.
+ deleted_msg: Elimina el alias correctamente. El traslado de esa cuenta a esta ya no será posible.
+ empty: No tienes ningún alias.
+ hint_html: Si quieres migrar de otra cuenta a esta, aquí puedes crear un alias, es necesario proceder antes de empezar a mover seguidores de la cuenta anterior a esta. Esta acción por sí misma es inofensiva y reversible. La migración de la cuenta se inicia desde la cuenta antigua.
+ remove: Desvincular alias
+ appearance:
+ advanced_web_interface: Interfaz web avanzada
+ advanced_web_interface_hint: 'Si desea utilizar todo el ancho de pantalla, la interfaz web avanzada le permite configurar varias columnas diferentes para ver tanta información al mismo tiempo como quiera: Inicio, notificaciones, línea de tiempo federada, cualquier número de listas y etiquetas.'
+ animations_and_accessibility: Animaciones y accesibilidad
+ confirmation_dialogs: Diálogos de confirmación
+ discovery: Descubrir
+ localization:
+ body: Mastodon es traducido con la ayuda de voluntarios.
+ guide_link: https://es.crowdin.com/project/mastodon
+ guide_link_text: Todos pueden contribuir.
+ sensitive_content: Contenido sensible
+ toot_layout: Diseño de los toots
+ application_mailer:
+ notification_preferences: Cambiar preferencias de correo electrónico
+ salutation: "%{name}:"
+ settings: 'Cambiar preferencias de correo: %{link}'
+ view: 'Vista:'
+ view_profile: Ver perfil
+ view_status: Ver estado
+ applications:
+ created: Aplicación creada exitosamente
+ destroyed: Apicación eliminada exitosamente
+ invalid_url: La URL proporcionada es incorrecta
+ regenerate_token: Regenerar token de acceso
+ token_regenerated: Token de acceso regenerado exitosamente
+ warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie!
+ your_token: Tu token de acceso
+ auth:
+ apply_for_account: Solicitar una invitación
+ change_password: Contraseña
+ checkbox_agreement_html: Acepto las reglas del servidor y términos de servicio
+ checkbox_agreement_without_rules_html: Acepto los términos de servicio
+ delete_account: Borrar cuenta
+ delete_account_html: Si desea eliminar su cuenta, puede proceder aquí. Será pedido de una confirmación.
+ description:
+ prefix_invited_by_user: "¡@%{name} te invita a unirte a este servidor de Mastodon!"
+ prefix_sign_up: "¡Únete a Mastodon hoy!"
+ suffix: "¡Con una cuenta podrás seguir a gente, publicar novedades e intercambiar mensajes con usuarios de cualquier servidor de Mastodon y más!"
+ didnt_get_confirmation: "¿No recibió el correo de confirmación?"
+ dont_have_your_security_key: "¿No tienes tu clave de seguridad?"
+ forgot_password: "¿Olvidaste tu contraseña?"
+ invalid_reset_password_token: El token de reinicio de contraseña es inválido o expiró. Por favor pide uno nuevo.
+ link_to_otp: Introduce un código de dos factores desde tu teléfono o un código de recuperación
+ link_to_webauth: Utilice su dispositivo de clave de seguridad
+ login: Iniciar sesión
+ logout: Cerrar sesión
+ migrate_account: Mudarse a otra cuenta
+ migrate_account_html: Si deseas redireccionar esta cuenta a otra distinta, puedes configurarlo aquí.
+ or_log_in_with: O inicia sesión con
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Registrarse
+ registration_closed: "%{instance} no está aceptando nuevos miembros"
+ resend_confirmation: Volver a enviar el correo de confirmación
+ reset_password: Restablecer contraseña
+ security: Cambiar contraseña
+ set_new_password: Establecer nueva contraseña
+ setup:
+ email_below_hint_html: Si la dirección de correo electrónico que aparece a continuación es incorrecta, se puede cambiarla aquí y recibir un nuevo correo electrónico de confirmación.
+ email_settings_hint_html: El correo electrónico de confirmación fue enviado a %{email}. Si esa dirección de correo electrónico no sea correcta, se puede cambiarla en la configuración de la cuenta.
+ title: Configuración
+ status:
+ account_status: Estado de la cuenta
+ confirming: Esperando confirmación de correo electrónico.
+ functional: Su cuenta está totalmente operativa.
+ pending: Su solicitud está pendiente de revisión por nuestros administradores. Eso puede tardar algún tiempo. Usted recibirá un correo electrónico si el solicitud sea aprobada.
+ redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}.
+ too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo.
+ trouble_logging_in: "¿Problemas para iniciar sesión?"
+ use_security_key: Usar la clave de seguridad
+ authorize_follow:
+ already_following: Ya estás siguiendo a esta cuenta
+ already_requested: Ya has enviado una solicitud de seguimiento a esa cuenta
+ error: Desafortunadamente, ha ocurrido un error buscando la cuenta remota
+ follow: Seguir
+ follow_request: 'Tienes una solicitud de seguimiento de:'
+ following: "¡Éxito! Ahora estás siguiendo a:"
+ post_follow:
+ close: O, puedes simplemente cerrar esta ventana.
+ return: Regresar al perfil del usuario
+ web: Ir al sitio web
+ title: Seguir a %{acct}
+ challenge:
+ confirm: Continuar
+ hint_html: "Tip: No volveremos a preguntarte por la contraseña durante la siguiente hora."
+ invalid_password: Contraseña incorrecta
+ prompt: Confirmar contraseña para seguir
+ crypto:
+ errors:
+ invalid_key: no es una clave Ed25519 o Curve25519 válida
+ invalid_signature: no es una firma Ed25519 válida
+ date:
+ formats:
+ default: "%d %b %Y"
+ with_month_name: "%d %B %Y"
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count} h"
+ about_x_months: "%{count}m"
+ about_x_years: "%{count}a"
+ almost_x_years: "%{count}a"
+ half_a_minute: Justo ahora
+ less_than_x_minutes: "%{count} m"
+ less_than_x_seconds: Justo ahora
+ over_x_years: "%{count}a"
+ x_days: "%{count} d"
+ x_minutes: "%{count} m"
+ x_months: "%{count}m"
+ x_seconds: "%{count} s"
+ deletes:
+ challenge_not_passed: Los datos introducidos son incorrectos
+ confirm_password: Ingresa tu contraseña actual para demostrar tu identidad
+ confirm_username: Escribe tu nombre de usuario para confirmar
+ proceed: Eliminar cuenta
+ success_msg: Tu cuenta se eliminó con éxito
+ warning:
+ before: 'Antes de continuar, por favor lee con atención las siguientes notas:'
+ caches: El contenido que ha sido almacenado en caché por otros servidores puede persistir
+ data_removal: Tus publicaciones y el resto de datos se eliminarán definitivamente
+ email_change_html: Puedes cambiar tu dirección de correo electrónico sin eliminar tu cuenta
+ email_contact_html: Si aún no te ha llegado, puedes escribir a %{email} para pedir ayuda
+ email_reconfirmation_html: Si no te ha llegado el correo de confirmación, puedes volver a solicitarlo
+ irreversible: No podrás restaurar ni reactivar tu cuenta
+ more_details_html: Para más detalles, ver la política de privacidad.
+ username_available: Tu nombre de usuario volverá a estar disponible
+ username_unavailable: Tu nombre de usuario no estará disponible
+ directories:
+ directory: Directorio de perfiles
+ explanation: Descubre usuarios según sus intereses
+ explore_mastodon: Explorar %{title}
+ domain_validator:
+ invalid_domain: no es un nombre de dominio válido
+ errors:
+ '400': La solicitud que has enviado no es valida o estaba malformada.
+ '403': No tienes permiso para acceder a esta página.
+ '404': La página que estabas buscando no existe.
+ '406': Esta página no está disponible en el formato solicitado.
+ '410': La página que estabas buscando no existe más.
+ '422':
+ content: Verificación de seguridad fallida. ¿Estás bloqueando algunas cookies?
+ title: Verificación de seguridad fallida
+ '429': Asfixiado
+ '500':
+ content: Lo sentimos, algo ha funcionado mal por nuestra parte.
+ title: Esta página no es correcta
+ '503': La página no se ha podido cargar debido a un fallo temporal del servidor.
+ noscript_html: Para usar la aplicación web de Mastodon, por favor activa Javascript. Alternativamente, prueba alguna de las aplicaciones nativas para Mastodon para tu plataforma.
+ existing_username_validator:
+ not_found: no pudo encontrar un usuario local con ese nombre de usuario
+ not_found_multiple: no pudo encontrar %{usernames}
+ exports:
+ archive_takeout:
+ date: Fecha
+ download: Descargar tu archivo
+ hint_html: Puedes solicitar un archivo de tus toots y archivos multimedia subidos. Los datos exportados estarán en formato ActivityPub, legibles por cualquier software compatible.
+ in_progress: Recopilando tu archivo...
+ request: Solicitar tu archivo
+ size: Tamaño
+ blocks: Personas que has bloqueado
+ bookmarks: Marcadores
+ csv: CSV
+ domain_blocks: Bloqueos de dominios
+ lists: Listas
+ mutes: Tienes en silencio
+ storage: Almacenamiento
+ featured_tags:
+ add_new: Añadir nuevo
+ errors:
+ limit: Ya has alcanzado la cantidad máxima de hashtags
+ hint_html: "¿Qué son las etiquetas destacadas? Se muestran de forma prominente en tu perfil público y permiten a los usuarios navegar por tus publicaciones públicas específicamente bajo esas etiquetas. Son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo."
+ filters:
+ contexts:
+ account: Perfiles
+ home: Timeline propio
+ notifications: Notificaciones
+ public: Timeline público
+ thread: Conversaciones
+ edit:
+ title: Editar filtro
+ errors:
+ invalid_context: Se suminstró un contexto inválido o vacío
+ invalid_irreversible: El filtrado irreversible solo funciona con los contextos propios o de notificaciones
+ index:
+ delete: Borrar
+ empty: No tienes filtros.
+ title: Filtros
+ new:
+ title: Añadir un nuevo filtro
+ footer:
+ developers: Desarrolladores
+ more: Mas…
+ resources: Recursos
+ trending_now: Tendencia ahora
+ generic:
+ all: Todos
+ changes_saved_msg: "¡Cambios guardados con éxito!"
+ copy: Copiar
+ delete: Eliminar
+ no_batch_actions_available: No hay acciones por lotes disponibles en esta página
+ order_by: Ordenar por
+ save_changes: Guardar cambios
+ validation_errors:
+ one: "¡Algo no está bien! Por favor, revisa el error"
+ other: "¡Algo no está bien! Por favor, revise %{count} errores más abajo"
+ html_validator:
+ invalid_markup: 'contiene código HTML no válido: %{error}'
+ identity_proofs:
+ active: Activo
+ authorize: Sí, autorizar
+ authorize_connection_prompt: "¿Autorizar esta conexión criptográfica?"
+ errors:
+ failed: La conexión criptográfica falló. Por favor, inténtalo de nuevo desde %{provider}.
+ keybase:
+ invalid_token: Los tokens de Keybase son hashes de firmas y deben tener 66 caracteres hex
+ verification_failed: Keybase no reconoce este token como una firma del usuario de Keybase %{kb_username}. Por favor, inténtelo de nuevo desde Keybase.
+ wrong_user: No se puede crear una prueba para %{proving} mientras se inicia sesión como %{current}. Inicia sesión como %{proving} e inténtalo de nuevo.
+ explanation_html: Aquí puedes conectar criptográficamente sus otras identidades, como un perfil de Keybase. Esto permite a otras personas enviarle mensajes encriptados y confiar en el contenido que les envías.
+ i_am_html: Soy %{username} en %{service}.
+ identity: Identidad
+ inactive: Inactivo
+ publicize_checkbox: 'Y tootee esto:'
+ publicize_toot: "¡Comprobado! Soy %{username} en %{service}: %{url}"
+ remove: Eliminar prueba de la cuenta
+ removed: Prueba eliminada con éxito de la cuenta
+ status: Estado de la verificación
+ view_proof: Ver prueba
+ imports:
+ errors:
+ over_rows_processing_limit: contiene más de %{count} filas
+ modes:
+ merge: Unir
+ merge_long: Mantener registros existentes y añadir nuevos
+ overwrite: Sobrescribir
+ overwrite_long: Reemplazar registros actuales con los nuevos
+ preface: Puedes importar ciertos datos, como todas las personas que estás siguiendo o bloqueando en tu cuenta en esta instancia, desde archivos exportados de otra instancia.
+ success: Sus datos se han cargado correctamente y serán procesados en brevedad
+ types:
+ blocking: Lista de bloqueados
+ bookmarks: Marcadores
+ domain_blocking: Lista de dominios bloqueados
+ following: Lista de seguidos
+ muting: Lista de silenciados
+ upload: Cargar
+ in_memoriam_html: En memoria.
+ invites:
+ delete: Desactivar
+ expired: Expiradas
+ expires_in:
+ '1800': 30 minutos
+ '21600': 6 horas
+ '3600': 1 hora
+ '43200': 12 horas
+ '604800': 1 semana
+ '86400': 1 día
+ expires_in_prompt: Nunca
+ generate: Generar
+ invited_by: 'Fuiste invitado por:'
+ max_uses:
+ one: 1 uso
+ other: "%{count} usos"
+ max_uses_prompt: Sin límite
+ prompt: Generar y compartir enlaces con otros para conceder acceso a este nodo
+ table:
+ expires_at: Expira
+ uses: Usos
+ title: Invitar a gente
+ lists:
+ errors:
+ limit: Has alcanzado la cantidad máxima de listas
+ media_attachments:
+ validations:
+ images_and_video: No se puede adjuntar un video a un estado que ya contenga imágenes
+ not_ready: No se pueden adjuntar archivos que no se han terminado de procesar. ¡Inténtalo de nuevo en un momento!
+ too_many: No se pueden adjuntar más de 4 archivos
+ migrations:
+ acct: username@domain de la nueva cuenta
+ cancel: Cancelar redireccionamiento
+ cancel_explanation: Al cancelar el redireccionamiento se reactivará tu cuenta actual, pero no recuperarás los seguidores que hayan sido trasladados a la otra cuenta.
+ cancelled_msg: El redireccionamiento se ha cancelado correctamente.
+ errors:
+ already_moved: es la misma cuenta a la que ya has migrado
+ missing_also_known_as: no está haciendo referencia a esta cuenta
+ move_to_self: no puede ser la cuenta actual
+ not_found: no se pudo encontrar
+ on_cooldown: Estás en tiempo de reutilización
+ followers_count: Seguidores al momento de migrar
+ incoming_migrations: Migrar de una cuenta diferente
+ incoming_migrations_html: Para migrar de otra cuenta a esta, primero necesitas crear un alias de la cuenta.
+ moved_msg: Tu cuenta ahora se está redirigiendo a %{acct} y tus seguidores se están migrando.
+ not_redirecting: Tu cuenta no se está redirigiendo a ninguna otra cuenta actualmente.
+ on_cooldown: Has migrado tu cuenta recientemente. Esta función estará disponible de nuevo en %{count} días.
+ past_migrations: Migraciones pasadas
+ proceed_with_move: Migrar seguidores
+ redirected_msg: Tu cuenta ahora redirige a %{acct}.
+ redirecting_to: Tu cuenta se está redirigiendo a %{acct}.
+ set_redirect: Establecer redirección
+ warning:
+ backreference_required: La nueva cuenta debe ser configurada primero para hacer referencia a esta
+ before: 'Antes de continuar, por favor lee con atención las siguientes notas:'
+ cooldown: Después de migrar hay un período de espera durante el cual no podrás volver a migrar
+ disabled_account: Tu cuenta actual no será completamente utilizable después. Sin embargo, tendrás acceso a la exportación de datos así como a la reactivación.
+ followers: Esta acción migrará a todos los seguidores de la cuenta actual a la nueva cuenta
+ only_redirect_html: Alternativamente, solo puedes poner una redirección en tu perfil.
+ other_data: No se moverán otros datos automáticamente
+ redirect: El perfil de tu cuenta actual se actualizará con un aviso de redirección y será excluido de las búsquedas
+ moderation:
+ title: Moderación
+ move_handler:
+ carry_blocks_over_text: Este usuario se mudó desde %{acct}, que habías bloqueado.
+ carry_mutes_over_text: Este usuario se mudó desde %{acct}, que habías silenciado.
+ copy_account_note_text: 'Este usuario se mudó desde %{acct}, aquí estaban tus notas anteriores sobre él:'
+ notification_mailer:
+ digest:
+ action: Ver todas las notificaciones
+ body: Un resumen de los mensajes que perdiste en desde tu última visita, el %{since}
+ mention: "%{name} te ha mencionado en:"
+ new_followers_summary:
+ one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!"
+ other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!"
+ subject:
+ one: "1 nueva notificación desde tu última visita \U0001F418"
+ other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
+ title: En tu ausencia…
+ favourite:
+ body: 'Tu estado fue marcado como favorito por %{name}:'
+ subject: "%{name} marcó como favorito tu estado"
+ title: Nuevo favorito
+ follow:
+ body: "¡%{name} te está siguiendo!"
+ subject: "%{name} te está siguiendo"
+ title: Nuevo seguidor
+ follow_request:
+ action: Administrar solicitudes para seguir
+ body: "%{name} ha solicitado seguirte"
+ subject: 'Seguidor pendiente: %{name}'
+ title: Nueva solicitud para seguir
+ mention:
+ action: Responder
+ body: 'Fuiste mencionado por %{name} en:'
+ subject: Fuiste mencionado por %{name}
+ title: Nueva mención
+ poll:
+ subject: Una encuesta de %{name} ha terminado
+ reblog:
+ body: "%{name} ha retooteado tu estado:"
+ subject: "%{name} ha retooteado tu estado"
+ title: Nueva difusión
+ status:
+ subject: "%{name} acaba de publicar"
+ notifications:
+ email_events: Eventos para notificaciones por correo electrónico
+ email_events_hint: 'Selecciona los eventos para los que deseas recibir notificaciones:'
+ other_settings: Otros ajustes de notificaciones
+ number:
+ human:
+ decimal_units:
+ format: "%n %u"
+ units:
+ billion: MM
+ million: M
+ quadrillion: MB
+ thousand: m
+ trillion: B
+ otp_authentication:
+ code_hint: Introduce el código generado por tu aplicación de autentificación para confirmar
+ description_html: Si habilitas autenticación de dos factores a través de una aplicación de autenticación, el ingreso requerirá que estés en posesión de tu teléfono, que generará códigos para que ingreses.
+ enable: Activar
+ instructions_html: "Escanea este código QR desde Google Authenticator o una aplicación similar en tu teléfono. A partir de ahora, esta aplicación generará códigos que tendrásque ingresar cuando quieras iniciar sesión."
+ manual_instructions: 'Si no puedes escanear el código QR y necesitas introducirlo manualmente, este es el secreto en texto plano:'
+ setup: Configurar
+ wrong_code: "¡El código ingresado es inválido! ¿Es correcta la hora del dispositivo y el servidor?"
+ pagination:
+ newer: Más nuevo
+ next: Próximo
+ older: Más antiguo
+ prev: Anterior
+ truncate: "…"
+ polls:
+ errors:
+ already_voted: Ya has votado en esta encuesta
+ duplicate_options: contiene elementos duplicados
+ duration_too_long: está demasiado lejos en el futuro
+ duration_too_short: es demasiado pronto
+ expired: La encuesta ya ha terminado
+ invalid_choice: La opción de voto seleccionada no existe
+ over_character_limit: no puede exceder %{max} caracteres cada uno
+ too_few_options: debe tener más de un elemento
+ too_many_options: no puede contener más de %{max} elementos
+ preferences:
+ other: Otros
+ posting_defaults: Configuración por defecto de publicaciones
+ public_timelines: Líneas de tiempo públicas
+ reactions:
+ errors:
+ limit_reached: Límite de reacciones diferentes alcanzado
+ unrecognized_emoji: no es un emoji conocido
+ relationships:
+ activity: Actividad de la cuenta
+ dormant: Inactivo
+ follow_selected_followers: Seguir a los seguidores seleccionados
+ followers: Seguidores
+ following: Siguiendo
+ invited: Invitado
+ last_active: Última actividad
+ most_recent: Más reciente
+ moved: Movido
+ mutual: Mutuo
+ primary: Principal
+ relationship: Relación
+ remove_selected_domains: Eliminar todos los seguidores de los dominios seleccionados
+ remove_selected_followers: Eliminar los seguidores seleccionados
+ remove_selected_follows: Dejar de seguir a los usuarios seleccionados
+ status: Estado de la cuenta
+ remote_follow:
+ acct: Ingresa tu usuario@dominio desde el que quieres seguir
+ missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta
+ no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui"
+ proceed: Proceder a seguir
+ prompt: 'Vas a seguir a:'
+ reason_html: "¿¿Por qué es necesario este paso? %{instance} puede que no sea el servidor donde estás registrado, así que necesitamos redirigirte primero a tu servidor de origen."
+ remote_interaction:
+ favourite:
+ proceed: Proceder a marcar como favorito
+ prompt: 'Quieres marcar como favorito este toot:'
+ reblog:
+ proceed: Proceder a retootear
+ prompt: 'Quieres retootear este toot:'
+ reply:
+ proceed: Proceder a responder
+ prompt: 'Quieres responder a este toot:'
+ scheduled_statuses:
+ over_daily_limit: Ha superado el límite de %{limit} toots programados para ese día
+ over_total_limit: Ha superado el límite de %{limit} toots programados
+ too_soon: La fecha programada debe estar en el futuro
+ sessions:
+ activity: Última actividad
+ browser: Navegador
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Desconocido
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Navegador de Nokia S40 Ovi
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: Navegador QQ
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: Sesión actual
+ description: "%{browser} en %{platform}"
+ explanation: Estos son los navegadores web conectados actualmente en tu cuenta de Mastodon.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: GNU Linux
+ mac: Mac
+ other: Desconocido
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Revocar
+ revoke_success: Sesión revocada exitosamente
+ title: Sesiones
+ settings:
+ account: Cuenta
+ account_settings: Ajustes de la cuenta
+ aliases: Alias de la cuenta
+ appearance: Apariencia
+ authorized_apps: Aplicaciones autorizadas
+ back: Volver al inicio
+ delete: Borrar cuenta
+ development: Desarrollo
+ edit_profile: Editar perfil
+ export: Exportar información
+ featured_tags: Hashtags destacados
+ identity_proofs: Pruebas de identidad
+ import: Importar
+ import_and_export: Importar y exportar
+ migrate: Migración de cuenta
+ notifications: Notificaciones
+ preferences: Preferencias
+ profile: Perfil
+ relationships: Siguiendo y seguidores
+ two_factor_authentication: Autenticación de dos factores
+ webauthn_authentication: Claves de seguridad
+ statuses:
+ attached:
+ audio:
+ one: "%{count} audio"
+ other: "%{count} audios"
+ description: 'Adjunto: %{attached}'
+ image:
+ one: "%{count} imagen"
+ other: "%{count} imágenes"
+ video:
+ one: "%{count} vídeo"
+ other: "%{count} vídeos"
+ boosted_from_html: Impulsado desde %{acct_link}
+ content_warning: 'Alerta de contenido: %{warning}'
+ disallowed_hashtags:
+ one: 'contenía un hashtag no permitido: %{tags}'
+ other: 'contenía los hashtags no permitidos: %{tags}'
+ errors:
+ in_reply_not_found: El estado al que intentas responder no existe.
+ language_detection: Detección automática de idioma
+ open_in_web: Abrir en web
+ over_character_limit: Límite de caracteres de %{max} superado
+ pin_errors:
+ limit: Ya has fijado el número máximo de publicaciones
+ ownership: El toot de alguien más no puede fijarse
+ private: Los toots no-públicos no pueden fijarse
+ reblog: Un boost no puede fijarse
+ poll:
+ total_people:
+ one: persona %{count}
+ other: "%{count} gente"
+ total_votes:
+ one: "%{count} voto"
+ other: "%{count} votos"
+ vote: Vota
+ show_more: Mostrar más
+ show_newer: Mostrar más recientes
+ show_older: Mostrar más antiguos
+ show_thread: Mostrar discusión
+ sign_in_to_participate: Regístrate para participar en la conversación
+ title: "%{name}: «%{quote}»"
+ visibilities:
+ direct: Directa
+ private: Sólo mostrar a seguidores
+ private_long: Solo mostrar a tus seguidores
+ public: Público
+ public_long: Todos pueden ver
+ unlisted: Público, pero no mostrar en la historia federada
+ unlisted_long: Todos pueden ver, pero no está listado en las líneas de tiempo públicas
+ stream_entries:
+ pinned: Toot fijado
+ reblogged: retooteado
+ sensitive_content: Contenido sensible
+ tags:
+ does_not_match_previous_name: no coincide con el nombre anterior
+ terms:
+ body_html: |
+ Política de Privacidad
+ ¿Qué información recogemos?
+
+
+
+
+
+
+ ¿Para qué utilizamos su información?
+
+
+
+
+
+
+ ¿Cómo protegemos su información?
+
+
+
+ ¿Cuál es nuestra política de retención de datos?
+
+
+
+
+
+
+ ¿Utilizamos cookies?
+
+
+
+ ¿Revelamos alguna información a terceros?
+
+
+
+ Uso del sitio por parte de los niños
+
+
+
+ Cambios en nuestra Política de Privacidad
+
+ rel="me". El texto del vínculo no importa. Aquí un ejemplo:'
+ verification: Verificación
+ webauthn_credentials:
+ add: Agregar nueva clave de seguridad
+ create:
+ error: Hubo un problema al añadir su clave de seguridad. Por favor, inténtalo de nuevo.
+ success: Su clave de seguridad se ha añadido correctamente.
+ delete: Eliminar
+ delete_confirmation: "¿Estás seguro de que quieres eliminar esta clave de seguridad?"
+ description_html: Si habilita la autenticación de clave de seguridad, iniciar sesión requerirá que utilice una de sus claves de seguridad.
+ destroy:
+ error: Hubo un problema al añadir su clave de seguridad. Por favor, inténtalo de nuevo.
+ success: Su clave de seguridad se ha eliminado correctamente.
+ invalid_credential: Clave de seguridad no válida
+ nickname_hint: Introduzca el apodo de su nueva clave de seguridad
+ not_enabled: Aún no has activado WebAuthn
+ not_supported: Este navegador no soporta claves de seguridad
+ otp_required: Para usar claves de seguridad, por favor habilite primero la autenticación de doble factor.
+ registered_on: Registrado el %{date}
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 0582fd1f1..9f2f593ce 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1,7 +1,7 @@
---
es:
about:
- about_hashtag_html: Estos son toots públicos etiquetados con #%{hashtag}. Puedes interactuar con ellos si tienes una cuenta en cualquier parte del fediverso.
+ about_hashtag_html: Estos son publicaciones públicas etiquetadas con #%{hashtag}. Puedes interactuar con ellas si tienes una cuenta en cualquier parte del fediverso.
about_mastodon_html: 'La red social del futuro: ¡Sin anuncios, sin vigilancia corporativa, diseño ético, y descentralización! ¡Sé dueño de tu información con Mastodon!'
about_this: Información
active_count_after: activo
@@ -15,7 +15,7 @@ es:
browse_public_posts: Navega por un transmisión en vivo de publicaciones públicas en Mastodon
contact: Contacto
contact_missing: No especificado
- contact_unavailable: N/A
+ contact_unavailable: No disponible
discover_users: Descubrir usuarios
documentation: Documentación
federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá.
@@ -26,6 +26,8 @@ es:
Se usa para fines federativos y no debe ser bloqueado a menos que usted quiera bloquear toda la instancia, en cuyo caso se debe utilizar un bloque de dominio.
learn_more: Aprende más
privacy_policy: Política de privacidad
+ rules: Normas del servidor
+ rules_html: 'A continuación hay un resumen de las normas que debes seguir si quieres tener una cuenta en este servidor de Mastodon:'
see_whats_happening: Ver lo que está pasando
server_stats: 'Datos del servidor:'
source_code: Código fuente
@@ -74,11 +76,10 @@ es:
pin_errors:
following: Debes estar siguiendo a la persona a la que quieres aprobar
posts:
- one: Toot
- other: Toots
- posts_tab_heading: Toots
- posts_with_replies: Toots con respuestas
- reserved_username: El nombre de usuario está reservado
+ one: Publicación
+ other: Publicaciones
+ posts_tab_heading: Publicaciones
+ posts_with_replies: Publicaciones y respuestas
roles:
admin: Administrador
bot: Bot
@@ -229,6 +230,7 @@ es:
create_domain_block: Crear Bloqueo de Dominio
create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico
create_ip_block: Crear regla IP
+ create_unavailable_domain: Crear Dominio No Disponible
demote_user: Degradar Usuario
destroy_announcement: Eliminar Anuncio
destroy_custom_emoji: Eliminar Emoji Personalizado
@@ -237,6 +239,7 @@ es:
destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico
destroy_ip_block: Eliminar regla IP
destroy_status: Eliminar Estado
+ destroy_unavailable_domain: Eliminar Dominio No Disponible
disable_2fa_user: Deshabilitar 2FA
disable_custom_emoji: Deshabilitar Emoji Personalizado
disable_user: Deshabilitar Usuario
@@ -260,46 +263,48 @@ es:
update_domain_block: Actualizar el Bloqueo de Dominio
update_status: Actualizar Estado
actions:
- assigned_to_self_report: "%{name} se ha asignado la denuncia %{target} a sí mismo"
- change_email_user: "%{name} ha cambiado la dirección de correo del usuario %{target}"
- confirm_user: "%{name} confirmó la dirección de correo del usuario %{target}"
- create_account_warning: "%{name} envió una advertencia a %{target}"
- create_announcement: "%{name} creó el nuevo anuncio %{target}"
- create_custom_emoji: "%{name} subió un nuevo emoji %{target}"
- create_domain_allow: "%{name} ha añadido a la lista blanca el dominio %{target}"
- create_domain_block: "%{name} bloqueó el dominio %{target}"
- create_email_domain_block: "%{name} puso en lista negra el dominio de correos %{target}"
- create_ip_block: "%{name} creó la regla para la IP %{target}"
- demote_user: "%{name} degradó al usuario %{target}"
- destroy_announcement: "%{name} eliminó el anuncio %{target}"
- destroy_custom_emoji: "%{name} destruyó el emoji %{target}"
- destroy_domain_allow: "%{name} ha eliminado el dominio %{target} de la lista blanca"
- destroy_domain_block: "%{name} desbloqueó el dominio %{target}"
- destroy_email_domain_block: "%{name} puso en lista blanca el dominio de correos %{target}"
- destroy_ip_block: "%{name} eliminó la regla para la IP %{target}"
- destroy_status: "%{name} eliminó el estado de %{target}"
- disable_2fa_user: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}"
- disable_custom_emoji: "%{name} deshabilitó el emoji %{target}"
- disable_user: "%{name} deshabilitó el acceso del usuario %{target}"
- enable_custom_emoji: "%{name} habilitó el emoji %{target}"
- enable_user: "%{name} habilitó el acceso del usuario %{target}"
- memorialize_account: "%{name} convirtió la cuenta de %{target} en una página de memorial"
- promote_user: "%{name} promoción al usuario %{target}"
- remove_avatar_user: "%{name} ha eliminado el avatar de %{target}"
- reopen_report: "%{name} ha reabierto la denuncia %{target}"
- reset_password_user: "%{name} restauró la contraseña del usuario %{target}"
- resolve_report: "%{name} ha resuelto la denuncia %{target}"
- sensitive_account: "%{name} marcó multimedia de %{target} como sensible"
- silence_account: "%{name} silenció la cuenta de %{target}"
- suspend_account: "%{name} suspendió la cuenta de %{target}"
- unassigned_report: "%{name} ha desasignado la denuncia %{target}"
- unsensitive_account: "%{name} desmarcó multimedia de %{target} como sensible"
- unsilence_account: "%{name} desactivó el silenciado de la cuenta de %{target}"
- unsuspend_account: "%{name} desactivó la suspensión de la cuenta de %{target}"
- update_announcement: "%{name} actualizó el anuncio %{target}"
- update_custom_emoji: "%{name} actualizó el emoji %{target}"
- update_domain_block: "%{name} actualizó el bloqueo de dominio para %{target}"
- update_status: "%{name} actualizó el estado de %{target}"
+ assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo"
+ change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}"
+ confirm_user_html: "%{name} confirmó la dirección de correo electrónico del usuario %{target}"
+ create_account_warning_html: "%{name} envió una advertencia a %{target}"
+ create_announcement_html: "%{name} ha creado un nuevo anuncio %{target}"
+ create_custom_emoji_html: "%{name} subió un nuevo emoji %{target}"
+ create_domain_allow_html: "%{name} permitió la federación con el dominio %{target}"
+ create_domain_block_html: "%{name} bloqueó el dominio %{target}"
+ create_email_domain_block_html: "%{name} bloqueó el dominio de correo electrónico %{target}"
+ create_ip_block_html: "%{name} creó una regla para la IP %{target}"
+ create_unavailable_domain_html: "%{name} detuvo las entregas al dominio %{target}"
+ demote_user_html: "%{name} degradó al usuario %{target}"
+ destroy_announcement_html: "%{name} eliminó el anuncio %{target}"
+ destroy_custom_emoji_html: "%{name} destruyó emoji %{target}"
+ destroy_domain_allow_html: "%{name} bloqueó la federación con el dominio %{target}"
+ destroy_domain_block_html: "%{name} desbloqueó el dominio %{target}"
+ destroy_email_domain_block_html: "%{name} desbloqueó el dominio de correo electrónico %{target}"
+ destroy_ip_block_html: "%{name} eliminó una regla para la IP %{target}"
+ destroy_status_html: "%{name} eliminó el estado por %{target}"
+ destroy_unavailable_domain_html: "%{name} reanudó las entregas al dominio %{target}"
+ disable_2fa_user_html: "%{name} desactivó el requisito de dos factores para el usuario %{target}"
+ disable_custom_emoji_html: "%{name} desactivó el emoji %{target}"
+ disable_user_html: "%{name} deshabilitó el inicio de sesión para el usuario %{target}"
+ enable_custom_emoji_html: "%{name} activó el emoji %{target}"
+ enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}"
+ memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam"
+ promote_user_html: "%{name} promoción al usuario %{target}"
+ remove_avatar_user_html: "%{name} eliminó el avatar de %{target}"
+ reopen_report_html: "%{name} reabrió el informe %{target}"
+ reset_password_user_html: "%{name} reinició la contraseña del usuario %{target}"
+ resolve_report_html: "%{name} resolvió el informe %{target}"
+ sensitive_account_html: "%{name} marcó la multimedia de %{target} como sensible"
+ silence_account_html: "%{name} silenció la cuenta de %{target}"
+ suspend_account_html: "%{name} suspendió la cuenta de %{target}"
+ unassigned_report_html: "%{name} des-asignó el informe %{target}"
+ unsensitive_account_html: "%{name} desmarcó la multimedia de %{target} como sensible"
+ unsilence_account_html: "%{name} desilenció la cuenta de %{target}"
+ unsuspend_account_html: "%{name} reactivó la cuenta de %{target}"
+ update_announcement_html: "%{name} actualizó el anuncio %{target}"
+ update_custom_emoji_html: "%{name} actualizó el emoji %{target}"
+ update_domain_block_html: "%{name} actualizó el bloqueo de dominio para %{target}"
+ update_status_html: "%{name} actualizó el estado de %{target}"
deleted_status: "(estado borrado)"
empty: No se encontraron registros.
filter_by_action: Filtrar por acción
@@ -314,10 +319,12 @@ es:
new:
create: Crear anuncio
title: Nuevo anuncio
+ publish: Publicar
published_msg: "¡Anuncio publicado con éxito!"
scheduled_for: Programado para %{time}
scheduled_msg: "¡Anuncio programado para su publicación!"
title: Anuncios
+ unpublish: Retirar publicación
unpublished_msg: "¡Anuncio despublicado con éxito!"
updated_msg: "¡Anuncio actualizado con éxito!"
custom_emojis:
@@ -362,7 +369,6 @@ es:
feature_profile_directory: Directorio de perfil
feature_registrations: Registros
feature_relay: Relés de federación
- feature_spam_check: Contra-spam
feature_timeline_preview: Vista previa de la línea de tiempo
features: Características
hidden_service: Federación con servicios ocultos
@@ -440,9 +446,34 @@ es:
create: Añadir dominio
title: Nueva entrada en la lista negra de correo
title: Lista negra de correo
+ follow_recommendations:
+ description_html: "Las recomendaciones de cuentas ayudan a los nuevos usuarios a encontrar rápidamente contenido interesante. Cuando un usuario no ha interactuado con otros lo suficiente como para suscitar recomendaciones personalizadas de cuentas a las que seguir, en su lugar se le recomiendan estas cuentas. Se recalculan diariamente a partir de una mezcla de cuentas con el mayor número de interacciones recientes y con el mayor número de seguidores locales con un idioma determinado."
+ language: Para el idioma
+ status: Estado
+ suppress: Suprimir recomendación de cuentas
+ suppressed: Suprimida
+ title: Recomendaciones de cuentas
+ unsuppress: Restaurar recomendaciones de cuentas
instances:
+ back_to_all: Todos
+ back_to_limited: Limitados
+ back_to_warning: Advertencia
by_domain: Dominio
+ delivery:
+ all: Todos
+ clear: Limpiar errores de entrega
+ restart: Reiniciar entrega
+ stop: Detener entrega
+ title: Entrega
+ unavailable: No disponible
+ unavailable_message: Entrega no disponible
+ warning: Advertencia
+ warning_message:
+ one: Fallo de entrega %{count} día
+ other: Fallo de entrega %{count} días
delivery_available: Entrega disponible
+ delivery_error_days: Días de error de entrega
+ delivery_error_hint: Si la entrega no es posible a lo largo de %{count} días, se marcará automáticamente como no entregable.
empty: No se encontraron dominios.
known_accounts:
one: "%{count} cuenta conocida"
@@ -489,11 +520,11 @@ es:
relays:
add_new: Añadir un nuevo relés
delete: Borrar
- description_html: Un relés de federation es un servidor intermedio que intercambia grandes volúmenes de toots públicos entre servidores que se suscriben y publican en él. Puede ayudar a servidores pequeños y medianos a descubir contenido del fediverso, que de otra manera requeriría que los usuarios locales siguiesen manialmente a personas de servidores remotos.
+ description_html: Un relé de federación es un servidor intermedio que intercambia grandes volúmenes de publicaciones públicas entre servidores que se suscriben y publican en él. Puede ayudar a servidores pequeños y medianos a descubrir contenido del fediverso, que de otra manera requeriría que los usuarios locales siguiesen manualmente a personas de servidores remotos.
disable: Deshabilitar
disabled: Deshabilitado
enable: Hablitar
- enable_hint: Una vez conectado, tu servidor se suscribirá a todos los toots públicos de este relés, y comenzará a enviar los toots públicos de este servidor hacia él.
+ enable_hint: Una vez conectado, tu servidor se suscribirá a todos las publicaciones públicas de este relé, y comenzará a enviar las publicaciones públicas de este servidor hacia él.
enabled: Habilitado
inbox_url: URL del relés
pending: Esperando la aprobación del relés
@@ -542,6 +573,13 @@ es:
unassign: Desasignar
unresolved: No resuelto
updated_at: Actualizado
+ rules:
+ add_new: Añadir norma
+ delete: Eliminar
+ description_html: Aunque la mayoría afirma haber leído y estar de acuerdo con los términos de servicio, la gente normalmente no los lee hasta después de que surja algún problema. Haz que sea más fácil ver las normas de tu servidor de un vistazo estipulándolas en una lista de puntos. Intenta que cada norma sea corta y sencilla, pero sin estar divididas en muchos puntos.
+ edit: Editar norma
+ empty: Aún no se han definido las normas del servidor.
+ title: Normas del servidor
settings:
activity_api_enabled:
desc_html: Conteo de estados publicados localmente, usuarios activos, y nuevos registros en periodos semanales
@@ -565,9 +603,6 @@ es:
users: Para los usuarios locales que han iniciado sesión
domain_blocks_rationale:
title: Mostrar la razón de ser
- enable_bootstrap_timeline_accounts:
- desc_html: Hacer que los nuevos usuarios sigan automáticamente las cuentas configuradas para que su línea temporal de inicio no comience vacía
- title: Habilitar seguimientos predeterminados para usuarios nuevos
hero:
desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia
title: Imagen de portada
@@ -603,7 +638,7 @@ es:
open: Cualquiera puede registrarse
title: Modo de registros
show_known_fediverse_at_about_page:
- desc_html: Cuando esté activado, se mostrarán toots de todo el fediverso conocido en la vista previa. En otro caso, se mostrarán solamente toots locales.
+ desc_html: Cuando esté desactivado, se mostrarán solamente publicaciones locales en la línea temporal pública
title: Mostrar fediverso conocido en la vista previa de la historia
show_staff_badge:
desc_html: Mostrar un parche de staff en la página de un usuario
@@ -621,9 +656,6 @@ es:
desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML
title: Términos de servicio personalizados
site_title: Nombre de instancia
- spam_check_enabled:
- desc_html: Mastodon puede silenciar y reportar cuentas automáticamente usando medidas como detectar cuentas que envían mensajes no solicitados repetidos. Puede que haya falsos positivos.
- title: Contra-spam
thumbnail:
desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px
title: Portada de instancia
@@ -654,13 +686,18 @@ es:
no_status_selected: No se cambió ningún estado al no seleccionar ninguno
title: Estado de las cuentas
with_media: Con multimedia
+ system_checks:
+ database_schema_check:
+ message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería
+ rules_check:
+ action: Administrar reglas del servidor
+ message_html: No ha definido ninguna regla del servidor.
+ sidekiq_process_check:
+ message_html: No hay ningún proceso Sidekiq en ejecución para la(s) cola(s) %{value}. Por favor, revise su configuración de Sidekiq
tags:
accounts_today: Usos únicos de hoy
accounts_week: Usos únicos esta semana
breakdown: Desglose del consumo actual por fuentes
- context: Contexto
- directory: En el directorio
- in_directory: "%{count} en el directorio"
last_active: Última actividad
most_popular: Más popular
most_recent: Más reciente
@@ -677,6 +714,7 @@ es:
add_new: Añadir nuevo
delete: Borrar
edit_preset: Editar aviso predeterminado
+ empty: Aún no has definido ningún preajuste de advertencia.
title: Editar configuración predeterminada de avisos
admin_mailer:
new_pending_account:
@@ -707,10 +745,10 @@ es:
guide_link: https://es.crowdin.com/project/mastodon
guide_link_text: Todos pueden contribuir.
sensitive_content: Contenido sensible
- toot_layout: Diseño de los toots
+ toot_layout: Diseño de las publicaciones
application_mailer:
notification_preferences: Cambiar preferencias de correo electrónico
- salutation: "%{name},"
+ salutation: "%{name}:"
settings: 'Cambiar preferencias de correo: %{link}'
view: 'Vista:'
view_profile: Ver perfil
@@ -790,22 +828,22 @@ es:
invalid_signature: no es una firma Ed25519 válida
date:
formats:
- default: "%b %d, %Y"
- with_month_name: "%B %d, %Y"
+ default: "%d %b %Y"
+ with_month_name: "%d %B %Y"
datetime:
distance_in_words:
- about_x_hours: "%{count}h"
+ about_x_hours: "%{count} h"
about_x_months: "%{count}m"
about_x_years: "%{count}a"
almost_x_years: "%{count}a"
half_a_minute: Justo ahora
- less_than_x_minutes: "%{count}m"
+ less_than_x_minutes: "%{count} m"
less_than_x_seconds: Justo ahora
over_x_years: "%{count}a"
- x_days: "%{count}d"
- x_minutes: "%{count}m"
+ x_days: "%{count} d"
+ x_minutes: "%{count} m"
x_months: "%{count}m"
- x_seconds: "%{count}s"
+ x_seconds: "%{count} s"
deletes:
challenge_not_passed: Los datos introducidos son incorrectos
confirm_password: Ingresa tu contraseña actual para demostrar tu identidad
@@ -851,7 +889,7 @@ es:
archive_takeout:
date: Fecha
download: Descargar tu archivo
- hint_html: Puedes solicitar un archivo de tus toots y archivos multimedia subidos. Los datos exportados estarán en formato ActivityPub, legibles por cualquier software compatible.
+ hint_html: Puedes solicitar un archivo de tus publicaciones y archivos multimedia subidos. Los datos exportados estarán en formato ActivityPub, legibles por cualquier software compatible.
in_progress: Recopilando tu archivo...
request: Solicitar tu archivo
size: Tamaño
@@ -1038,10 +1076,14 @@ es:
body: 'Fuiste mencionado por %{name} en:'
subject: Fuiste mencionado por %{name}
title: Nueva mención
+ poll:
+ subject: Una encuesta de %{name} ha terminado
reblog:
- body: "%{name} ha retooteado tu estado:"
- subject: "%{name} ha retooteado tu estado"
+ body: "%{name} ha retooteado tu publicación:"
+ subject: "%{name} ha retooteado tu publicación"
title: Nueva difusión
+ status:
+ subject: "%{name} acaba de publicar"
notifications:
email_events: Eventos para notificaciones por correo electrónico
email_events_hint: 'Selecciona los eventos para los que deseas recibir notificaciones:'
@@ -1049,13 +1091,13 @@ es:
number:
human:
decimal_units:
- format: "%n%u"
+ format: "%n %u"
units:
- billion: B
+ billion: MM
million: M
- quadrillion: Q
+ quadrillion: MB
thousand: m
- trillion: T
+ trillion: B
otp_authentication:
code_hint: Introduce el código generado por tu aplicación de autentificación para confirmar
description_html: Si habilitas autenticación de dos factores a través de una aplicación de autenticación, el ingreso requerirá que estés en posesión de tu teléfono, que generará códigos para que ingreses.
@@ -1116,16 +1158,16 @@ es:
remote_interaction:
favourite:
proceed: Proceder a marcar como favorito
- prompt: 'Quieres marcar como favorito este toot:'
+ prompt: 'Quieres marcar como favorita esta publicación:'
reblog:
proceed: Proceder a retootear
- prompt: 'Quieres retootear este toot:'
+ prompt: 'Quieres retootear esta publicación:'
reply:
proceed: Proceder a responder
- prompt: 'Quieres responder a este toot:'
+ prompt: 'Quieres responder a esta publicación:'
scheduled_statuses:
- over_daily_limit: Ha superado el límite de %{limit} toots programados para ese día
- over_total_limit: Ha superado el límite de %{limit} toots programados
+ over_daily_limit: Ha superado el límite de %{limit} publicaciones programadas para ese día
+ over_total_limit: Ha superado el límite de %{limit} publicaciones programadas
too_soon: La fecha programada debe estar en el futuro
sessions:
activity: Última actividad
@@ -1159,7 +1201,7 @@ es:
chrome_os: ChromeOS
firefox_os: Firefox OS
ios: iOS
- linux: Linux
+ linux: GNU Linux
mac: Mac
other: Desconocido
windows: Windows
@@ -1190,13 +1232,11 @@ es:
relationships: Siguiendo y seguidores
two_factor_authentication: Autenticación de dos factores
webauthn_authentication: Claves de seguridad
- spam_check:
- spam_detected: Este es un informe automatizado. Se ha detectado correo no deseado.
statuses:
attached:
audio:
one: "%{count} audio"
- other: "%{count} audio"
+ other: "%{count} audios"
description: 'Adjunto: %{attached}'
image:
one: "%{count} imagen"
@@ -1216,8 +1256,8 @@ es:
over_character_limit: Límite de caracteres de %{max} superado
pin_errors:
limit: Ya has fijado el número máximo de publicaciones
- ownership: El toot de alguien más no puede fijarse
- private: Los toots no-públicos no pueden fijarse
+ ownership: La publicación de otra persona no puede fijarse
+ private: Las publicaciones no públicas no pueden fijarse
reblog: Un boost no puede fijarse
poll:
total_people:
@@ -1232,8 +1272,9 @@ es:
show_older: Mostrar más antiguos
show_thread: Mostrar discusión
sign_in_to_participate: Regístrate para participar en la conversación
- title: '%{name}: "%{quote}"'
+ title: "%{name}: «%{quote}»"
visibilities:
+ direct: Directa
private: Sólo mostrar a seguidores
private_long: Solo mostrar a tus seguidores
public: Público
@@ -1241,7 +1282,7 @@ es:
unlisted: Público, pero no mostrar en la historia federada
unlisted_long: Todos pueden ver, pero no está listado en las líneas de tiempo públicas
stream_entries:
- pinned: Toot fijado
+ pinned: Publicación fijada
reblogged: retooteado
sensitive_content: Contenido sensible
tags:
@@ -1367,8 +1408,8 @@ es:
explanation:
disable: Mientras su cuenta esté congelada, la información de su cuenta permanecerá intacta, pero no puede realizar ninguna acción hasta que se desbloquee.
sensitive: Los archivos multimedia subidos y vinculados serán tratados como sensibles.
- silence: Mientras su cuenta está limitada, sólo las personas que ya le están siguiendo verán sus toots en este servidor, y puede que se le excluya de varios listados públicos. Sin embargo, otros pueden seguirle manualmente.
- suspend: Su cuenta ha sido suspendida, y todos tus toots y tus archivos multimedia subidos han sido irreversiblemente eliminados de este servidor, y de los servidores donde tenías seguidores.
+ silence: Mientras su cuenta está limitada, sólo las personas que ya te están siguiendo verán tus publicaciones en este servidor, y puede que se te excluya de varios listados públicos. Sin embargo, otros pueden seguirte manualmente.
+ suspend: Su cuenta ha sido suspendida, y todas tus publicaciones y tus archivos multimedia subidos han sido irreversiblemente eliminados de este servidor, y de los servidores donde tenías seguidores.
get_in_touch: Puede responder a esta dirección de correo electrónico para ponerse en contacto con el personal de %{instance}.
review_server_policies: Revisar las políticas del servidor
statuses: 'Específicamente, para:'
@@ -1402,11 +1443,8 @@ es:
tips: Consejos
title: Te damos la bienvenida a bordo, %{name}!
users:
- blocked_email_provider: Este proveedor de correo electrónico no está permitido
follow_limit_reached: No puedes seguir a más de %{limit} personas
generic_access_help_html: "¿Tienes problemas para acceder a tu cuenta? Puedes ponerte en contacto con %{email} para conseguir ayuda"
- invalid_email: La dirección de correo es incorrecta
- invalid_email_mx: La dirección de correo electrónico parece inexistente
invalid_otp_token: Código de dos factores incorrecto
invalid_sign_in_token: Código de seguridad no válido
otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email}
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 17f462da1..6239977c7 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -7,7 +7,6 @@ et:
active_count_after: aktiivne
active_footnote: Igakuiselt aktiivseid kasutajaid (MAU)
administered_by: 'Administraator:'
- api: API
apps: Mobiilrakendused
apps_platforms: Kasuta Mastodoni iOS-is, Androidis ja teistel platvormidel
browse_directory: Sirvi profiilide kataloogi ja filtreeri huvide alusel
@@ -37,7 +36,6 @@ et:
terms: Kasutustingimused
unavailable_content: Sisu pole saadaval
unavailable_content_description:
- domain: Server
reason: Põhjus
rejecting_media: 'Meedia failid sellelt serverilt ei töödelda ega salvestata ning mitte ühtegi eelvaadet ei kuvata, mis nõuab manuaalselt vajutust originaalfailile:'
silenced: 'Postitused nendelt serveritelt peidetakse avalikes ajajoontes ja vestlustes ning mitte ühtegi teavitust ei tehta nende kasutajate tegevustest, välja arvatud juhul, kui Te neid jälgite:'
@@ -74,7 +72,6 @@ et:
other: Tuututused
posts_tab_heading: Tuututused
posts_with_replies: Tuututused ja vastused
- reserved_username: Kasutajanimi on reserveeritud
roles:
admin: Administraator
bot: Robot
@@ -125,7 +122,6 @@ et:
header: Päis
inbox_url: Sisendkausta URL
invited_by: Kutsuja
- ip: IP
joined: Liitus
location:
all: Kõik
@@ -231,42 +227,6 @@ et:
update_announcement: Uuenda teadaannet
update_custom_emoji: Uuendas kohandatud emotikoni
update_status: Uuendas staatust
- actions:
- assigned_to_self_report: "%{name} määras teabe %{target} iseendale"
- change_email_user: "%{name} muutis kasutaja %{target} e-postiaadressit"
- confirm_user: "%{name} kinnitas kasutaja %{target} e-postiaadressi"
- create_account_warning: "%{name} saatis kasutajale %{target} hoiatuse"
- create_announcement: "%{name} lõi uue teadaande %{target}"
- create_custom_emoji: "%{name} laadis üles uue emotikooni %{target}"
- create_domain_allow: "%{name} lisas domeeni %{target} lubatute nimekirja"
- create_domain_block: "%{name} blokeeris domeeni %{target}"
- create_email_domain_block: "%{name} lisas e-posti domeeni %{target} musta nimekirja"
- demote_user: "%{name} alandas kasutaja %{target}"
- destroy_announcement: "%{name} kustutas teadaande %{target}"
- destroy_custom_emoji: "%{name} kustutas emotikooni %{target}"
- destroy_domain_allow: "%{name} eemaldas domeeni %{target} lubatute nimekirjast"
- destroy_domain_block: "%{name} eemaldas blokeeringu domeenilt %{target}"
- destroy_email_domain_block: "%{name} lisas e-posti domeeni %{target} lubatute nimekirja"
- destroy_status: "%{name} eemaldas %{target} staatuse"
- disable_2fa_user: "%{name} eemaldas kaheastmelise autentimise kohustuse kasutajalt %{target}"
- disable_custom_emoji: "%{name} keelas emotikooni %{target}"
- disable_user: "%{name} keelas sisselogimise kasutajal %{target}"
- enable_custom_emoji: "%{name} lubas emotikooni %{target}"
- enable_user: "%{name} lubas sisselogimise kasutajal %{target}"
- memorialize_account: "%{name} muutis %{target}-i kasutaja memoriaaliks"
- promote_user: "%{name} edendas kasutajat %{target}"
- remove_avatar_user: "%{name} kustutas kasutaja %{target} profiilipildi"
- reopen_report: "%{name} taasavas teate %{target}"
- reset_password_user: "%{name} lähtestas parooli kasutajal %{target}"
- resolve_report: "%{name} lahendas teate %{target}"
- silence_account: "%{name} vaigistas %{target}-i kasutaja"
- suspend_account: "%{name} peatas %{target}-i kasutaja"
- unassigned_report: "%{name} eemaldas määratluse teatelt %{target}"
- unsilence_account: "%{name} eemaldas vaigistuse %{target}-i kontolt"
- unsuspend_account: "%{name} eemaldas peatamise %{target}-i kontolt"
- update_announcement: "%{name} uuendas teadaannet %{target}"
- update_custom_emoji: "%{name} uuendas emotikooni %{target}"
- update_status: "%{name} uuendas kasutaja %{target} staatust"
deleted_status: "(kustutatud staatus)"
empty: Logisi ei leitud.
filter_by_action: Filtreeri tegevuse järgi
@@ -329,7 +289,6 @@ et:
feature_profile_directory: Profiilikataloog
feature_registrations: Registreerimised
feature_relay: Föderatsiooni relee
- feature_spam_check: Rämpsposti filter
feature_timeline_preview: Ajajoone eelvaade
features: Omadused
hidden_service: Föderatsioon peidetud teenustega
@@ -432,7 +391,6 @@ et:
all: Kõik
available: Saadaval
expired: Aegunud
- title: Filter
title: Kutsed
pending_accounts:
title: Ootel olevad kasutajad (%{count})
@@ -515,8 +473,6 @@ et:
users: Sisseloginud kohalikele kasutajatele
domain_blocks_rationale:
title: Näita põhjendust
- enable_bootstrap_timeline_accounts:
- title: Luba vaikimisi jälgimisi uutele kasutajatele
hero:
desc_html: Kuvatud kodulehel. Vähemalt 600x100px soovitatud. Kui pole seadistatud, kuvatakse serveri pisililt
title: Maskotipilt
@@ -567,9 +523,6 @@ et:
desc_html: Te saate kirjutada oma privaatsuspoliitika, kasutustingimused jm seaduslikku infot. Te saate kasutada HTMLi silte
title: Kasutustingimused
site_title: Serveri nimi
- spam_check_enabled:
- desc_html: Mastodon suudab automaatselt vaigistada ja teatada kasutajatest, kasutades erinevaid meetmeid, näiteks kui kasutaja saadab korduvalt ebasobivaid sõnumeid. Võib esineda ka valehäireid.
- title: Rämpsposti filter
thumbnail:
desc_html: Kasutatud OpenGraph ja API eelvaadeteks. 1200x630px soovitatud
title: Serveri pisipilt
@@ -604,9 +557,6 @@ et:
accounts_today: Unikaalseid kasutusi täna
accounts_week: Unikaalseid kasutusi see nädal
breakdown: Tänane kasutus allikate kohta
- context: Kontekst
- directory: Kataloogis
- in_directory: "%{count} kataloogis"
last_active: Viimati aktiivne
most_popular: Kõige populaarsemad
most_recent: Viimased
@@ -650,13 +600,11 @@ et:
discovery: Avastus
localization:
body: Mastodon on tõlgitud vabatahtlike poolt.
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Igaüks võib panustada.
sensitive_content: Tundlik sisu
toot_layout: Tuututuse kujundus
application_mailer:
notification_preferences: Muuda e-kirjade eelistusi
- salutation: "%{name},"
settings: 'Muuda e-kirjade eelistusi: %{link}'
view: 'Vaade:'
view_profile: Vaata profiili
@@ -688,9 +636,6 @@ et:
migrate_account: Koli teisele kasutajale
migrate_account_html: Kui Te soovite seda kontot ümber viia teisele, saate teha seda siit.
or_log_in_with: Või logi sisse koos
- providers:
- cas: CAS
- saml: SAML
register: Loo konto
registration_closed: "%{instance} ei võta vastu uusi liikmeid"
resend_confirmation: Saada kinnitusjuhendid uuesti
@@ -739,13 +684,10 @@ et:
about_x_years: "%{count}a"
almost_x_years: "%{count}a"
half_a_minute: Just praegu
- less_than_x_minutes: "%{count}m"
less_than_x_seconds: Just praegu
over_x_years: "%{count}a"
x_days: "%{count}p"
- x_minutes: "%{count}m"
x_months: "%{count}k"
- x_seconds: "%{count}s"
deletes:
challenge_not_passed: Informatsioon, mida sisestasite, oli vale
confirm_password: Sisesta oma praegune salasõna, et kinnitada oma identiteet
@@ -796,7 +738,6 @@ et:
request: Taotle oma arhiivi
size: Suurus
blocks: Teie blokeerite
- csv: CSV
domain_blocks: Domeeni blokeeringud
lists: Nimistud
mutes: Teie vaigistate
@@ -981,11 +922,7 @@ et:
number:
human:
decimal_units:
- format: "%n%u"
units:
- billion: B
- million: M
- quadrillion: Q
thousand: T
trillion: Tr
pagination:
@@ -993,7 +930,6 @@ et:
next: Järgmine
older: Vanemad
prev: Eelm
- truncate: "…"
polls:
errors:
already_voted: Olete siin juba hääletanud
@@ -1056,40 +992,13 @@ et:
activity: Viimane aktiivsus
browser: Veebilehitseja
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Tundmatu veebilehitseja
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Praegune seanss
description: "%{browser} platvormil %{platform}"
explanation: Need on praegused veebilehitsejad, mis on sisse logitud Teie Mastodoni kontosse.
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
mac: Mac
other: tundmatu platvorm
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Tühista
revoke_success: Seanssi tühistamine õnnestus
title: Seanssid
@@ -1114,17 +1023,12 @@ et:
profile: Profiil
relationships: Jälgitud ja jälgijad
two_factor_authentication: Kahesammuline autentimine
- spam_check:
- spam_detected: See on automatiseeritud teavitus. Rämpspost on tuvastatud.
statuses:
attached:
description: 'Manused: %{attached}'
image:
one: "%{count} pilt"
other: "%{count} pilti"
- video:
- one: "%{count} video"
- other: "%{count} videot"
boosted_from_html: Upitatud %{acct_link}
content_warning: 'Sisu hoiatus: %{warning}'
disallowed_hashtags:
@@ -1151,7 +1055,6 @@ et:
show_more: Näita rohkem
show_thread: Kuva lõim
sign_in_to_participate: Logi sisse, et liituda vestlusega
- title: '%{name}: "%{quote}"'
visibilities:
private: Ainult jälgijatele
private_long: Näita ainult jälgijatele
@@ -1226,7 +1129,6 @@ et:
title: Tere tulemast pardale, %{name}!
users:
follow_limit_reached: Te ei saa jälgida rohkem kui %{limit} inimest
- invalid_email: See e-posti aadress on vale
invalid_otp_token: Vale kaheastmelise autentimise kood
otp_lost_help_html: Kui Te kaotasite ligipääsu mõlemale, saate võtta ühendust %{email}-iga
seamless_external_login: Te olete sisse loginud läbi väljaspool asuva teenusega, niiet salasõna ja e-posti sätted pole saadaval.
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index cd82a5d9a..cd84e5d17 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -1,8 +1,8 @@
---
eu:
about:
- about_hashtag_html: Hauek #%{hashtag} traola duten toot publikoak dira. Fedibertsoko edozein kontu baduzu harremanetan jarri zaitezke.
- about_mastodon_html: Mastodon web protokolo ireki eta libreak darabiltzan gizarte sare bat da. E-mail sarea bezala deszentralizatua da.
+ about_hashtag_html: Hauek #%{hashtag} traola duten bidalketa publikoak dira. Fedibertsoko edozein kontu baduzu harremanetan jarri zaitezke.
+ about_mastodon_html: 'Etorkizuneko sare soziala: ez iragarkirik eta ez zelatatze korporatiborik, diseinu etikoa eta deszentralizazioa! Izan zure datuen jabea Mastodonekin!'
about_this: Honi buruz
active_count_after: aktibo
active_footnote: Hilabeteko erabiltzaile aktiboak (HEA)
@@ -11,8 +11,8 @@ eu:
apps: Aplikazio mugikorrak
apps_platforms: Erabili Mastodon, iOS, Android eta beste plataformetatik
browse_directory: Arakatu profilen direktorio bat eta iragazi interesen arabera
- browse_local_posts: Ikusi zerbitzari honetako mezu publikoen zuzeneko jario bat
- browse_public_posts: Arakatu Mastodoneko mezu publikoen zuzeneko jario bat
+ browse_local_posts: Arakatu zerbitzari honetako bidalketa publikoen zuzeneko jario bat
+ browse_public_posts: Arakatu Mastodoneko bidalketa publikoen zuzeneko jario bat
contact: Kontaktua
contact_missing: Ezarri gabe
contact_unavailable: E/E
@@ -21,17 +21,17 @@ eu:
federation_hint_html: "%{instance} instantzian kontu bat izanda edozein Mastodon zerbitzariko jendea jarraitu ahal izango duzu, eta harago ere."
get_apps: Probatu mugikorrerako aplikazio bat
hosted_on: Mastodon %{domain} domeinuan ostatatua
- instance_actor_flash: 'Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke.
-
-'
+ instance_actor_flash: "Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke. \n"
learn_more: Ikasi gehiago
privacy_policy: Pribatutasun politika
+ rules: Zerbitzariaren arauak
+ rules_html: 'Behean Mastodon zerbitzari honetan kontua eduki nahi baduzu jarraitu beharreko arauen laburpena daukazu:'
see_whats_happening: Ikusi zer gertatzen ari den
server_stats: 'Zerbitzariaren estatistikak:'
source_code: Iturburu kodea
status_count_after:
- one: mezu
- other: mezu
+ one: bidalketa
+ other: bidalketa
status_count_before: Hauek
tagline: Jarraitu lagunak eta egin berriak
terms: Erabilera baldintzak
@@ -40,8 +40,11 @@ eu:
domain: Zerbitzaria
reason: Arrazoia
rejecting_media: 'Zerbitzari hauetako multimedia fitxategiak ez dira prozesatuko ez gordeko, eta ez dira iruditxoak bistaratuko, jatorrizko irudira joan behar izango da klik eginez:'
- silenced: 'Zerbitzari hauetako mezuak denbora-lerro eta elkarrizketa publikoetan ezkutatuko dira, eta bere erabiltzaileen interakzioek ez dute jakinarazpenik sortuko ez badituzu jarraitzen:'
+ rejecting_media_title: Iragazitako multimedia
+ silenced: 'Zerbitzari hauetako bidalketak denbora-lerro eta elkarrizketa publikoetan ezkutatuko dira, eta bere erabiltzaileen interakzioek ez dute jakinarazpenik sortuko ez badituzu jarraitzen:'
+ silenced_title: Isilarazitako zerbitzariak
suspended: 'Ez da zerbitzari hauetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari hauetako erabiltzaileekin komunikatzea ezinezkoa eginez:'
+ suspended_title: Kanporatutako zerbitzariak
unavailable_content_html: Mastodonek orokorrean fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikustea eta beraiekin aritzea ahalbidetzen dizu. Salbuespena egin da zerbitzari zehatz honekin.
user_count_after:
one: erabiltzaile
@@ -57,6 +60,7 @@ eu:
one: Jarraitzaile
other: jarraitzaile
following: Jarraitzen
+ instance_actor_flash: Kontu hau zerbitzaria adierazten duen aktore birtual bat da eta ez banako erabiltzaile bat. Federatzeko helburuarekin erabiltzen da eta ez da kanporatu behar.
joined: "%{date}(e)an elkartua"
last_active: azkenekoz aktiboa
link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}'
@@ -70,11 +74,10 @@ eu:
pin_errors:
following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu
posts:
- one: Toot
- other: Toot
- posts_tab_heading: Tootak
- posts_with_replies: Tootak eta erantzunak
- reserved_username: Erabiltzaile-izena erreserbatuta dago
+ one: Bidalketa
+ other: Bidalketa
+ posts_tab_heading: Bidalketa
+ posts_with_replies: Bidalketak eta erantzunak
roles:
admin: Administratzailea
bot: Bot-a
@@ -95,6 +98,7 @@ eu:
add_email_domain_block: Sartu domeinua zerrenda beltzean
approve: Onartu
approve_all: Onartu denak
+ approved_msg: "%{username} erabiltzailearen erregistratzeko eskaera behar bezala onartu da"
are_you_sure: Ziur zaude?
avatar: Abatarra
by_domain: Domeinua
@@ -108,8 +112,10 @@ eu:
confirm: Berretsi
confirmed: Berretsita
confirming: Berresten
+ delete: Ezabatu datuak
deleted: Ezabatua
demote: Jaitsi mailaz
+ destroyed_msg: "%{username} erabiltzailearen datuak behin betiko ezabatzeko ilaran daude"
disable: Desgaitu
disable_two_factor_authentication: Desgaitu 2FA
disabled: Desgaituta
@@ -120,10 +126,12 @@ eu:
email_status: Posta elektronikoaren egoera
enable: Gaitu
enabled: Gaituta
+ enabled_msg: "%{username} kontua behar bezala desblokeatu da"
followers: Jarraitzaileak
follows: Jarraitzen du
header: Goiburua
inbox_url: Sarrera ontziaren URL-a
+ invite_request_text: Bat egiteko arrazoiak
invited_by: 'Honek gonbidatua:'
ip: IP-a
joined: Elkartuta
@@ -135,6 +143,8 @@ eu:
login_status: Saioaren egoera
media_attachments: Multimedia eranskinak
memorialize: Bihurtu memoriala
+ memorialized: Oroigarri bihurtua
+ memorialized_msg: "%{username} behar bezala bihurtu da oroigarri kontu"
moderation:
active: Aktiboa
all: Denak
@@ -155,10 +165,14 @@ eu:
public: Publikoa
push_subscription_expires: Push harpidetzaren iraugitzea
redownload: Freskatu profila
+ redownloaded_msg: "%{username} erabiltzailearen profila behar bezala freskatu da jatorritik"
reject: Ukatu
reject_all: Ukatu denak
+ rejected_msg: "%{username} erabiltzailearen izen emate eskaera behar bezala ukatu da"
remove_avatar: Kendu abatarra
remove_header: Kendu goiburua
+ removed_avatar_msg: "%{username} erabiltzailearen avatarra behar bezala kendu da"
+ removed_header_msg: "%{username} erabiltzailearen goiburuko irudia behar bezala kendu da"
resend_confirmation:
already_confirmed: Erabiltzaile hau berretsita dago
send: Birbidali baieztapen e-maila
@@ -175,22 +189,30 @@ eu:
search: Bilatu
search_same_email_domain: E-mail domeinu bera duten beste erabiltzailean
search_same_ip: IP bera duten beste erabiltzaileak
+ sensitive: Hunkigarria
+ sensitized: hunkigarri gisa markatua
shared_inbox_url: Partekatutako sarrera ontziaren URL-a
show:
created_reports: Sortutako txostenak
targeted_reports: Besteen salaketak
silence: Isilarazi
silenced: Isilarazita
- statuses: Mezuak
+ statuses: Bidalketa
subscribe: Harpidetu
suspended: Kanporatuta
+ suspension_irreversible: Kontu honen datuak behin betiko ezabatu dira. Kontua kanporatzea atzera bota dezakezu, berriz erabilgarri izan dadin, baina datuak ezingo dira berreskuratu.
+ suspension_reversible_hint_html: Kontu hau kanporatua izan da eta bere datuak %{date}(e)an behin betiko ezabatuko dira. Ordura arte kontua kalterik gabe leheneratu daiteke. Kontuaren datu guztiak oraintxe bertan ezabatu nahi badituzu, jarraian egin dezakezu.
time_in_queue: Kolan zain %{time}
title: Kontuak
unconfirmed_email: Baieztatu gabeko e-mail helbidea
+ undo_sensitized: Desegin hunkigarria
undo_silenced: Utzi isilarazteari
undo_suspension: Desegin kanporatzea
+ unsilenced_msg: "%{username} kontuaren mugak behar bezala kendu dira"
unsubscribe: Kendu harpidetza
+ unsuspended_msg: "%{username} kontuaren kanporatzea behar bezala bota da atzera"
username: Erabiltzaile-izena
+ view_domain: Ikusi domeinuaren laburpena
warn: Abisatu
web: Weba
whitelisted: Zerrenda zurian
@@ -205,55 +227,83 @@ eu:
create_domain_allow: Sortu domeinu baimena
create_domain_block: Sortu domeinu blokeoa
create_email_domain_block: Sortu e-mail domeinu blokeoa
+ create_ip_block: Sortu IP araua
+ create_unavailable_domain: Sortu eskuragarri ez dagoen domeinua
+ demote_user: Jaitsi erabiltzailearen maila
destroy_announcement: Ezabatu iragarpena
destroy_custom_emoji: Ezabatu emoji pertsonalizatua
destroy_domain_allow: Ezabatu domeinu baimena
destroy_domain_block: Ezabatu domeinu blokeoa
destroy_email_domain_block: Ezabatu e-mail domeinu blokeoa
- destroy_status: Ezabatu mezua
+ destroy_ip_block: Ezabatu IP araua
+ destroy_status: Ezabatu bidalketa
+ destroy_unavailable_domain: Ezabatu eskuragarri ez dagoen domeinua
disable_2fa_user: Desgaitu 2FA
disable_custom_emoji: Desgaitu emoji pertsonalizatua
disable_user: Desgaitu erabiltzailea
enable_custom_emoji: Gaitu emoji pertsonalizatua
enable_user: Gaitu erabiltzailea
+ memorialize_account: Bihurtu kontua oroigarri
+ promote_user: Igo erabiltzailea mailaz
+ remove_avatar_user: Kendu abatarra
+ reopen_report: Berrireki txostena
+ reset_password_user: Berrezarri pasahitza
+ resolve_report: Konpondu txostena
+ sensitive_account: Markatu zure kontuko multimedia hunkigarri bezala
+ silence_account: Isilarazi kontua
+ suspend_account: Kanporatu kontua
+ unassigned_report: Kendu txostenaren esleipena
+ unsensitive_account: Utzi zure kontuko multimedia hunkigarri bezala markatzeari
+ unsilence_account: Utzi kontua isilarazteari
+ unsuspend_account: Atzera bota kontua kanporatzea
update_announcement: Eguneratu iragarpena
+ update_custom_emoji: Eguneratu emoji pertsonalizatua
+ update_domain_block: Eguneratu domeinu-blokeoa
+ update_status: Eguneratu bidalketa
actions:
- assigned_to_self_report: "%{name}(e)k %{target} salaketa bere buruari esleitu dio"
- change_email_user: "%{name}(e)k %{target}(r)en e-mail helbidea aldatu du"
- confirm_user: "%{name}(e)k %{target}(r)en e-mail helbidea berretsi du"
- create_account_warning: "%{name}-k abisua bidali dio %{target}-ri"
- create_announcement: "%{name}(e)k %{target}(e)rako iragarpen berria sortu du"
- create_custom_emoji: "%{name}(e)k emoji berria kargatu du %{target}"
- create_domain_allow: "%{name}(e)k %{target} domeinua zerrenda zurian zartu du"
- create_domain_block: "%{name}(e)k %{target} domeinua blokeatu du"
- create_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda beltzean sartu du"
- demote_user: "%{name}(e)k %{target} mailaz jaitsi du"
- destroy_announcement: "%{name}(e)k %{target}(e)rako iragarpena kendu du"
- destroy_custom_emoji: "%{name} erabiltzaileak %{target} emojia suntsitu du"
- destroy_domain_allow: "%{name}(e)k %{target} domeinua zerrenda zuritik kendu du"
- destroy_domain_block: "%{name}(e)k %{target} domeinua desblokeatu du"
- destroy_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda zurian sartu du"
- destroy_status: "%{name}(e)k %{target}(e)n egoera kendu du"
- disable_2fa_user: "%{name}(e)k %{target}(r)i bi faktoreetako eskaera kendu dio"
- disable_custom_emoji: "%{name}(e)k %{target} emoji-a desgaitu du"
- disable_user: "%{name}(e)k %{target}(r)en saioa desgaitu du"
- enable_custom_emoji: "%{name}(e)k %{target} emoji-a gaitu du"
- enable_user: "%{name}(e)k %{target} erabiltzailearen saioa gaitu du"
- memorialize_account: "%{name}(e)k %{target}(r)en kontua memoriala bihurtu du"
- promote_user: "%{name}(e)k %{target}(r)en kategoria igo du"
- remove_avatar_user: "%{name}(e)k %{target}(r)en abatarra kendu du"
- reopen_report: "%{name}(e)k %{target}(r)en salaketa berrireki du"
- reset_password_user: "%{name}(e)k %{target}(r)en pasahitza berrezarri du"
- resolve_report: "%{name}(e)k %{target}(r)en salaketa konpondu du"
- silence_account: "%{name}(e)k %{target}(r)en kontua isilarazi du"
- suspend_account: "%{name}(e)k %{target} kontua kanporatu du"
- unassigned_report: "%{name}(e)k %{target} txotenaren esleipena atzera bota du"
- unsilence_account: "%{name}(e)k %{target} isilarazteko agindua kendu du"
- unsuspend_account: "%{name}(e)k %{target} kontuaren kanporaketa atzera bota du"
- update_announcement: "%{name}(e)k %{target}(e)rako iragarpena eguneratu du du"
- update_custom_emoji: "%{name}(e)k %{target} emoji-a eguneratu du"
- update_status: "%{name} (e)k %{target}(r)en mezua aldatu du"
- deleted_status: "(ezabatutako mezua)"
+ assigned_to_self_report_html: "%{name} erabiltzaileak %{target} salaketa bere buruari esleitu dio"
+ change_email_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea aldatu du"
+ confirm_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea berretsi du"
+ create_account_warning_html: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari"
+ create_announcement_html: "%{name} erabiltzaileak %{target} iragarpen berria sortu du"
+ create_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji berria kargatu du"
+ create_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federazioa onartu du"
+ create_domain_block_html: "%{name} erabiltzaileak %{target} domeinua blokeatu du"
+ create_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua blokeatu du"
+ create_ip_block_html: "%{name} kontuak %{target} IParen araua sortu du"
+ create_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketa gelditu du"
+ demote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz jaitsi du"
+ destroy_announcement_html: "%{name} erabiltzaileak %{target} iragarpena ezabatu du"
+ destroy_custom_emoji_html: "%{name} erabiltzaileak %{target} emojia suntsitu du"
+ destroy_domain_allow_html: "%{name} erabiltzaileak %{target} domeinuarekin federatzea debekatu du"
+ destroy_domain_block_html: "%{name} erabiltzaileak %{target} domeinua desblokeatu du"
+ destroy_email_domain_block_html: "%{name} erabiltzaileak %{target} e-posta helbideen domeinua desblokeatu du"
+ destroy_ip_block_html: "%{name} erabiltzaileak %{target} IParen araua ezabatu du"
+ destroy_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa kendu du"
+ destroy_unavailable_domain_html: "%{name}(e)k %{target} domeinurako banaketari berrekin dio"
+ disable_2fa_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen bi faktoreko autentifikazioa desgaitu du"
+ disable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a desgaitu du"
+ disable_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen saioa desgaitu du"
+ enable_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a gaitu du"
+ enable_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen saioa gaitu du"
+ memorialize_account_html: "%{name} erabiltzaileak %{target} kontua memoriala bihurtu du"
+ promote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz igo du"
+ remove_avatar_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen abatarra kendu du"
+ reopen_report_html: "%{name} erabiltzaileak %{target} txostena berrireki du"
+ reset_password_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen pasahitza berrezarri du"
+ resolve_report_html: "%{name} erabiltzaileak %{target} txostena konpondu du"
+ sensitive_account_html: "%{name} erabiltzaileak %{target} erabiltzailearen multimedia hunkigarri bezala markatu du"
+ silence_account_html: "%{name} erabiltzaileak %{target} kontua isilarazi du"
+ suspend_account_html: "%{name} erabiltzaileak %{target} kontua kanporatu du"
+ unassigned_report_html: "%{name} erabiltzaileak %{target} txostenaren esleipena atzera bota du"
+ unsensitive_account_html: "%{name} erabiltzaileak %{target} erabiltzailearen multimedia hunkigarri bezala markatzeari utzi dio"
+ unsilence_account_html: "%{name} erabiltzaileak %{target} kontua isilarazteari utzi dio"
+ unsuspend_account_html: "%{name} erabiltzaileak %{target} kontuaren kanporaketa atzera bota du"
+ update_announcement_html: "%{name} erabiltzaileak %{target} iragarpena eguneratu du"
+ update_custom_emoji_html: "%{name} erabiltzaileak %{target} emoji-a eguneratu du"
+ update_domain_block_html: "%{name} erabiltzaileak %{target} domeinu-blokeoa eguneratu du"
+ update_status_html: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketa eguneratu du"
+ deleted_status: "(ezabatutako bidalketa)"
empty: Ez da egunkaririk aurkitu.
filter_by_action: Iragazi ekintzen arabera
filter_by_user: Iragazi erabiltzaileen arabera
@@ -267,10 +317,12 @@ eu:
new:
create: Sortu iragarpena
title: Iragarpen berria
+ publish: Argitaratu
published_msg: Iragarpena ongi argitaratu da!
scheduled_for: "%{time}-rako programatuta"
scheduled_msg: Iragarpena argitaratzeko programatuta!
title: Iragarpenak
+ unpublish: Desargitaratu
unpublished_msg: Iragarpena ongi desargitaratu da!
updated_msg: Iragarpena ongi eguneratu da!
custom_emojis:
@@ -295,6 +347,7 @@ eu:
listed: Zerrendatua
new:
title: Gehitu emoji pertsonal berria
+ not_permitted: Ez daukazu ekintza hau burutzeko baimenik
overwrite: Gainidatzi
shortcode: Laster-kodea
shortcode_hint: Gutxienez 2 karaktere, alfanumerikoak eta azpimarra besterik ez
@@ -314,7 +367,6 @@ eu:
feature_profile_directory: Profil-direktorioa
feature_registrations: Izen emateak
feature_relay: Federazio errelea
- feature_spam_check: Anti-spam
feature_timeline_preview: Denbora-lerroaren aurrebista
features: Ezaugarriak
hidden_service: Federazioa ezkutuko zerbitzuekin
@@ -349,11 +401,13 @@ eu:
create: Sortu blokeoa
hint: Domeinuaren blokeoak ez du eragotziko kontuen sarrerak sortzea datu-basean, baina automatikoki ezarriko zaizkie moderazio metodo bereziak iraganeko mezuetan ere.
severity:
- desc_html: "Isilarazi-k kontuko mezuak jarraitzaileek besterik ez ikustea eragingo du. Kanporatu-k kontuaren edukia, multimedia eta profileko datuak ezabatuko ditu. Bat ere ez nahi duzun guztia multimedia fitxategiak ukatzea bada."
+ desc_html: "Isilarazi-k kontuko bidalketak jarraitzaileek besterik ez ikustea eragingo du. Kanporatu-k kontuaren edukia, multimedia eta profileko datuak ezabatuko ditu. Bat ere ez nahi duzun guztia multimedia fitxategiak ukatzea bada."
noop: Bat ere ez
silence: Isilarazi
suspend: Kanporatu
title: Domeinuaren blokeo berria
+ obfuscate: Lausotu domeinu-izena
+ obfuscate_hint: Domeinuaren izena partzialki lausotu zerrendan, domeinuen zerrenda iragartzea mugatzea gaituta badago
private_comment: Iruzkin pribatua
private_comment_hint: Domeinu hau mugatzeari buruzko iruzkina moderatzaileen barne erabilerarako.
public_comment: Iruzkin publikoa
@@ -390,9 +444,35 @@ eu:
create: Gehitu domeinua
title: Sarrera berria e-mail zerrenda beltzean
title: E-mail zerrenda beltza
+ follow_recommendations:
+ description_html: "Jarraitzeko gomendioek erabiltzaile berriei eduki interesgarria azkar aurkitzen laguntzen diete. Erabiltzaile batek jarraitzeko gomendio pertsonalizatuak jasotzeko adina interakzio izan ez duenean, kontu hauek gomendatzen zaizkio. Egunero birkalkulatzen dira hizkuntza bakoitzerako, azken aldian parte-hartze handiena izan duten eta jarraitzaile lokal gehien dituzten kontuak nahasiz."
+ language: Hizkuntza
+ status: Egoera
+ suppress: Kendu jarraitzeko gomendioa
+ suppressed: Kenduta
+ title: Jarraitzeko gomendioak
+ unsuppress: Berrezarri jarraitzeko gomendioa
instances:
+ back_to_all: Guztiak
+ back_to_limited: Mugatua
+ back_to_warning: Abisua
by_domain: Domeinua
+ delivery:
+ all: Guztiak
+ clear: Garbitu banaketa erroreak
+ restart: Berrabiarazi banaketa
+ stop: Gelditu banaketa
+ title: Banaketa
+ unavailable: Eskuraezina
+ unavailable_message: Banaketa ez dago eskuragarri
+ warning: Abisua
+ warning_message:
+ one: Banaketa hutsegitea egun %{count}
+ other: Banaketa hutsegitea %{count} egun
delivery_available: Bidalketa eskuragarri dago
+ delivery_error_days: Banaketa errore egunak
+ delivery_error_hint: Banaketa ezin bada %{count} egunean egin, banaezin bezala markatuko da automatikoki.
+ empty: Ez da domeinurik aurkitu.
known_accounts:
one: Kontu ezagun %{count}
other: "%{count} kontu ezagun"
@@ -416,6 +496,21 @@ eu:
expired: Iraungitua
title: Iragazi
title: Gonbidapenak
+ ip_blocks:
+ add_new: Sortu araua
+ created_msg: IP arau berria behar bezala gehitu da
+ delete: Ezabatu
+ expires_in:
+ '1209600': 2 aste
+ '15778476': 6 hilabete
+ '2629746': Hilabete 1
+ '31556952': Urte 1
+ '86400': Egun 1
+ '94670856': 3 urte
+ new:
+ title: Sortu IP arau berria
+ no_ip_block_selected: Ez da IP araurik aldatu, ez delako batere hautatu
+ title: IP arauak
pending_accounts:
title: Zain dauden kontuak (%{count})
relationships:
@@ -423,11 +518,11 @@ eu:
relays:
add_new: Gehitu hari errelea
delete: Ezabatu
- description_html: "Federazio errele bat zerbitzari tartekari bat da, bertara harpidetutako eta bertan argitaratzen duten zerbitzarien artean toot publiko kopuru handiak banatzen ditu. Zerbitzari txiki eta ertainei Fedibertsoko edukia aurkitzen laguntzen die, bestela erabiltzaile lokalek eskuz jarraitu beharko lituzkete urruneko zerbitzarietako erabiltzaileak."
+ description_html: "Federazio errele bat zerbitzari tartekari bat da, bertara harpidetutako eta bertan argitaratzen duten zerbitzarien artean bidalketa publiko kopuru handiak banatzen ditu. Zerbitzari txiki eta ertainei Fedibertsoko edukia aurkitzen laguntzen die, bestela erabiltzaile lokalek eskuz jarraitu beharko lituzkete urruneko zerbitzarietako erabiltzaileak."
disable: Desgaitu
disabled: Desgaituta
enable: Gaitu
- enable_hint: Behin gaituta, zure zerbitzaria errele honetako toot publiko guztietara harpidetuko da, eta zerbitzari honetako toot publikoak errelera bidaltzen hasiko da.
+ enable_hint: Behin gaituta, zure zerbitzaria errele honetako bidalketa publiko guztietara harpidetuko da, eta zerbitzari honetako bidalketa publikoak errelera bidaltzen hasiko da.
enabled: Gaituta
inbox_url: Errelearen URLa
pending: Erreleak onartzearen zain
@@ -455,6 +550,8 @@ eu:
comment:
none: Bat ere ez
created_at: Salatua
+ forwarded: Birbidalia
+ forwarded_to: 'Hona birbidalia: %{domain}'
mark_as_resolved: Markatu konpondutako gisa
mark_as_unresolved: Markatu konpondu gabeko gisa
notes:
@@ -474,9 +571,16 @@ eu:
unassign: Kendu esleipena
unresolved: Konpondu gabea
updated_at: Eguneratua
+ rules:
+ add_new: Gehitu araua
+ delete: Ezabatu
+ description_html: Gehienek erabilera baldintzak irakurri eta onartu dituztela baieztatzen badute ere, orokorrean arazoren bat dagoen arte ez dituzte irakurtzen. Zerbitzariaren arauak begirada batean ikustea errazteko buletadun zerrenda batean bildu. Saiatu arauak labur eta sinple idazten, baina elementu askotan banatu gabe.
+ edit: Editatu araua
+ empty: Ez da zerbitzariko araurik definitu oraindik.
+ title: Zerbitzariaren arauak
settings:
activity_api_enabled:
- desc_html: Lokalki bidalitako mezu kopurua, erabiltzaile aktiboak, eta izen emate berriak asteko
+ desc_html: Lokalki argitaratutako bidalketa kopurua, erabiltzaile aktiboak, eta izen emate berriak asteko
title: Argitaratu erabiltzaile-jardueraren estatistikak
bootstrap_timeline_accounts:
desc_html: Banandu erabiltzaile-izenak koma bitartez. Giltzapetu gabeko kontu lokalekin dabil bakarrik. Hutsik dagoenean lehenetsitakoa admin lokal guztiak da.
@@ -497,8 +601,6 @@ eu:
users: Saioa hasita duten erabiltzaile lokalei
domain_blocks_rationale:
title: Erakutsi arrazoia
- enable_bootstrap_timeline_accounts:
- title: Gaitu lehenetsitako jarraipena erabiltzaile berrientzat
hero:
desc_html: Azaleko orrian bistaratua. Gutxienez 600x100px aholkatzen da. Ezartzen ez bada, zerbitzariaren irudia hartuko du
title: Azaleko irudia
@@ -524,6 +626,9 @@ eu:
min_invite_role:
disabled: Inor ez
title: Baimendu hauen gobidapenak
+ require_invite_text:
+ desc_html: Izen emateak eskuz onartu behar direnean, "Zergatik elkartu nahi duzu?" testu sarrera derrigorrezko bezala ezarri, ez hautazko
+ title: Eskatu erabiltzaile berriei bat egiteko arrazoia sartzeko
registrations_mode:
modes:
approved: Izena emateko onarpena behar da
@@ -549,9 +654,6 @@ eu:
desc_html: Zure pribatutasun politika, erabilera baldintzak eta bestelako testu legalak idatzi ditzakezu. HTML etiketak erabili ditzakezu
title: Erabilera baldintza pertsonalizatuak
site_title: Zerbitzariaren izena
- spam_check_enabled:
- desc_html: Mastodonek automatikoki isildu eta salatu ditzake kontuak neurriei jarraituz, esaterako eskatu gabeko mezuak behin eta berriro bidaltzen dituzten kontuak antzemanez. Positibo faltsuak gertatu daitezke.
- title: Anti-spam
thumbnail:
desc_html: Aurrebistetarako erabilia OpenGraph eta API bidez. 1200x630px aholkatzen da
title: Zerbitzariaren iruditxoa
@@ -579,16 +681,21 @@ eu:
media:
title: Multimedia
no_media: Multimediarik ez
- no_status_selected: Ez da mezurik aldatu ez delako mezurik aukeratu
- title: Kontuaren mezuak
+ no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu
+ title: Kontuaren bidalketak
with_media: Multimediarekin
+ system_checks:
+ database_schema_check:
+ message_html: Aplikatu gabeko datu-basearen migrazioak daude. Exekutatu aplikazioak esperotako portaera izan dezan
+ rules_check:
+ action: Kudeatu zerbitzariaren arauak
+ message_html: Ez duzu zerbitzariaren araurik definitu.
+ sidekiq_process_check:
+ message_html: Ez da ari Sidekiq prozesurik exekutatzen %{value} ilad(et)an. Egiaztatu Sidekiq konfigurazioa
tags:
accounts_today: Erabilera bakanak gaur
accounts_week: Erabilera bakanak aste honetan
breakdown: Gaurko erabilera iturriaren arabera
- context: Testuingurua
- directory: Direktorioan
- in_directory: "%{count} direktorioan"
last_active: Azkenekoz aktiboa
most_popular: Erabilienak
most_recent: Azkenak
@@ -597,7 +704,7 @@ eu:
reviewed: Berrikusita
title: Traolak
trending_right_now: Joera orain
- unique_uses_today: "%{count} idazten gaur"
+ unique_uses_today: "%{count} bidalketa gaur"
unreviewed: Berrikusi gabe
updated_msg: Traola-ezarpenak ongi eguneratu dira
title: Administrazioa
@@ -605,6 +712,7 @@ eu:
add_new: Gehitu berria
delete: Ezabatu
edit_preset: Editatu abisu aurre-ezarpena
+ empty: Ez duzu abisu aurrezarpenik definitu oraindik.
title: Kudeatu abisu aurre-ezarpenak
admin_mailer:
new_pending_account:
@@ -635,14 +743,14 @@ eu:
guide_link: https://crowdin.com/project/mastodon
guide_link_text: Edonork lagundu dezake.
sensitive_content: Eduki hunkigarria
- toot_layout: Toot disposizioa
+ toot_layout: Bidalketen diseinua
application_mailer:
notification_preferences: Aldatu e-mail hobespenak
salutation: "%{name},"
settings: 'Aldatu e-mail hobespenak: %{link}'
view: 'Ikusi:'
view_profile: Ikusi profila
- view_status: Ikusi mezua
+ view_status: Ikusi bidalketa
applications:
created: Aplikazioa ongi sortu da
destroyed: Aplikazioa ongi ezabatu da
@@ -661,10 +769,13 @@ eu:
description:
prefix_invited_by_user: "@%{name} erabiltzaileak Mastodon zerbitzari honetara elkartzera gonbidatzen zaitu!"
prefix_sign_up: Eman izena Mastodon-en!
- suffix: Kontu bat baduzu, jendea jarraitu ahal izango duzu, mezuak bidali eta Mastodon zein kanpoko zerbitzarietako erabiltzaileekin elkarrizketan aritu!
+ suffix: Kontu bat baduzu, jendea jarraitu ahal izango duzu, bidalketak sortu eta Mastodon zein kanpoko zerbitzarietako erabiltzaileekin elkarrizketan aritu!
didnt_get_confirmation: Ez dituzu berresteko argibideak jaso?
+ dont_have_your_security_key: Ez daukazu zure segurtasun gakoa?
forgot_password: Pasahitza ahaztu duzu?
invalid_reset_password_token: Pasahitza berrezartzeko token-a baliogabea da edo iraungitu du. Eskatu beste bat.
+ link_to_otp: Erabili zure mugikorreko bi faktoreko kodea edo berreskuratze kode bat
+ link_to_webauth: Erabili zure segurtasun gako gailua
login: Hasi saioa
logout: Amaitu saioa
migrate_account: Migratu beste kontu batera
@@ -689,7 +800,9 @@ eu:
functional: Zure kontua guztiz erabilgarri dago.
pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu.
redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako.
+ too_fast: Formularioa azkarregi bidali duzu, saiatu berriro.
trouble_logging_in: Arazoak saioa hasteko?
+ use_security_key: Erabili segurtasun gakoa
authorize_follow:
already_following: Kontu hau aurretik jarraitzen duzu
already_requested: Bidali duzu dagoeneko kontu hori jarraitzeko eskaera bat
@@ -707,9 +820,14 @@ eu:
hint_html: "Oharra: Ez dizugu pasahitza berriro eskatuko ordu batez."
invalid_password: Pasahitz baliogabea
prompt: Berretsi pasahitza jarraitzeko
+ crypto:
+ errors:
+ invalid_key: ez da baliozko Ed25519 edo Curve25519 gakoa
+ invalid_signature: ez da baliozko Ed25519 sinadura
date:
formats:
default: "%Y(e)ko %b %d"
+ with_month_name: "%Y(e)ko %B %d"
datetime:
distance_in_words:
about_x_hours: "%{count}h"
@@ -733,7 +851,7 @@ eu:
warning:
before: 'Jarraitu aurretik, irakurri adi ohar hauek:'
caches: Beste zerbitzariek cachean duten edukia mantentzea gerta daiteke
- data_removal: Zure mezuak eta beste datuak behin betiko ezabatuko dira
+ data_removal: Zure bidalketak eta beste datuak behin betiko ezabatuko dira
email_change_html: Zure e-mail helbidea aldatu dezakezu kontua ezabatu gabe
email_contact_html: Oraindik heltzen ez bada, e-mail bai bidali dezakezu %{email} helbidera laguntza eskatzeko
email_reconfirmation_html: Ez baduzu baieztamen e-maila jasotzen, berriro eskatu dezakezu
@@ -769,11 +887,12 @@ eu:
archive_takeout:
date: Data
download: Deskargatu zure artxiboa
- hint_html: Zure toot eta igotako multimediaren artxibo bat eskatu dezakezu. Esportatutako datuak ActivityPub formatua izango dute, bateragarria den edozein programarekin irakurtzeko. Artxiboa 7 egunetan behin eska dezakezu.
+ hint_html: Zure bidalketa eta igotako multimediaren artxibo bat eskatu dezakezu. Esportatutako datuak ActivityPub formatua izango dute, bateragarria den edozein programarekin irakurtzeko. Artxiboa 7 egunean behin eska dezakezu.
in_progress: Zure artxiboa biltzen...
request: Eskatu zure artxiboa
size: Tamaina
blocks: Zuk blokeatutakoak
+ bookmarks: Laster-markak
csv: CSV
domain_blocks: Domeinuen blokeoak
lists: Zerrendak
@@ -783,7 +902,7 @@ eu:
add_new: Gehitu berria
errors:
limit: Gehienezko traola kopurua nabarmendu duzu jada
- hint_html: "Zer dira nabarmendutako traolak? Zure profilean toki nabarmendu batean agertzen dira eta jendeari traola hau daukaten mezu publikoak arakatzea ahalbidetzen diote. Sormen lana edo epe luzerako proiektuak jarraitzeko primerakoak dira."
+ hint_html: "Zer dira nabarmendutako traolak? Zure profilean toki nabarmendu batean agertzen dira eta jendeari traola hau daukaten bidalketa publikoak arakatzea ahalbidetzen diote. Sormen lana edo epe luzerako proiektuak jarraitzeko primerakoak dira."
filters:
contexts:
account: Profilak
@@ -834,13 +953,15 @@ eu:
i_am_html: "%{username} erabiltzailea naiz %{service} zerbitzuan."
identity: Identitatea
inactive: Ez aktiboa
- publicize_checkbox: 'Eta bidali toot hau:'
+ publicize_checkbox: 'Eta argitaratu bidalketa hau:'
publicize_toot: 'Frogatua dago! %{username} erabiltzailea naiz %{service} zerbitzuan: %{url}'
remove: Kendu froga kontutik
removed: Ongi kendu da froga kontutik
status: Egiaztatze egoera
view_proof: Ikusi froga
imports:
+ errors:
+ over_rows_processing_limit: "%{count} lerro baina gehiago ditu"
modes:
merge: Bateratu
merge_long: Mantendu dauden erregistroak eta gehitu berriak
@@ -850,6 +971,7 @@ eu:
success: Zure datuak ongi igo dira eta dagokionean prozesatuko dira
types:
blocking: Blokeatutakoen zerrenda
+ bookmarks: Laster-markak
domain_blocking: Domeinuen blokeo zerrenda
following: Jarraitutakoen zerrenda
muting: Mutututakoen zerrenda
@@ -882,7 +1004,7 @@ eu:
limit: Gehieneko zerrenda kopurura heldu zara
media_attachments:
validations:
- images_and_video: Ezin da irudiak dituen mezu batean bideo bat erantsi
+ images_and_video: Ezin da irudiak dituen bidalketa batean bideo bat erantsi
not_ready: Ezin dira prozesatzen amaitu gabeko fitxategiak erantsi. Saiatu geroago!
too_many: Ezin dira 4 fitxategi baino gehiago erantsi
migrations:
@@ -904,6 +1026,7 @@ eu:
on_cooldown: Duela gutxi migratu duzu. Funtzio hau %{count} egun barru egongo da berriro eskuragarri.
past_migrations: Aurreko migrazioak
proceed_with_move: Mugitu jarraitzaileak
+ redirected_msg: 'Zure kontuak hona birbideratzen du orain: %{acct}.'
redirecting_to: 'Zure kontuak hona birbideratzen du: %{acct}.'
set_redirect: Ezarri birbideratzea
warning:
@@ -917,6 +1040,10 @@ eu:
redirect: Zure uneko kontuaren profila eguneratuko da birbideratze ohar batekin eta bilaketetatik kenduko da
moderation:
title: Moderazioa
+ move_handler:
+ carry_blocks_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina blokeatuta daukazun.
+ carry_mutes_over_text: Erabiltzaile hau %{acct} kontutik dator, zeina isilarazita daukazun.
+ copy_account_note_text: 'Erabiltzaile hau %{acct} kontutik dator, hemen berari buruzko zure aurreko oharrak:'
notification_mailer:
digest:
action: Ikusi jakinarazpen guztiak
@@ -930,8 +1057,8 @@ eu:
other: "%{count} jakinarazpen berri azken bisitatik \U0001F418"
title: Kanpoan zeundela...
favourite:
- body: "%{name}(e)k zure mezua gogoko du:"
- subject: "%{name}(e)k zure mezua gogoko du"
+ body: "%{name}(e)k zure bidalketa gogoko du:"
+ subject: "%{name}(e)k zure bidalketa gogoko du"
title: Gogoko berria
follow:
body: "%{name}(e)k jarraitzen zaitu!"
@@ -947,10 +1074,14 @@ eu:
body: "%{name}(e)k aipatu zaitu:"
subject: "%{name}(e)k aipatu zaitu"
title: Aipamen berria
+ poll:
+ subject: "%{name} erabiltzailearen inkesta bat amaitu da"
reblog:
- body: "%{name}(e)k bultzada eman dio zure mezuari:"
- subject: "%{name}(e)k bultzada eman dio zure mezuari"
+ body: "%{name}(e)k bultzada eman dio zure bidalketari:"
+ subject: "%{name}(e)k bultzada eman dio zure bidalketari"
title: Bultzada berria
+ status:
+ subject: "%{name} erabiltzaileak bidalketa egin berri du"
notifications:
email_events: E-mail jakinarazpenentzako gertaerak
email_events_hint: 'Hautatu jaso nahi dituzun gertaeren jakinarazpenak:'
@@ -965,6 +1096,14 @@ eu:
quadrillion: Q
thousand: K
trillion: T
+ otp_authentication:
+ code_hint: Sartu zure autentifikazio aplikazioak sortutako kodea berresteko
+ description_html: Autentifikazio aplikazio bidezko bi faktoreetako autentifikazioa gaitzen baduzu, saioa hasteko telefonoa eskura izan beharko duzu, honek zuk sartu behar dituzun kodeak sortuko dituelako.
+ enable: Gaitu
+ instructions_html: "Eskaneatu QR kode hau Google Authenticator edo antzeko TOTP aplikazio batekin zure telefonoan. Hortik aurrera, aplikazio horrek saioa hasteko sartu beharko dituzun kodeak sortuko ditu."
+ manual_instructions: 'Ezin baduzu QR kodea eskaneatu eta eskuz sartu behar baduzu, hona sekretua testu arruntean:'
+ setup: Konfiguratu
+ wrong_code: Sartutako kodea baliogabea da! Zerbitzariaren eta gailuaren erlojuak ondo ezarrita daude?
pagination:
newer: Berriagoa
next: Hurrengoa
@@ -993,6 +1132,7 @@ eu:
relationships:
activity: Kontuaren aktibitatea
dormant: Ez aktiboa
+ follow_selected_followers: Jarraitu hautatutako jarraitzaileak
followers: Jarraitzaileak
following: Jarraitzen
invited: Gonbidatuta
@@ -1016,16 +1156,16 @@ eu:
remote_interaction:
favourite:
proceed: Bihurtu gogoko
- prompt: 'Toot hau gogoko bihurtu nahi duzu:'
+ prompt: 'Bidalketa hau gogoko bihurtu nahi duzu:'
reblog:
proceed: Eman bultzada
- prompt: 'Toot honi bultzada eman nahi diozu:'
+ prompt: 'Bidalketa honi bultzada eman nahi diozu:'
reply:
proceed: Ekin erantzuteari
- prompt: 'Toot honi erantzun nahi diozu:'
+ prompt: 'Bidalketa honi erantzun nahi diozu:'
scheduled_statuses:
- over_daily_limit: Egun horretarako programatutako toot kopuruaren muga gainditu duzu (%{limit})
- over_total_limit: Programatutako toot kopuruaren muga gainditu duzu (%{limit})
+ over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}'
+ over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}'
too_soon: Programatutako data etorkizunean egon behar du
sessions:
activity: Azken jarduera
@@ -1089,10 +1229,12 @@ eu:
profile: Profila
relationships: Jarraitutakoak eta jarraitzaileak
two_factor_authentication: Bi faktoreetako autentifikazioa
- spam_check:
- spam_detected: Hau salaketa automatiko bat da. Spam-a antzeman da.
+ webauthn_authentication: Segurtasun gakoak
statuses:
attached:
+ audio:
+ one: Audio %{count}
+ other: "%{count} audio"
description: 'Erantsita: %{attached}'
image:
one: irudi %{count}
@@ -1106,14 +1248,14 @@ eu:
one: 'debekatutako traola bat zuen: %{tags}'
other: 'debekatutako traola hauek zituen: %{tags}'
errors:
- in_reply_not_found: Erantzuten saiatu zaren mezua antza ez da existitzen.
+ in_reply_not_found: Erantzuten saiatu zaren bidalketa antza ez da existitzen.
language_detection: Antzeman hizkuntza automatikoki
open_in_web: Ireki web-ean
over_character_limit: "%{max}eko karaktere muga gaindituta"
pin_errors:
- limit: Gehienez finkatu daitekeen toot kopurua finkatu duzu jada
- ownership: Ezin duzu beste norbaiten toot bat finkatu
- private: Ezin dira publikoak ez diren tootak finkatu
+ limit: Gehienez finkatu daitekeen bidalketa kopurua finkatu duzu jada
+ ownership: Ezin duzu beste norbaiten bidalketa bat finkatu
+ private: Ezin dira publikoak ez diren bidalketak finkatu
reblog: Bultzada bat ezin da finkatu
poll:
total_people:
@@ -1124,10 +1266,13 @@ eu:
other: "%{count} boto"
vote: Bozkatu
show_more: Erakutsi gehiago
+ show_newer: Erakutsi berriagoak
+ show_older: Erakutsi zaharragoak
show_thread: Erakutsi haria
sign_in_to_participate: Eman izena elkarrizketan parte hartzeko
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Zuzena
private: Jarraitzaileak besterik ez
private_long: Erakutsi jarraitzaileei besterik ez
public: Publikoa
@@ -1135,7 +1280,7 @@ eu:
unlisted: Zerrendatu gabea
unlisted_long: Edonork ikusi dezake, baina ez da denbora-lerro publikoetan agertzen
stream_entries:
- pinned: Finkatutako toota
+ pinned: Finkatutako bidalketa
reblogged: "(r)en bultzada"
sensitive_content: 'Kontuz: Eduki hunkigarria'
tags:
@@ -1146,9 +1291,9 @@ eu:
Zer informazio biltzen dugu?
-
@@ -1161,7 +1306,7 @@ eu:
@@ -1189,7 +1334,7 @@ eu:
Cookie-ak erabiltzen ditugu?
-
@@ -1219,7 +1364,7 @@ eu:
rel="me" artibutua izan behar du . Estekaren testuak ez du axola. Hona adibide bat:'
verification: Egiaztaketa
+ webauthn_credentials:
+ add: Gehitu segurtasun gako berria
+ create:
+ error: Arazo bat egon da zure segurtasun gakoa gehitzean. Saiatu berriro mesedez.
+ success: Zure segurtasun gakoa behar bezala gehitu da.
+ delete: Ezabatu
+ delete_confirmation: Ziur zaude segurtasun gako hau ezabatu nahi duzula?
+ description_html: "Segurtasun gako bidezko autentifikazioa gaitzen baduzu, saioa hasteko zure segurtasun gakoetako bat erabili beharko duzu."
+ destroy:
+ error: Arazo bat egon da zure segurtasun gakoa ezabatzean. Saiatu berriro mesedez.
+ success: Zure segurtasun gakoa behar bezala ezabatu da.
+ invalid_credential: Segurtasun gako baliogabea
+ nickname_hint: Sartu zure segurtasun gako berriaren ezizena
+ not_enabled: Ez duzu WebAuthn gaitu oraindik
+ not_supported: Nabigatzaile honek ez ditu segurtasun gakoak onartzen
+ otp_required: Segurtasun gakoak erabili aurretik bi faktoreko autentifikazioa gaitu behar duzu.
+ registered_on: "%{date}(e)an erregistratua"
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index cf094478a..30230a97c 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -26,6 +26,7 @@ fa:
این حساب برای مقاصد خودگردانی به کار میرفته و نباید مسدود شود؛ مگر این که بخواهید کل نمونه را مسدود کنید که در آن صورت نیز باید از انسداد دامنه استفاده کنید.
learn_more: بیشتر بدانید
privacy_policy: سیاست رازداری
+ rules: قوانین کارساز
see_whats_happening: ببینید چه خبر است
server_stats: 'آمار کارساز:'
source_code: کدهای منبع
@@ -63,7 +64,7 @@ fa:
other: پیگیر
following: پی میگیرد
instance_actor_flash: این حساب یک عامل مجازی است که به نمایندگی از خود کارساز استفاده میشود و نه هیچ یکی از کاربران. این حساب به منظور اتصال به فدراسیون استفاده میشود و نباید معلق شود.
- joined: کاربر از %{date}
+ joined: پیوسته از %{date}
last_active: آخرین فعالیت
link_verified_on: مالکیت این پیوند در %{date} بررسی شد
media: عکس و ویدیو
@@ -80,7 +81,6 @@ fa:
other: بوق
posts_tab_heading: بوقها
posts_with_replies: بوقها و پاسخها
- reserved_username: این نام کاربری در دسترس نیست
roles:
admin: مدیر
bot: ربات
@@ -136,7 +136,7 @@ fa:
inbox_url: نشانی صندوق ورودی
invite_request_text: دلایلتان برای پیوستن
invited_by: دعوتشده از طرف
- ip: IP
+ ip: آیپی
joined: عضو شده در
location:
all: همه
@@ -262,46 +262,24 @@ fa:
update_domain_block: بهروزرسانی مسدودسازی دامنه
update_status: بهروز رسانی وضعیت
actions:
- assigned_to_self_report: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت"
- change_email_user: "%{name} نشانی ایمیل کاربر %{target} را تغییر داد"
- confirm_user: "%{name} نشانی ایمیل کاربر %{target} را تأیید کرد"
- create_account_warning: "%{name} هشداری برای %{target} فرستاد"
- create_announcement: "%{name} اعلامیهای جدید ایجاد کرد %{target}"
- create_custom_emoji: "%{name} شکلک تازهٔ %{target} را بارگذاشت"
- create_domain_allow: "%{name} دامنهٔ %{target} را مجاز کرد"
- create_domain_block: "%{name} دامین %{target} را مسدود کرد"
- create_email_domain_block: "%{name} دامین ایمیل %{target} را مسدود کرد"
- create_ip_block: "%{name} برای آیپی %{target} قاعدهای ایجاد کرد"
- demote_user: "%{name} مقام کاربر %{target} را تنزل داد"
- destroy_announcement: "%{name} اعلامیهٔ %{target} را حذف کرد"
- destroy_custom_emoji: "%{name} اموجی %{target} را نابود کرد"
- destroy_domain_allow: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت"
- destroy_domain_block: "%{name} انسداد دامنهٔ %{target} را رفع کرد"
- destroy_email_domain_block: "%{name} دامنهٔ ایمیل %{target} را به فهرست مجاز افزود"
- destroy_ip_block: "%{name} قاعدهای را از آیپی %{target} حذف کرد"
- destroy_status: "%{name} نوشتهٔ %{target} را پاک کرد"
- disable_2fa_user: "%{name} اجبار ورود دومرحلهای را برای کاربر %{target} غیرفعال کرد"
- disable_custom_emoji: "%{name} شکلک %{target} را غیرفعال کرد"
- disable_user: "%{name} ورود را برای کاربر %{target} غیرفعال کرد"
- enable_custom_emoji: "%{name} شکلک %{target} را فعال کرد"
- enable_user: "%{name} ورود را برای کاربر %{target} فعال کرد"
- memorialize_account: "%{name} حساب کاربر %{target} را تبدیل به صفحهٔ یادمان کرد"
- promote_user: "%{name} کاربر %{target} را ترفیع داد"
- remove_avatar_user: "%{name} تصویر نمایهٔ کاربر %{target} را حذف کرد"
- reopen_report: "%{name} گزارش %{target} را دوباره به جریان انداخت"
- reset_password_user: "%{name} رمز کاربر %{target} را بازنشاند"
- resolve_report: "%{name} گزارش %{target} را رفع کرد"
- sensitive_account: "%{name} رسانهٔ %{target} را به عنوان حساس علامتگذاری کرد"
- silence_account: "%{name} حساب کاربر %{target} را خاموش (بیصدا) کرد"
- suspend_account: "%{name} حساب کاربر %{target} را تعلیق کرد"
- unassigned_report: "%{name} بررسی گزارش %{target} را متوقف کرد"
- unsensitive_account: "%{name} علامت حساس رسانهٔ %{target} را برداشت"
- unsilence_account: "%{name} حساب کاربر %{target} را روشن (باصدا) کرد"
- unsuspend_account: "%{name} حساب کاربر %{target} را از تعلیق خارج کرد"
- update_announcement: "%{name} اعلامیهٔ %{target} را بهروز کرد"
- update_custom_emoji: "%{name} شکلک %{target} را بهروز کرد"
- update_domain_block: "%{name} مسدودسازی دامنه را برای %{target} بهروزرسانی کرد"
- update_status: "%{name} نوشتهٔ %{target} را بهروز کرد"
+ assigned_to_self_report_html: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت"
+ change_email_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را عوض کرد"
+ confirm_user_html: "%{name} نشانی رایانامهٔ کاربر %{target} را تأیید کرد"
+ create_account_warning_html: "%{name} هشداری برای %{target} فرستاد"
+ create_announcement_html: "%{name} اعلامیهای جدید ایجاد کرد %{target}"
+ create_custom_emoji_html: "%{name} اموجی تازهٔ %{target} را بارگذاشت"
+ create_domain_allow_html: "%{name} دامنهٔ %{target} را مجاز کرد"
+ create_domain_block_html: "%{name} دامنهٔ %{target} را مسدود کرد"
+ create_email_domain_block_html: "%{name} دامنهٔ رایانامهٔ %{target} را مسدود کرد"
+ create_ip_block_html: "%{name} برای آیپی %{target} قانونی ایجاد کرد"
+ demote_user_html: "%{name} کاربر %{target} را تنزل داد"
+ destroy_announcement_html: "%{name} اعلامیهٔ %{target} را حذف کرد"
+ destroy_custom_emoji_html: "%{name} اموجی %{target} را نابود کرد"
+ destroy_domain_allow_html: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت"
+ destroy_domain_block_html: "%{name} انسداد دامنهٔ %{target} را رفع کرد"
+ destroy_email_domain_block_html: "%{name} انسداد دامنهٔ رایانامهٔ %{target} را برداشت"
+ destroy_ip_block_html: "%{name} قاعدهٔ آیپی %{target} را حذف کرد"
+ destroy_status_html: "%{name} وضعیت %{target} را برداشت"
deleted_status: "(نوشتهٔ پاکشده)"
empty: هیچ گزارشی پیدا نشد.
filter_by_action: پالایش بر اساس کنش
@@ -316,10 +294,12 @@ fa:
new:
create: ساختن اعلامیه
title: اعلامیهٔ تازه
+ publish: انتشار
published_msg: اعلامیه با موفقیت منتشر شد!
scheduled_for: زمانبسته برای %{time}
scheduled_msg: اعلامیه برای نشر، زمانبندی شد!
title: اعلامیهها
+ unpublish: عدم انتشار
unpublished_msg: انتشار اعلامیه با موفقیت لغو شد!
updated_msg: اعلامیه با موفقیت بهروز شد!
custom_emojis:
@@ -364,7 +344,6 @@ fa:
feature_profile_directory: فهرست گزیدهٔ کاربران
feature_registrations: ثبتنامها
feature_relay: رله
- feature_spam_check: ضدهرزنامه
feature_timeline_preview: پیشنمایش نوشتهها
features: ویژگیها
hidden_service: ارتباط میانسروری با سرویسهای نهفته
@@ -404,6 +383,8 @@ fa:
silence: خموشاندن
suspend: تعلیق
title: مسدودسازی دامین تازه
+ obfuscate: مبهمسازی نام دامنهٔ
+ obfuscate_hint: در صورت به کار افتاده بودن اعلام فهرست محدودیتهای دامنه، نام دامنه در فهرست را به صورت جزیی مبهم میکند
private_comment: یادداشت خصوصی
private_comment_hint: یادداشتی دربارهٔ محدودیت روی این دامین برای سایر ناظمان.
public_comment: یادداشت عمومی
@@ -440,8 +421,20 @@ fa:
create: ساختن مسدودسازی
title: مسدودسازی دامین ایمیل تازه
title: مسدودسازی دامینهای ایمیل
+ follow_recommendations:
+ language: برای زبان
+ status: وضعیت
+ title: پیشنهادهای پیگیری
+ unsuppress: بازگردانی پیشنهادهای پیگیری
instances:
+ back_to_all: همه
+ back_to_limited: محدود
+ back_to_warning: هشدار
by_domain: دامین
+ delivery:
+ all: همه
+ unavailable: ناموجود
+ warning: هشدار
delivery_available: پیام آماده است
empty: هیج دامنهای پیدا نشد.
known_accounts:
@@ -542,6 +535,12 @@ fa:
unassign: پسگرفتن مسئولیت
unresolved: حلنشده
updated_at: بهروز شد
+ rules:
+ add_new: افزودن قانون
+ delete: حذف
+ edit: ویرایش قانون
+ empty: هنوز هیچ قانونی برای کارساز تعریف نشده.
+ title: قوانین کارساز
settings:
activity_api_enabled:
desc_html: تعداد بوقهای محلی، کاربران فعال، و کاربران تازه در هر هفته
@@ -565,8 +564,6 @@ fa:
users: برای کاربران محلی واردشده
domain_blocks_rationale:
title: دیدن دلیل
- enable_bootstrap_timeline_accounts:
- title: به کار انداختن پیگیریهای پیشگزیده برای کاربران تازه
hero:
desc_html: در صفحهٔ آغازین نمایش مییابد. دستکم ۶۰۰×۱۰۰ پیکسل توصیه میشود. اگر تعیین نشود، با تصویر بندانگشتی سرور جایگزین خواهد شد
title: تصویر سربرگ
@@ -620,9 +617,6 @@ fa:
desc_html: میتوانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگهای HTML هم مجاز است
title: شرایط استفادهٔ سفارشی
site_title: نام سرور
- spam_check_enabled:
- desc_html: ماستدون میتواند حسابها را به طور خودکار بیصدا کند یا گزارش دهد. این کار بر اساس سنجههایی از قبیل شناسایی پیغامهای ناخواستهٔ تکراری انجام میشود و ممکن است گاهی اشتباه باشد.
- title: ضدهرزنامه
thumbnail:
desc_html: برای دیدن با OpenGraph و رابط برنامهنویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل
title: تصویر کوچک سرور
@@ -653,13 +647,14 @@ fa:
no_status_selected: هیچ بوقی تغییری نکرد زیرا هیچکدام از آنها انتخاب نشده بودند
title: نوشتههای حساب
with_media: دارای عکس یا ویدیو
+ system_checks:
+ rules_check:
+ action: مدیریت قانونهای کارساز
+ message_html: هیچ قانون کارسازی تعریف نکردهاید.
tags:
accounts_today: کاربرد یکتا در امروز
accounts_week: کاربرد یکتا در این هفته
breakdown: کاربردهای امروز به تفکیک منبع
- context: زمینه
- directory: در فهرست
- in_directory: "%{count} در فهرست"
last_active: آخرین فعالیت
most_popular: محبوبترین
most_recent: تازهترین
@@ -923,6 +918,8 @@ fa:
status: وضعیت تأیید
view_proof: دیدن مدرک
imports:
+ errors:
+ over_rows_processing_limit: دارای بیش از %{count} ردیف
modes:
merge: ادغام
merge_long: دادههای فعلی را داشته باشید و دادههای تازهای بیفزایید
@@ -1035,10 +1032,14 @@ fa:
body: "%{name} در اینجا از شما نام برد:"
subject: "%{name} از شما نام برد"
title: نامبردهشدن تازه
+ poll:
+ subject: نظرسنجیای از %{name} پایان یافت
reblog:
body: "%{name} نوشتهٔ شما را بازبوقید:"
subject: "%{name} نوشتهٔ شما را بازبوقید"
title: بازبوق تازه
+ status:
+ subject: "%{name} چیزی فرستاد"
notifications:
email_events: رویدادها برای اعلانهای ایمیلی
email_events_hint: 'رویدادهایی که میخواهید برایشان اعلانی دریافت کنید را برگزینید:'
@@ -1048,11 +1049,11 @@ fa:
decimal_units:
format: "%n%u"
units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
+ billion: ب
+ million: م
+ quadrillion: ک
+ thousand: ه
+ trillion: ت
otp_authentication:
code_hint: برای تأیید، کدی را که برنامهٔ تأییدکننده ساخته است وارد کنید
description_html: اگر ورود دومرحلهای را با استفاده از از یک کارهٔ تأییدکننده به کار بیندازید، لازم است برای ورود، به تلفن خود که برایتان یک ژتون خواهد ساخت دسترسی داشته باشید.
@@ -1066,7 +1067,7 @@ fa:
next: بعدی
older: قدیمیتر
prev: قبلی
- truncate: "…"
+ truncate: "…"
polls:
errors:
already_voted: شما قبلاً در این نظرسنجی رأی دادهاید
@@ -1128,7 +1129,7 @@ fa:
activity: آخرین فعالیت
browser: مرورگر
browsers:
- alipay: Alipay
+ alipay: علیپی
blackberry: بلکبری
chrome: کروم
edge: مایکروسافت اج
@@ -1137,31 +1138,31 @@ fa:
generic: مرورگر ناشناخته
ie: اینترنت اکسپلورر
micro_messenger: مایکرومسنجر
- nokia: Nokia S40 Ovi Browser
+ nokia: مرورگر اوی نوکیا اس۴۰
opera: اپرا
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
+ otter: دیگر
+ phantom_js: فنتومجیاس
+ qq: مرورگر کیوکیو
safari: سافاری
- uc_browser: UCBrowser
- weibo: Weibo
+ uc_browser: مرورگر یوسی
+ weibo: وبیو
current_session: نشست فعلی
description: "%{browser} روی %{platform}"
explanation: مرورگرهای زیر هماینک به حساب شما وارد شدهاند.
- ip: IP
+ ip: آیپی
platforms:
- adobe_air: Adobe Air
+ adobe_air: ایر ادوبی
android: اندروید
blackberry: بلکبری
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
+ chrome_os: سیستمعامل کروم
+ firefox_os: سیستمعامل فایرفاکس
+ ios: آیاواس
linux: لینوکس
mac: مک
other: سیستم ناشناخته
windows: ویندوز
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
+ windows_mobile: ویندوز همراه
+ windows_phone: تلفن ویندوزی
revoke: لغو کردن
revoke_success: نشست با موفقیت لغو شد
title: نشستها
@@ -1187,8 +1188,6 @@ fa:
relationships: پیگیریها و پیگیران
two_factor_authentication: ورود دومرحلهای
webauthn_authentication: کلیدهای امنیتی
- spam_check:
- spam_detected: این یک گزارش خودکار برای تشخیص هرزنامه است.
statuses:
attached:
audio:
@@ -1229,8 +1228,9 @@ fa:
show_older: نمایش قدیمیتر
show_thread: نمایش رشته
sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید
- title: '%{name}: "%{quote}"'
+ title: "%{name}: «%{quote}»"
visibilities:
+ direct: مستقیم
private: خصوصی
private_long: تنها پیگیران شما میبینند
public: عمومی
@@ -1333,7 +1333,6 @@ fa:
time:
formats:
default: "%d %b %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
add: افزودن
disable: غیرفعالکردن
@@ -1399,11 +1398,8 @@ fa:
tips: نکتهها
title: خوش آمدید، کاربر %{name}!
users:
- blocked_email_provider: فراهمکنندهٔ رایانامه مجاز نیست
follow_limit_reached: شما نمیتوانید بیش از %{limit} نفر را پی بگیرید
generic_access_help_html: مشکل در دسترسی به حسابتان؟ میتوانید برای کمک با %{email} تکاس بگیرید
- invalid_email: نشانی ایمیل نامعتبر است
- invalid_email_mx: به نظر نمیرسد نشانی رایانامه وجود داشته باشد
invalid_otp_token: کد ورود دومرحلهای نامعتبر است
invalid_sign_in_token: کد امنیتی نادرست
otp_lost_help_html: اگر شما دسترسی به هیچکدامشان ندارید، باید با ایمیل %{email} تماس بگیرید
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 9eb0d9397..541b1b38e 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -6,7 +6,6 @@ fi:
about_this: Tietoja tästä palvelimesta
active_count_after: aktiivinen
administered_by: 'Ylläpitäjä:'
- api: API
apps: Mobiili sovellukset
apps_platforms: Käytä Mastodonia iOS:llä, Androidilla tai muilla alustoilla
browse_directory: Selaa profiilihakemistoa ja suodata kiinnostuksen kohteiden mukaan
@@ -51,7 +50,6 @@ fi:
joined: Liittynyt %{date}
last_active: viimeksi aktiivinen
link_verified_on: Tämän linkin omistus on tarkastettu %{date}
- media: Media
moved_html: "%{name} on muuttanut osoitteeseen %{new_profile_link}:"
network_hidden: Nämä tiedot eivät ole käytettävissä
never_active: Ei koskaan
@@ -65,7 +63,6 @@ fi:
other: Tuuttaukset
posts_tab_heading: Tuuttaukset
posts_with_replies: Tuuttaukset ja vastaukset
- reserved_username: Käyttäjänimi on varattu
roles:
admin: Ylläpitäjä
bot: Botti
@@ -114,7 +111,6 @@ fi:
header: Otsakekuva
inbox_url: Saapuvan postilaatikon osoite
invited_by: Kutsuja
- ip: IP
joined: Liittynyt
location:
all: Kaikki
@@ -197,34 +193,6 @@ fi:
promote_user: Käyttäjä ylennetty
remove_avatar_user: Profiilikuvan poisto
silence_account: Hiljennä tili
- actions:
- assigned_to_self_report: "%{name} otti raportin %{target} tehtäväkseen"
- change_email_user: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen"
- confirm_user: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen"
- create_custom_emoji: "%{name} lähetti uuden emojin %{target}"
- create_domain_block: "%{name} esti verkkotunnuksen %{target}"
- create_email_domain_block: "%{name} lisäsi sähköpostiverkkotunnuksen %{target} estolistalle"
- demote_user: "%{name} alensi käyttäjän %{target}"
- destroy_domain_block: "%{name} poisti verkkotunnuksen %{target} eston"
- destroy_email_domain_block: "%{name} lisäsi sähköpostiverkkotunnuksen %{target} sallittujen listalle"
- destroy_status: "%{name} poisti käyttäjän %{target} tilan"
- disable_2fa_user: "%{name} poisti käyttäjältä %{target} kaksivaiheisen todentamisen vaatimuksen"
- disable_custom_emoji: "%{name} poisti emojin %{target} käytöstä"
- disable_user: "%{name} poisti sisäänkirjautumisen käytöstä käyttäjältä %{target}"
- enable_custom_emoji: "%{name} salli emojin %{target} käyttöön"
- enable_user: "%{name} salli sisäänkirjautumisen käyttäjälle %{target}"
- memorialize_account: "%{name} muutti käyttäjän %{target} tilin muistosivuksi"
- promote_user: "%{name} ylensi käyttäjän %{target}"
- remove_avatar_user: "%{name} poisti käyttäjän %{target} profiilikuvan"
- reopen_report: "%{name} avasi uudelleen raportin %{target}"
- reset_password_user: "%{name} palautti käyttäjän %{target} salasanan"
- resolve_report: "%{name} hylkäsi raportin %{target}"
- silence_account: "%{name} hiljensi käyttäjän %{target}"
- suspend_account: "%{name} siirsi käyttäjän %{target} jäähylle"
- unsilence_account: "%{name} poisti käyttäjän %{target} hiljennyksen"
- unsuspend_account: "%{name} perui käyttäjän %{target} jäähyn"
- update_custom_emoji: "%{name} päivitti emojin %{target}"
- update_status: "%{name} päivitti käyttäjän %{target} tilan"
deleted_status: "(poistettu tilapäivitys)"
empty: Lokeja ei löytynyt.
filter_by_action: Suodata tapahtuman mukaan
@@ -253,7 +221,6 @@ fi:
disable: Poista käytöstä
disabled: Ei käytössä
disabled_msg: Emojin poisto käytöstä onnistui
- emoji: Emoji
enable: Ota käyttöön
enabled: Käytössä
enabled_msg: Emojin käyttöönotto onnistui
@@ -280,7 +247,6 @@ fi:
feature_invites: Kutsulinkit
feature_profile_directory: Profiilihakemisto
feature_registrations: Rekisteröitymiset
- feature_spam_check: Roskapostin esto
feature_timeline_preview: Aikajanan esikatselu
features: Ominaisuudet
recent_users: Viimeaikaiset käyttäjät
@@ -407,8 +373,6 @@ fi:
title: Näytä domainestot
domain_blocks_rationale:
title: Näytä syy
- enable_bootstrap_timeline_accounts:
- title: Uudet käyttäjät seuraavat oletuksena tilejä
hero:
desc_html: Näytetään etusivulla. Suosituskoko vähintään 600x100 pikseliä. Jos kuvaa ei aseteta, käytetään instanssin pikkukuvaa
title: Sankarin kuva
@@ -469,13 +433,10 @@ fi:
nsfw_on: NSFW PÄÄLLÄ
deleted: Poistettu
failed_to_execute: Suoritus epäonnistui
- media:
- title: Media
no_media: Ei mediaa
title: Tilin tilat
with_media: Sisältää mediaa
tags:
- context: Konteksti
last_active: Aktiivinen viimeksi
most_popular: Suosituimmat
most_recent: Viimeisimmät
@@ -503,7 +464,6 @@ fi:
sensitive_content: Arkaluontoista sisältöä
application_mailer:
notification_preferences: Muuta sähköpostiasetuksia
- salutation: "%{name},"
settings: 'Muuta sähköpostiasetuksia: %{link}'
view: 'Näytä:'
view_profile: Näytä profiili
@@ -735,7 +695,6 @@ fi:
format: "%n %u"
units:
billion: Mrd
- million: M
quadrillion: Brd
thousand: k
trillion: B
@@ -769,40 +728,14 @@ fi:
activity: Viimeisin toiminta
browser: Selain
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Tuntematon selain
- ie: Internet Explorer
- micro_messenger: MicroMessenger
nokia: Nokia S40 Ovi -selain
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Nykyinen istunto
description: "%{browser}, %{platform}"
explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneet Mastodon-tilillesi.
ip: IP-osoite
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
- mac: macOS
other: tuntematon järjestelmä
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Hylkää
revoke_success: Istunnon hylkäys onnistui
title: Istunnot
@@ -906,7 +839,6 @@ fi:
tips: Vinkkejä
title: Tervetuloa mukaan, %{name}!
users:
- invalid_email: Virheellinen sähköpostiosoite
invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyttä osoitteeseen %{email}
seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 0c96d462d..5db62a01a 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -1,11 +1,11 @@
---
fr:
about:
- about_hashtag_html: Voici les pouets tagués avec #%{hashtag}. Vous pouvez interagir avec eux si vous avez un compte n’importe où dans le Fédiverse.
- about_mastodon_html: 'Le réseau social de l''avenir : Pas d''annonces, pas de surveillance institutionnelle, conception éthique et décentralisation ! Possédez vos données avec Mastodon !'
+ about_hashtag_html: Voici des messages publics tagués avec #%{hashtag}. Vous pouvez interagir avec si vous avez un compte n’importe où dans le fédiverse.
+ about_mastodon_html: 'Le réseau social de l''avenir : pas de publicité, pas de surveillance institutionnelle, conception éthique et décentralisation ! Gardez le contrôle de vos données avec Mastodon !'
about_this: À propos
active_count_after: actif·ve·s
- active_footnote: Utilisateur·rice·s actif·ve·s mensuels (MAU)
+ active_footnote: Nombre mensuel d'utilisateur·rice·s actif·ve·s (NMUA)
administered_by: 'Administrée par :'
api: API
apps: Applications mobiles
@@ -23,9 +23,11 @@ fr:
hosted_on: Serveur Mastodon hébergé par %{domain}
instance_actor_flash: |
Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un utilisateur individuel.
- Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer l’instance entière, dans ce cas vous devriez utiliser un bloqueur de domaine.
+ Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer l’instance entière, auquel cas vous devriez utiliser un bloqueur de domaine.
learn_more: En savoir plus
privacy_policy: Politique de confidentialité
+ rules: Règles du serveur
+ rules_html: 'Voici un résumé des règles que vous devez suivre si vous voulez avoir un compte sur ce serveur de Mastodon :'
see_whats_happening: Voir ce qui se passe
server_stats: 'Statistiques du serveur :'
source_code: Code source
@@ -33,17 +35,17 @@ fr:
one: statut
other: statuts
status_count_before: Ayant publié
- tagline: Suivez vos ami·e·s et découvrez en de nouveaux·elles
+ tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles
terms: Conditions d’utilisation
unavailable_content: Serveurs modérés
unavailable_content_description:
domain: Serveur
reason: Motif
- rejecting_media: 'Les fichiers média de ces serveurs ne seront pas traités ou stockés et aucune miniature ne sera affichée, nécessitant un clic vers le fichier d’origine :'
+ rejecting_media: 'Les fichiers média de ces serveurs ne seront ni traités ni stockés, et aucune miniature ne sera affichée, rendant nécessaire de cliquer vers le fichier d’origine :'
rejecting_media_title: Médias filtrés
silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·rice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :'
silenced_title: Serveurs masqués
- suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant toute interaction ou communication avec les utilisateur·rice·s de ces serveurs impossible :'
+ suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant impossible toute interaction ou communication avec les utilisateur·rice·s de ces serveurs :'
suspended_title: Serveurs suspendus
unavailable_content_html: 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.
user_count_after:
@@ -74,11 +76,10 @@ fr:
pin_errors:
following: Vous devez être déjà abonné·e à la personne que vous désirez recommander
posts:
- one: Pouet
- other: Pouets
- posts_tab_heading: Pouets
- posts_with_replies: Pouets & réponses
- reserved_username: Ce nom d’utilisateur·ice est réservé
+ one: Message
+ other: Messages
+ posts_tab_heading: Messages
+ posts_with_replies: Messages et réponses
roles:
admin: Admin
bot: Robot
@@ -229,6 +230,7 @@ fr:
create_domain_block: Créer un blocage de domaine
create_email_domain_block: Créer un blocage de domaine de courriel
create_ip_block: Créer une règle IP
+ create_unavailable_domain: Créer un domaine indisponible
demote_user: Rétrograder l’utilisateur·ice
destroy_announcement: Supprimer l’annonce
destroy_custom_emoji: Supprimer des émojis personnalisés
@@ -237,6 +239,7 @@ fr:
destroy_email_domain_block: Supprimer le blocage de domaine de courriel
destroy_ip_block: Supprimer la règle IP
destroy_status: Supprimer le statut
+ destroy_unavailable_domain: Supprimer le domaine indisponible
disable_2fa_user: Désactiver l’A2F
disable_custom_emoji: Désactiver les émojis personnalisés
disable_user: Désactiver l’utilisateur·ice
@@ -260,46 +263,48 @@ fr:
update_domain_block: Mettre à jour le blocage de domaine
update_status: Mettre à jour le statut
actions:
- assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
- change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
- confirm_user: "%{name} adresse courriel confirmée pour l’utilisateur·rice %{target}"
- create_account_warning: "%{name} a envoyé un avertissement à %{target}"
- create_announcement: "%{name} a créé une nouvelle annonce %{target}"
- create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}"
- create_domain_allow: "%{name} a inscrit le domaine %{target} sur liste blanche"
- create_domain_block: "%{name} a bloqué le domaine %{target}"
- create_email_domain_block: "%{name} a mis le domaine de courriel %{target} sur liste noire"
- create_ip_block: "%{name} a créé une règle pour l’IP %{target}"
- demote_user: "%{name} a rétrogradé l’utilisateur·rice %{target}"
- destroy_announcement: "%{name} a supprimé l’annonce %{target}"
- destroy_custom_emoji: "%{name} a détruit l’émoticône %{target}"
- destroy_domain_allow: "%{name} a supprimé le domaine %{target} de la liste blanche"
- destroy_domain_block: "%{name} a débloqué le domaine %{target}"
- destroy_email_domain_block: "%{name} a mis le domaine de courriel %{target} sur liste blanche"
- destroy_ip_block: "%{name} a supprimé la règle pour l’IP %{target}"
- destroy_status: "%{name} a enlevé le statut de %{target}"
- disable_2fa_user: "%{name} a désactivé l’authentification à deux facteurs pour l’utilisateur·rice %{target}"
- disable_custom_emoji: "%{name} a désactivé l’émoji %{target}"
- disable_user: "%{name} a désactivé la connexion pour l’utilisateur·rice %{target}"
- enable_custom_emoji: "%{name} a activé l’émoji %{target}"
- enable_user: "%{name} a activé la connexion pour l’utilisateur·rice %{target}"
- memorialize_account: "%{name} a transformé le compte de %{target} en une page de mémorial"
- promote_user: "%{name} a promu l’utilisateur·rice %{target}"
- remove_avatar_user: "%{name} a supprimé l’avatar de %{target}"
- reopen_report: "%{name} a rouvert le signalement %{target}"
- reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
- resolve_report: "%{name} a résolu le signalement %{target}"
- sensitive_account: "%{name} a marqué le média de %{target} comme sensible"
- silence_account: "%{name} a masqué le compte de %{target}"
- suspend_account: "%{name} a suspendu le compte %{target}"
- unassigned_report: "%{name} a désassigné le signalement %{target}"
- unsensitive_account: "%{name} a enlevé le marquage du média de %{target} comme sensible"
- unsilence_account: "%{name} ne masque plus le compte de %{target}"
- unsuspend_account: "%{name} a réactivé le compte de %{target}"
- update_announcement: "%{name} a actualisé l’annonce %{target}"
- update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
- update_domain_block: "%{name} a mis à jour le blocage de domaine pour %{target}"
- update_status: "%{name} a mis à jour le statut de %{target}"
+ assigned_to_self_report_html: "%{name} s’est assigné·e le signalement de %{target}"
+ change_email_user_html: "%{name} a modifié l'adresse de courriel de l'utilisateur·rice %{target}"
+ confirm_user_html: "%{name} a confirmé l'adresse courriel de l'utilisateur·rice %{target}"
+ create_account_warning_html: "%{name} a envoyé un avertissement à %{target}"
+ create_announcement_html: "%{name} a créé une nouvelle annonce %{target}"
+ create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}"
+ create_domain_allow_html: "%{name} a autorisé la fédération avec le domaine %{target}"
+ create_domain_block_html: "%{name} a bloqué le domaine %{target}"
+ create_email_domain_block_html: "%{name} a bloqué de domaine de courriel %{target}"
+ create_ip_block_html: "%{name} a créé une règle pour l'IP %{target}"
+ create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}"
+ demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}"
+ destroy_announcement_html: "%{name} a supprimé l'annonce %{target}"
+ destroy_custom_emoji_html: "%{name} a détruit l'émoji %{target}"
+ destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
+ destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
+ destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}"
+ destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}"
+ destroy_status_html: "%{name} a supprimé le statut de %{target}"
+ destroy_unavailable_domain_html: "%{name} a repris la livraison au domaine %{target}"
+ disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}"
+ disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}"
+ disable_user_html: "%{name} a désactivé la connexion de l'utilisateur·rice %{target}"
+ enable_custom_emoji_html: "%{name} a activé l'émoji %{target}"
+ enable_user_html: "%{name} a activé la connexion de l'utilisateur·rice %{target}"
+ memorialize_account_html: "%{name} a converti le compte de %{target} en un mémorial"
+ promote_user_html: "%{name} a promu l'utilisateur·rice %{target}"
+ remove_avatar_user_html: "%{name} a supprimé l'avatar de %{target}"
+ reopen_report_html: "%{name} a rouvert le signalement %{target}"
+ reset_password_user_html: "%{name} a réinitialisé le mot de passe de l'utilisateur·rice %{target}"
+ resolve_report_html: "%{name} a résolu le signalement %{target}"
+ sensitive_account_html: "%{name} a marqué le média de %{target} comme sensible"
+ silence_account_html: "%{name} a masqué le compte de %{target}"
+ suspend_account_html: "%{name} a suspendu le compte de %{target}"
+ unassigned_report_html: "%{name} a désassigné le signalement %{target}"
+ unsensitive_account_html: "%{name} a enlevé le marquage comme sensible du média de %{target}"
+ unsilence_account_html: "%{name} a enlevé le masquage du compte de %{target}"
+ unsuspend_account_html: "%{name} a réactivé le compte de %{target}"
+ update_announcement_html: "%{name} a mis à jour l'annonce %{target}"
+ update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}"
+ update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}"
+ update_status_html: "%{name} a mis à jour le statut de %{target}"
deleted_status: "(statut supprimé)"
empty: Aucun journal trouvé.
filter_by_action: Filtrer par action
@@ -314,10 +319,12 @@ fr:
new:
create: Créer une annonce
title: Nouvelle annonce
+ publish: Publier
published_msg: Annonce publiée avec succès !
scheduled_for: Planifiée pour %{time}
scheduled_msg: Annonce planifiée pour publication !
title: Annonces
+ unpublish: Supprimer la publication
unpublished_msg: L’annonce a été dépubliée avec succès !
updated_msg: L’annonce a été mise à jour avec succès !
custom_emojis:
@@ -362,7 +369,6 @@ fr:
feature_profile_directory: Annuaire des profils
feature_registrations: Inscriptions
feature_relay: Relais de fédération
- feature_spam_check: Anti-spam
feature_timeline_preview: Aperçu du fil public
features: Fonctionnalités
hidden_service: Fédération avec des services cachés
@@ -405,9 +411,9 @@ fr:
obfuscate: Obfusquer le nom de domaine
obfuscate_hint: Obfusquer partiellement le nom de domaine dans la liste si la liste des limitations de domaine est activée
private_comment: Commentaire privé
- private_comment_hint: Commenter sur cette limitation de domaine pour informer les modérateurs internes.
+ private_comment_hint: Commentaire sur cette limitation de domaine pour informer en interne les modérateurs.
public_comment: Commentaire public
- public_comment_hint: Commentaire sur cette limitation de domaine pour le grand public, si l'affichage publique de la liste des limitations de domaine est activée.
+ public_comment_hint: Commentaire sur cette limitation de domaine pour le grand public, si l'affichage public de la liste des limitations de domaine est activé.
reject_media: Rejeter les fichiers média
reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions
reject_reports: Rejeter les signalements
@@ -440,9 +446,34 @@ fr:
create: Créer le blocage
title: Nouveau blocage de domaine de courriel
title: Blocage de domaines de courriel
+ follow_recommendations:
+ description_html: "Les recommandations d'abonnement aident les nouvelles personnes à trouver rapidement du contenu intéressant. Si un·e utilisateur·rice n'a pas assez interagi avec les autres pour avoir des recommandations personnalisées, ces comptes sont alors recommandés. La sélection est mise à jour quotidiennement depuis un mélange de comptes ayant le plus d'interactions récentes et le plus grand nombre d'abonné·e·s locaux pour une langue donnée."
+ language: Pour la langue
+ status: État
+ suppress: Supprimer les recommandations d'abonnement
+ suppressed: Supprimée
+ title: Recommandations d'abonnement
+ unsuppress: Rétablir les recommandations d'abonnement
instances:
+ back_to_all: Tout
+ back_to_limited: Limité
+ back_to_warning: Avertissement
by_domain: Domaine
+ delivery:
+ all: Tout
+ clear: Effacer les erreurs de livraison
+ restart: Redémarrer la livraison
+ stop: Arrêter la livraison
+ title: Livraison
+ unavailable: Indisponible
+ unavailable_message: Livraison indisponible
+ warning: Avertissement
+ warning_message:
+ one: Échec de livraison %{count} jour
+ other: Échec de livraison %{count} jours
delivery_available: Livraison disponible
+ delivery_error_days: Jours d'erreur de livraison
+ delivery_error_hint: Si la livraison n'est pas possible pendant %{count} jours, elle sera automatiquement marquée comme non livrable.
empty: Aucun domaine trouvé.
known_accounts:
one: "%{count} compte connu"
@@ -457,7 +488,7 @@ fr:
total_blocked_by_us: Bloqués par nous
total_followed_by_them: Suivi par eux
total_followed_by_us: Suivi par nous
- total_reported: Signalements à leurs propos
+ total_reported: Signalements à leur sujet
total_storage: Attachements de média
invites:
deactivate_all: Tout désactiver
@@ -489,11 +520,11 @@ fr:
relays:
add_new: Ajouter un nouveau relais
delete: Supprimer
- description_html: Un relai de fédération est un serveur intermédiaire qui échange de grandes quantités de pouets publics entre les serveurs qui publient dessus et ceux qui y sont abonnés. Il peut aider les petits et moyen serveurs à découvrir du contenu sur le fediverse, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants.
+ description_html: Un relai de fédération est un serveur intermédiaire qui échange de grandes quantités de messages publics entre les serveurs qui s’inscrivent et ceux qui publient dessus. Il peut aider les petits et moyens serveurs à découvrir du contenu sur le fediverse, ce qui normalement nécessiterait que leurs membres suivent des gens inscrits sur d’autres serveurs.
disable: Désactiver
disabled: Désactivé
enable: Activer
- enable_hint: Une fois activé, votre serveur souscrira à tous les pouets publics présents sur ce relais et y enverra ses propres pouets publics.
+ enable_hint: Une fois activé, votre serveur souscrira à tous les messages publics de ce relais et y enverra ses propres messages publics.
enabled: Activé
inbox_url: URL du relais
pending: En attente de l’approbation du relai
@@ -542,6 +573,13 @@ fr:
unassign: Dés-assigner
unresolved: Non résolus
updated_at: Mis à jour
+ rules:
+ add_new: Ajouter une règle
+ delete: Supprimer
+ description_html: Bien que la plupart des gens prétende avoir lu les conditions d'utilisation avant de les accepter, généralement les utilisateur·rice·s ne les lisent vraiment que lorsque un problème apparaît. Pour faciliter la visualisation des règles de votre serveur en un seul coup d’œil, présentez-les sous la forme d'une liste à puces ! Essayez de garder chacune des règles simple et concise, mais faites attention à ne pas non plus les diviser en de trop nombreux éléments distincts.
+ edit: Modifier la règle
+ empty: Aucune règle de serveur n'a été définie pour l'instant.
+ title: Règles du serveur
settings:
activity_api_enabled:
desc_html: Nombre de statuts affichés localement, de comptes actifs et de nouvelles inscriptions regroupé·e·s par semaine
@@ -565,9 +603,6 @@ fr:
users: Aux utilisateur·rice·s connecté·e·s localement
domain_blocks_rationale:
title: Montrer la raison
- enable_bootstrap_timeline_accounts:
- desc_html: Faire suivre automatiquement les comptes configurés aux nouveaux·lles utilisateurs·rices afin que leur flux personnel ne démarre pas vide
- title: Activer les abonnements par défaut pour les nouveaux·elles utilisateur·rice·s
hero:
desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette du serveur
title: Image d’en-tête
@@ -575,7 +610,7 @@ fr:
desc_html: Affiché sur plusieurs pages. Au moins 293×205px recommandé. Lorsqu’il n’est pas défini, retombe à la mascotte par défaut
title: Image de la mascotte
peers_api_enabled:
- desc_html: Noms des domaines que ce serveur a découvert dans le fediverse
+ desc_html: Noms des domaines que ce serveur a découvert dans le fédiverse
title: Publier la liste des serveurs découverts
preview_sensitive_media:
desc_html: Les aperçus de lien sur les autres sites web afficheront une vignette même si les médias sont marqués comme sensibles
@@ -603,8 +638,8 @@ fr:
open: N’importe qui peut s’inscrire
title: Mode d’enregistrement
show_known_fediverse_at_about_page:
- desc_html: Lorsque l’option est activée, les pouets provenant de toutes les serveurs connus sont montrés dans la prévisualisation. Sinon, seuls les pouets locaux sont montrés
- title: Afficher le fediverse connu dans la prévisualisation du fil
+ desc_html: Lorsque désactivée, restreint le fil public accessible via la page d’accueil de l’instance pour ne montrer que le contenu local
+ title: Inclure le contenu fédéré sur la page de fil public sans authentification
show_staff_badge:
desc_html: Montrer un badge de responsable sur une page utilisateur·rice
title: Montrer un badge de responsable
@@ -618,12 +653,9 @@ fr:
desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description du serveur sera affiché par défaut.
title: Description courte du serveur
site_terms:
- desc_html: Affichée sur la page des conditions d’utilisation du site. Vous pouvez utiliser des balises HTML
+ desc_html: Vous pouvez écrire votre propre politique de confidentialité, conditions d’utilisation ou autre jargon juridique. Vous pouvez utiliser des balises HTML
title: Politique de confidentialité
site_title: Nom du serveur
- spam_check_enabled:
- desc_html: Mastodon peut signaler automatiquement les comptes qui envoient des messages non sollicités de façon répétée. Il peut y avoir des faux positifs.
- title: Automatisation anti-spam
thumbnail:
desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé
title: Vignette du serveur
@@ -654,13 +686,18 @@ fr:
no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné
title: Statuts du compte
with_media: Avec médias
+ system_checks:
+ database_schema_check:
+ message_html: Vous avez des migrations de base de données en attente. Veuillez les exécuter pour vous assurer que l'application se comporte comme prévu
+ rules_check:
+ action: Gérer les règles du serveur
+ message_html: Vous n'avez pas défini de règles pour le serveur.
+ sidekiq_process_check:
+ message_html: Aucun processus Sidekiq en cours d'exécution pour la/les file(s) d'attente %{value}. Veuillez vérifier votre configuration de Sidekiq
tags:
accounts_today: Utilisations uniques aujourd'hui
accounts_week: Utilisation unique cette semaine
breakdown: Répartition de l’utilisation actuelle par source
- context: Contexte
- directory: Dans l’annuaire
- in_directory: "%{count} dans l’annuaire"
last_active: Dernière activité
most_popular: Plus populaire
most_recent: Plus récent
@@ -669,7 +706,7 @@ fr:
reviewed: Traité
title: Hashtags
trending_right_now: Populaire en ce moment
- unique_uses_today: "%{count} posts aujourd'hui"
+ unique_uses_today: "%{count} publications aujourd'hui"
unreviewed: Non traité
updated_msg: Paramètres du hashtag mis à jour avec succès
title: Administration
@@ -677,6 +714,7 @@ fr:
add_new: Ajouter un nouveau
delete: Supprimer
edit_preset: Éditer les avertissements prédéfinis
+ empty: Vous n'avez pas encore créé de paramètres prédéfinis pour les avertissements.
title: Gérer les avertissements prédéfinis
admin_mailer:
new_pending_account:
@@ -687,7 +725,7 @@ fr:
body_remote: Quelqu’un de %{domain} a signalé %{target}
subject: Nouveau signalement sur %{instance} (#%{id})
new_trending_tag:
- body: 'Le hashtag #%{name} est dans les tendances aujourd’hui, mais il n’a pas été approuvé. Il ne sera pas affiché publiquement à moins que vous l’autorisiez, ou sauvegardez simplement ce formulaire tel quel pour ne plus jamais en entendre parler.'
+ body: 'Le hashtag #%{name} est dans les tendances aujourd’hui, mais il n’a pas encore été approuvé. Il ne sera pas affiché publiquement à moins que vous l’autorisiez. Sauvegardez simplement ce formulaire tel quel pour ne plus jamais en entendre parler.'
subject: Nouveau hashtag en attente d’approbation sur %{instance} (#%{name})
aliases:
add_new: Créer un alias
@@ -707,7 +745,7 @@ fr:
guide_link: https://fr.crowdin.com/project/mastodon
guide_link_text: Tout le monde peut y contribuer.
sensitive_content: Contenu sensible
- toot_layout: Agencement du pouet
+ toot_layout: Agencement des messages
application_mailer:
notification_preferences: Modifier les préférences de courriel
salutation: "%{name},"
@@ -749,7 +787,7 @@ fr:
cas: CAS
saml: SAML
register: S’inscrire
- registration_closed: "%{instance} n’accepte pas de nouveaux membres"
+ registration_closed: "%{instance} a désactivé les inscriptions"
resend_confirmation: Envoyer à nouveau les consignes de confirmation
reset_password: Réinitialiser le mot de passe
security: Sécurité
@@ -791,7 +829,7 @@ fr:
date:
formats:
default: "%d %b %Y"
- with_month_name: "%B %d, %Y"
+ with_month_name: "%d %B %Y"
datetime:
distance_in_words:
about_x_hours: "%{count} h"
@@ -851,7 +889,7 @@ fr:
archive_takeout:
date: Date
download: Télécharger votre archive
- hint_html: Vous pouvez demander une archive de vos pouets et médias téléversés. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours.
+ hint_html: Vous pouvez demander une archive de vos messages et médias téléversés. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours.
in_progress: Création de votre archive…
request: Demandez vos archives
size: Taille
@@ -873,7 +911,7 @@ fr:
home: Accueil et listes
notifications: Notifications
public: Fils publics
- thread: Conversations
+ thread: Discussions
edit:
title: Éditer le filtre
errors:
@@ -917,7 +955,7 @@ fr:
i_am_html: Je suis %{username} sur %{service}.
identity: Identité
inactive: Inactive
- publicize_checkbox: 'Et le poueter :'
+ publicize_checkbox: 'Et publier ceci :'
publicize_toot: 'C’est prouvé ! Je suis %{username} sur %{service}: %{url}'
remove: Retirer la preuve du compte
removed: Preuve retirée du compte avec succès
@@ -996,10 +1034,10 @@ fr:
warning:
backreference_required: Le nouveau compte doit d'abord être configuré pour faire référence à celui-ci en définissant un alias
before: 'Avant de procéder, veuillez lire attentivement ces notes :'
- cooldown: Après le déménagement, il y a une période de gel pendant laquelle vous ne pourrez plus re-déménager
+ cooldown: Après le déménagement, il y a une période d’attente pendant laquelle vous ne pourrez pas re-déménager
disabled_account: Votre compte actuel ne sera pas entièrement utilisable par la suite. Cependant, vous aurez accès à l'exportation de données et à la ré-activation.
followers: Cette action va déménager tou·te·s les abonné·e·s du compte actuel vers le nouveau compte
- only_redirect_html: Alternativement, vous pouvez seulement appliquer une redirection sur votre profil.
+ only_redirect_html: Alternativement, vous pouvez seulement afficher une redirection sur votre profil.
other_data: Aucune autre donnée ne sera déplacée automatiquement
redirect: Le profil de votre compte actuel sera mis à jour avec un avis de redirection et sera exclu des recherches
moderation:
@@ -1007,7 +1045,7 @@ fr:
move_handler:
carry_blocks_over_text: Cet utilisateur que vous aviez bloqué est parti de %{acct}.
carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}.
- copy_account_note_text: 'Cet·te utilisateur·rice est parti de %{acct}, voici vos notes précédentes à son sujet :'
+ copy_account_note_text: 'Cet·te utilisateur·rice est parti·e de %{acct}, voici vos notes précédentes à son sujet :'
notification_mailer:
digest:
action: Voir toutes les notifications
@@ -1021,8 +1059,8 @@ fr:
other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418"
title: Pendant votre absence…
favourite:
- body: "%{name} a ajouté votre pouet à ses favoris :"
- subject: "%{name} a ajouté votre pouet à ses favoris"
+ body: "%{name} a ajouté votre message à ses favoris :"
+ subject: "%{name} a ajouté votre message à ses favoris"
title: Nouveau favori
follow:
body: "%{name} vous suit !"
@@ -1038,10 +1076,14 @@ fr:
body: "%{name} vous a mentionné⋅e dans :"
subject: "%{name} vous a mentionné·e"
title: Nouvelle mention
+ poll:
+ subject: Un sondage de %{name} est terminé
reblog:
- body: "%{name} a partagé votre statut :"
- subject: "%{name} a partagé votre statut"
+ body: 'Votre message été partagé par %{name} :'
+ subject: "%{name} a partagé votre message"
title: Nouveau partage
+ status:
+ subject: "%{name} vient de publier"
notifications:
email_events: Événements pour les notifications par courriel
email_events_hint: 'Sélectionnez les événements pour lesquels vous souhaitez recevoir des notifications :'
@@ -1083,7 +1125,7 @@ fr:
too_many_options: ne peut contenir plus de %{max} propositions
preferences:
other: Autre
- posting_defaults: Paramètres par défaut des pouets
+ posting_defaults: Paramètres de publication par défaut
public_timelines: Fils publics
reactions:
errors:
@@ -1104,7 +1146,7 @@ fr:
relationship: Relation
remove_selected_domains: Supprimer tous les abonné·e·s des domaines sélectionnés
remove_selected_followers: Supprimer les abonné·e·s sélectionnés
- remove_selected_follows: Cesser de suivre les utilisateur·rice·s sélectionné·e·s
+ remove_selected_follows: Cesser de suivre les comptes sélectionnés
status: État du compte
remote_follow:
acct: Entrez l’adresse profil@serveur depuis laquelle vous voulez effectuer cette action
@@ -1116,16 +1158,16 @@ fr:
remote_interaction:
favourite:
proceed: Confirmer l’ajout aux favoris
- prompt: 'Vous souhaitez mettre ce pouet en favori :'
+ prompt: 'Vous souhaitez ajouter ce message à vos favoris :'
reblog:
proceed: Confirmer le partage
- prompt: 'Vous souhaitez partager ce pouet :'
+ prompt: 'Vous souhaitez partager ce message :'
reply:
proceed: Confirmer la réponse
- prompt: 'Vous souhaitez répondre à ce pouet :'
+ prompt: 'Vous souhaitez répondre à ce message :'
scheduled_statuses:
- over_daily_limit: Vous avez dépassé la limite de %{limit} pouets planifiés pour ce jour
- over_total_limit: Vous avez dépassé la limite de %{limit} pouets planifiés
+ over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour
+ over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés
too_soon: La date planifiée doit être dans le futur
sessions:
activity: Dernière activité
@@ -1190,8 +1232,6 @@ fr:
relationships: Abonnements et abonné·e·s
two_factor_authentication: Identification à deux facteurs
webauthn_authentication: Clés de sécurité
- spam_check:
- spam_detected: Ceci est un rapport automatisé. Des pollupostages ont été détectés.
statuses:
attached:
audio:
@@ -1234,14 +1274,15 @@ fr:
sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
title: '%{name} : "%{quote}"'
visibilities:
+ direct: Direct
private: Abonné⋅e⋅s uniquement
private_long: Afficher seulement à vos vos abonné·e·s
- public: Public
+ public: Publique
public_long: Tout le monde peut voir vos statuts
unlisted: Public sans être affiché sur le fil public
- unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas sur listés sur les fils publics
+ unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas listés sur les fils publics
stream_entries:
- pinned: Pouet épinglé
+ pinned: Message épinglé
reblogged: a partagé
sensitive_content: Contenu sensible
tags:
@@ -1252,29 +1293,29 @@ fr:
Quelles informations collectons-nous ?
-
Que faisons-nous des informations que nous collectons ?
-
-
Comment protégeons-nous vos informations ?
-
@@ -1283,8 +1324,8 @@ fr:
-
Utilisons-nous des témoins de connexion ?
-
- Divulguons-nous des informations à des tierces parties ?
+ Divulguons-nous des informations à des tiers ?
-
Utilisation de ce site par les enfants
- <a> ’s <em> gu sònraichte.
+ title: Tuairisgeul an fhrithealaiche
+ site_description_extended:
+ desc_html: Seo deagh àite airson an còd-giùlain, na riaghailtean ’s na comharran-treòrachaidh agad agus do nithean eile a tha sònraichte mun fhrithealaiche agad. ‘S urrainn dhut tagaichean HTML a chleachdadh
+ title: Fiosrachadh leudaichte gnàthaichte
+ site_short_description:
+ desc_html: Nochdaidh seo air a’ bhàr-taoibh agus sna meata-thagaichean. Mìnich dè th’ ann am Mastodon agus dè tha sònraichte mun fhrithealaiche agad ann an aon earrann a-mhàin.
+ title: Tuairisgeul goirid an fhrithealaiche
+ site_terms:
+ desc_html: "’S urrainn dhut am poileasaidh prìobhaideachd no teirmichean na seirbheise agad fhèin no fiosrachadh laghail sa bith eile a sgrìobhadh. ‘S urrainn dhut tagaichean HTML a chleachdadh"
+ title: Teirmichean gnàthaichte na seirbheise
+ site_title: Ainm an fhrithealaiche
+ thumbnail:
+ desc_html: Thèid seo a chleachdadh airson ro-sheallaidhean slighe OpenGraph no API. Mholamaid 1200x630px
+ title: Dealbhag an fhrithealaiche
+ timeline_preview:
+ desc_html: Seall ceangal dhan loidhne-ama phoblach air an duilleag-landaidh is ceadaich inntrigeadh gun ùghdarrachadh leis an API air an loidhne-ama phoblach
+ title: Ceadaich inntrigeadh gun ùghdarrachadh air an loidhne-ama phoblach
+ title: Roghainnean na làraich
+ trendable_by_default:
+ desc_html: Bheir seo buaidh air na tagaichean hais nach deach a dhì-cheadachadh roimhe
+ title: Leig le tagaichean hais treandadh às aonais lèirmheis ro làimh
+ trends:
+ desc_html: Seall tagaichean hais gu poblach a chaidh lèirmheas a dhèanamh orra roimhe ’s a tha a’ treandadh aig a àm seo
+ title: Tagaichean hais a’ treandadh
+ site_uploads:
+ delete: Sguab às am faidhle a chaidh a luchdadh suas
+ destroyed_msg: Chaidh an luchdadh suas dhan làrach a sguabadh às!
+ statuses:
+ back_to_account: Till gu duilleag a’ chunntais
+ batch:
+ delete: Sguab às
+ nsfw_off: Cuir comharra nach eil e frionasach
+ nsfw_on: Cuir comharra gu bheil e frionasach
+ deleted: Chaidh a sguabadh às
+ failed_to_execute: Cha b’ urrainn dhuinn a ruith
+ media:
+ title: Meadhanan
+ no_media: Chan eil meadhanan ann
+ no_status_selected: Cha deach post sam bith atharrachadh o nach deach gin dhiubh a thaghadh
+ title: Postaichean a’ chunntais
+ with_media: Le meadhanan riutha
+ system_checks:
+ database_schema_check:
+ message_html: Tha imrichean stòir-dhàta ri dhèiligeadh ann. Ruith iad a dhèanamh cinnteach gum bi giùlan na h-aplacaid mar a bhiodhte ’n dùil
+ rules_check:
+ action: Stiùirich riaghailtean an fhrithealaiche
+ message_html: Cha do mhìnich thu riaghailtean an fhrithealaiche fhathast.
+ sidekiq_process_check:
+ message_html: Chan eil pròiseas Sidekiq sam bith a ruith dhan chiutha/dha na ciuthan %{value}. Thoir sùil air an rèiteachadh Sidekiq agad
+ tags:
+ accounts_today: Cleachdaidhean fa leth an-diugh
+ accounts_week: Cleachdaidhean fa leth an t-seachdain seo
+ breakdown: Seall an cleachdadh an-diugh a-rèir tùis
+ last_active: Air a chleachdadh o chionn ghoirid
+ most_popular: Na tha fèill mhòr air
+ most_recent: Air a chruthachadh o chionn ghoirid
+ name: Taga hais
+ review: Dèan lèirmheas air an staid
+ reviewed: Chaidh lèirmheas a dhèanamh air
+ title: Tagaichean hais
+ trending_right_now: A’ treandadh an-dràsta
+ unique_uses_today: "%{count} a’ postadh an-diugh"
+ unreviewed: Gun lèirmheas
+ updated_msg: Chaidh roghainnean nan tagaichean hais ùrachadh
+ title: Rianachd
+ warning_presets:
+ add_new: Cuir fear ùr ris
+ delete: Sguab às
+ edit_preset: Deasaich rabhadh ro-shuidhichte
+ empty: Cha do mhìnich thu ro-sheataichean rabhaidhean fhathast.
+ title: Stiùirich na rabhaidhean ro-shuidhichte
+ admin_mailer:
+ new_pending_account:
+ body: Chì thu mion-fhiosrachadh a’ chunntais ùir gu h-ìosal. ’S urrainn dhut gabhail ris an iarrtas seo no a dhiùltadh.
+ subject: Tha cunntas ùr air %{instance} a’ feitheamh air lèirmheas (%{username})
+ new_report:
+ body: Rinn %{reporter} gearan air %{target}
+ body_remote: Rinn cuideigin o %{domain} gearan air %{target}
+ subject: Tha gearan ùr aig %{instance} (#%{id})
+ new_trending_tag:
+ body: 'Tha an taga hais #%{name} a’ treandadh an-diugh ach cha deach lèirmheas a dhèanamh air cheana. Cha nochd e gu poblach ach ma cheadaicheas tu e. Ma shàbhaileas tu am foirm seo mar a tha e, cha bhodraig e a-rithist thu.'
+ subject: Tha taga hais ùr air %{instance} a’ feitheamh air lèirmheas (#%{name})
+ aliases:
+ add_new: Cruthaich alias
+ created_msg: Chaidh an t-alias ùr a chruthachadh. ’S urrainn dhut tòiseachadh air imrich on seann-chunntas a-nis.
+ deleted_msg: Chaidh an t-alias a thoirt air falbh. Chan urrainn dhut imrich on chunntas ud chan fhear seo tuilleadh.
+ empty: Chan eil alias agad.
+ hint_html: Nam bu mhiann leat imrich o chunntas eile dhan fhear seo, ’s urrainn dhut alias a chruthachadh an-seo agus feumaidh tu sin a dhèanamh mus urrainn dhut tòiseachadh air an luchd-leantainn agad imrich on seann-chunntas dhan fhear seo. Tha an gnìomh seo fhèin neo-chronail is chan eil e buan. Tòisichidh tu air imrich a’ chunntais on t-seann-chunntas.
+ remove: Dì-cheangail an t-alias
+ appearance:
+ advanced_web_interface: Eadar-aghaidh-lìn adhartach
+ advanced_web_interface_hint: 'Ma tha thu airson leud gu lèir na sgrìn agad a chleachdadh, leigidh an eadar-aghaidh-lìn adhartach leat gun rèitich thu mòran cholbhan eadar-dhealaichte ach am faic thu na thogras tu de dh’fhiosrachadh aig an aon àm: Dachaigh, brathan, loidhne-ama cho-naisgte, na thogras tu de liostaichean is tagaichean hais.'
+ animations_and_accessibility: Beòthachaidhean agus so-ruigsinneachd
+ confirmation_dialogs: Còmhraidhean dearbhaidh
+ discovery: Lorg
+ localization:
+ body: Tha Mastodon ’ga eadar-theangachadh le saor-thoilich.
+ guide_link: https://crowdin.com/project/mastodon
+ guide_link_text: "’S urrainn do neach sam bith cuideachadh."
+ sensitive_content: Susbaint fhrionasach
+ toot_layout: Co-dhealbhachd nam postaichean
+ application_mailer:
+ notification_preferences: Atharraich roghainnean a’ phuist-d
+ salutation: "%{name},"
+ settings: 'Atharraich roghainnean a’ phuist-d: %{link}'
+ view: 'Seall:'
+ view_profile: Seall a’ phròifil
+ view_status: Seall am post
+ applications:
+ created: Chaidh an t-iarrtas a chruthachadh
+ destroyed: Chaidh an t-iarrtas a sguabadh às
+ invalid_url: Tha an t-URL a thugadh seachad mì-dhligheach
+ regenerate_token: Ath-ghin an tòcan inntrigidh
+ token_regenerated: Chaidh an tòcan inntrigidh ath-ghintinn
+ warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e!
+ your_token: An tòcan inntrigidh agad
+ auth:
+ apply_for_account: Iarr cuireadh
+ change_password: Facal-faire
+ checkbox_agreement_html: Gabhaidh mi ri riaghailtean an fhrithealaiche ’s teirmichean a’ chleachdaidh
+ checkbox_agreement_without_rules_html: Gabhaidh mi ri teirmichean a’ chleachdaidh
+ delete_account: Sguab às an cunntas
+ delete_account_html: Nam bu mhiann leat an cunntas agad a sguabadh às, nì thu an-seo e. Thèid dearbhadh iarraidh ort.
+ description:
+ prefix_invited_by_user: Thug @%{name} cuireadh dhut ach am faigh thu ballrachd air an fhrithealaiche seo de Mhastodon!
+ prefix_sign_up: Clàraich le Mastodon an-diugh!
+ suffix: Le cunntas, ’s urrainn dhut leantainn air daoine, naidheachdan a phostadh agus conaltradh leis an luchd-chleachdaidh air frithealaiche Mastodon sam bith is a bharrachd!
+ didnt_get_confirmation: Nach d’fhuair thu an stiùireadh mun dearbhadh?
+ dont_have_your_security_key: Nach eil iuchair tèarainteachd agad?
+ forgot_password: Na dhìochuimhnich thu am facal-faire agad?
+ invalid_reset_password_token: Tha tòcan ath-shuidheachadh an fhacail-fhaire mì-dhligheach no dh’fhalbh an ùine air. Feuch an iarr thu fear ùr.
+ link_to_otp: Cuir a-steach còd dà-cheumnach no còd aisig on fhòn agad
+ link_to_webauth: Cleachd uidheam na h-iuchrach tèarainteachd agad
+ login: Clàraich a-steach
+ logout: Clàraich a-mach
+ migrate_account: Imrich gu cunntas eile
+ migrate_account_html: Nam bu mhiann leat an cunntas seo ath-stiùireadh gu fear eile, ’s urrainn dhut a rèiteachadh an-seo.
+ or_log_in_with: No clàraich a-steach le
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Clàraich leinn
+ registration_closed: Cha ghabh %{instance} ri buill ùra
+ resend_confirmation: Cuir an stiùireadh mun dearbhadh a-rithist
+ reset_password: Ath-shuidhich am facal-faire
+ security: Tèarainteachd
+ set_new_password: Suidhich facal-faire ùr
+ setup:
+ email_below_hint_html: Mur eil am post-d gu h-ìosal mar bu chòir, ’s urrainn dhut atharrachadh an-seo agus gheibh thu post-d dearbhaidh ùr.
+ email_settings_hint_html: Chaidh am post-d dearbhaidh a chur gu %{email}. Mur eil an seòladh puist-d seo mar bu chòir, ’s urrainn dhut atharrachadh ann an roghainnean a’ chunntais.
+ title: Suidheachadh
+ status:
+ account_status: Staid a’ chunntais
+ confirming: A’ feitheamh air coileanadh an dearbhaidh on phost-d.
+ functional: Tha an cunntas agad ag obair gu slàn.
+ pending: Feumaidh an sgioba againn lèirmheas a dhèanamh air d’ iarrtas. Dh’fhaoidte gun doir seo greis. Gheibh thu post-d nuair a bhios sinn air aontachadh ri d’ iarrtas.
+ redirecting_to: Chan eil an cunntas gad gnìomhach on a tha e ’ga ath-stiùireadh gu %{acct}.
+ too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist.
+ trouble_logging_in: A bheil duilgheadas agad leis a’ chlàradh a-steach?
+ use_security_key: Cleachd iuchair tèarainteachd
+ authorize_follow:
+ already_following: Tha thu a’ leantainn air a’ chunntas seo mu thràth
+ already_requested: Chuir thu iarrtas leantainn dhan chunntas seo mu thràth
+ error: Gu mì-fhortanach, thachair mearachd le lorg a’ chunntais chèin
+ follow: Lean air
+ follow_request: 'Chuir thu iarrtas leantainn gu:'
+ following: 'Taghta! Chaidh leat a’ leantainn air:'
+ post_follow:
+ close: Air neo dùin an uinneag seo.
+ return: Seall pròifil a’ chleachdaiche
+ web: Tadhail air an lìon
+ title: Lean air %{acct}
+ challenge:
+ confirm: Lean air adhart
+ hint_html: "Gliocas: Chan iarr sinn am facal-faire agad ort a-rithist fad uair a thìde."
+ invalid_password: Facal-faire mì-dhligheach
+ prompt: Dearbh am facal-faire airson leantainn air adhart
+ crypto:
+ errors:
+ invalid_key: "– chan e iuchair Ed25519 no Curve25519 dhligheach a th’ ann"
+ invalid_signature: "– chan e soidhneadh Ed25519 dligheach a th’ ann"
+ date:
+ formats:
+ default: "%d %b %Y"
+ with_month_name: "%d %B %Y"
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}u"
+ about_x_months: "%{count}mì"
+ about_x_years: "%{count}bl"
+ almost_x_years: "%{count}bl"
+ half_a_minute: An-dràsta fhèin
+ less_than_x_minutes: "%{count}m"
+ less_than_x_seconds: An-dràsta fhèin
+ over_x_years: "%{count}bl"
+ x_days: "%{count}l"
+ x_minutes: "%{count}m"
+ x_months: "%{count}mì"
+ x_seconds: "%{count}d"
+ deletes:
+ challenge_not_passed: Chan eil am fiosrachadh a chuir thu a-steach mar bu chòir
+ confirm_password: Cuir a-steach am facal-faire làithreach a dhearbhadh cò thusa
+ confirm_username: Cuir a-steach an t-ainm-cleachdaiche agad a dhearbhadh a’ ghnìomha
+ proceed: Sguab às an cunntas
+ success_msg: Chaidh an cunntas agad a sguabadh às
+ warning:
+ before: 'Mus lean thu air adhart, leugh na nòtaichean seo gu cùramach:'
+ caches: Dh’fhaoidte gum mair susbaint ann an tasgadain fhrithealaichean eile
+ data_removal: Thèid na postaichean agad ’s dàta eile a thoirt air falbh gu buan
+ email_change_html: ’S urrainn dhut an seòladh puist-d agad atharrachadh gun a bhith a’ sguabadh às a’ chunntais agad
+ email_contact_html: Mura faigh thu fhathast e, ’s urrainn dhut post-d a chur gu %{email} airson cuideachaidh
+ email_reconfirmation_html: Mur an d’ fhuair thu am post-d dearbhaidh, ’s urrainn dhut iarraidh a-rithist
+ irreversible: Chan urrainn dhut an cunntas agad aiseag no ath-ghnìomhachadh
+ more_details_html: Airson barrachd fiosrachaidh faic am poileasaidh prìobhaideachd.
+ username_available: Bidh an t-ainm-cleachdaiche agad ri fhaighinn a-rithist
+ username_unavailable: Cha bhi an t-ainm-cleachdaiche agad ri fhaighinn fhathast
+ directories:
+ directory: Eòlaire nam pròifil
+ explanation: Lorg cleachdaichean stèidhichte air an ùidhean
+ explore_mastodon: Rùraich %{title}
+ domain_validator:
+ invalid_domain: "– chan eil seo ’na ainm àrainne dligheach"
+ errors:
+ '400': Cha robh an t-iarrtas a chuir thu a-null dligheach no bha droch-chruth air.
+ '403': Chan eil cead agad gus an duilleag seo a shealltainn.
+ '404': Chan eil an duilleag a tha thu a’ lorg an-seo.
+ '406': Chan eil an duilleag seo ri fhaighinn san fhòrmat a dh’iarr thu.
+ '410': Chan eil an duilleag a tha thu a’ lorg an-seo tuilleadh.
+ '422':
+ content: Dh’fhàillig le dearbhadh na tèarainteachd. A bheil thu a’ bacadh nam briosgaidean?
+ title: Dh’fhàillig le dearbhadh na tèarainteachd
+ '429': Cus iarrtasan
+ '500':
+ content: Tha sinn duilich ach chaidh rudeigin ceàrr a-bhos an-seo.
+ title: Chan eil an duilleag seo mar bu chòir
+ '503': Cha b’ urrainn an duilleag fhrithealadh ri linn mearachd sealach an fhrithealaiche.
+ noscript_html: Airson aplacaid-lìn Mastodon a chleachdadh, cuir JavaScript an comas. Mar roghainn eile, ’s urrainn dhut fear dhe na cliantan tùsail airson Mastodon dhan ùrlar agad fheuchainn.
+ existing_username_validator:
+ not_found: cha b’ urrainn dhuinn cleachdaiche ionadail a lorg air a bheil an t-ainm-cleachdaiche seo
+ not_found_multiple: cha b’ urrainn dhuinn %{usernames} a lorg
+ exports:
+ archive_takeout:
+ date: Ceann-latha
+ download: Luchdaich a-nuas an tasg-lann agad
+ hint_html: "’S urrainn dhut tasg-lann iarraidh dhe na postaichean agad is meadhanan a luchdaich thu suas. Thèid an dàta às-phortadh san fhòrmat ActivityPub a ghabhas leughadh le bathar-bog co-chòrdail sam bith. ’S urrainn dhut tasg-lann iarraidh gach 7 làithean."
+ in_progress: A’ cruinneachadh na tasg-lainn agad…
+ request: Iarr an tasg-lann agad
+ size: Meud
+ blocks: Tha thu a’ bacadh
+ bookmarks: Comharran-lìn
+ csv: CSV
+ domain_blocks: Bacaidhean àrainne
+ lists: Liostaichean
+ mutes: Tha thu a’ mùchadh
+ storage: Stòras mheadhanan
+ featured_tags:
+ add_new: Cuir fear ùr ris
+ errors:
+ limit: Bhrosnaich thu an uiread as motha de thagaichean hais mu thràth
+ hint_html: "Dè th’ anns na tagaichean hais brosnaichte? Thèid an sealltainn gu follaiseach air a’ phròifil phoblach agad agus ’s urrainnear na postaichean poblach agad sa bheil na tagaichean hais sònraichte sin a bhrabhsadh leotha. ’S e deagh-acainn a th’ annta airson sùil a chumail air obair chruthachail no pròiseactan fada."
+ filters:
+ contexts:
+ account: Pròifilean
+ home: Dachaigh ’s liostaichean
+ notifications: Brathan
+ public: Loidhnichean-ama poblach
+ thread: Còmhraidhean
+ edit:
+ title: Deasaich a’ chriathrag
+ errors:
+ invalid_context: Cha deach co-theacs a sholar no tha e mì-dhligheach
+ invalid_irreversible: Chan obraich criathradh buan ach ann an co-theacsa na dachaigh no na brathan
+ index:
+ delete: Sguab às
+ empty: Chan eil criathrag agad.
+ title: Criathragan
+ new:
+ title: Cuir criathrag ùr ris
+ footer:
+ developers: Luchd-leasachaidh
+ more: Barrachd…
+ resources: Goireasan
+ trending_now: A’ treandadh an-dràsta
+ generic:
+ all: Na h-uile
+ changes_saved_msg: Chaidh na h-atharraichean a shàbhaladh!
+ copy: Dèan lethbhreac
+ delete: Sguab às
+ no_batch_actions_available: Chan eil gnìomh grunna ri fhaighinn air an duilleag seo
+ order_by: Seòrsaich a-rèir
+ save_changes: Sàbhail na h-atharraichean
+ validation_errors:
+ few: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air na %{count} mhearachdan gu h-ìosal
+ one: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air an %{count} mhearachd gu h-ìosal
+ other: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air an %{count} mearachd gu h-ìosal
+ two: Tha rud ann nach eil buileach ceart fhathast! Thoir sùil air an %{count} mhearachd gu h-ìosal
+ html_validator:
+ invalid_markup: 'tha HTML markup mì-dhligheach ann: %{error}'
+ identity_proofs:
+ active: Gnìomhach
+ authorize: Tha, ùghdarraich
+ authorize_connection_prompt: A bheil thu airson an ceangal crioptaichte seo ùghdarrachadh?
+ errors:
+ failed: Dh’fhàillig leis a’ cheangal chrioptaichte. Feuch ris a-rithist o %{provider}.
+ keybase:
+ invalid_token: "’S e haisichean de shoidhnidhean a th’ anns na tòcanan Keybase agus feumaidh 66 caractar sia-dheicheach a bhith annta"
+ verification_failed: Chan aithnich Keybase an tòcan seo ’na shoidhneadh aig cleachdaiche Keybase %{kb_username}. Feuch ris a-rithist o Keybase.
+ wrong_user: Chan urrainn dhuinn dearbhadh air %{proving} a chruthachadh fhad ’s a bhios tu clàraichte a-steach mar %{current}. Clàraich a-steach mar %{proving} is feuch ris a-rithist.
+ explanation_html: "’S urrainn dhut na dearbh-aithnean eile agad a cheangal le crioptachadh o ùrlaran eile, can Keybase. Leigidh seo le càch teachdaireachdan crioptaichte a chur thugad air na h-ùrlaran sin agus bheir seo comas dhaibh gun cuir iad earbsa san t-susbaint a chuireas tu thuca ’s iad cinnteach gur ann uat-sa fhèin a thàinig i."
+ i_am_html: Is mise %{username} air %{service}.
+ identity: Dearbh-aithne
+ inactive: Neo-ghnìomhach
+ publicize_checkbox: "’S postaich seo mar dhùd:"
+ publicize_toot: 'Chaidh a dhearbhadh! Is mise %{username} air %{service}: %{url}'
+ remove: Thoir an dearbhadh air falbh on chunntas
+ removed: Chaidh an dearbhadh a thoirt air falbh on chunntas
+ status: Staid an dearbhaidh
+ view_proof: Seall an dearbhadh
+ imports:
+ errors:
+ over_rows_processing_limit: tha còrr is %{count} ràgh(an) ann
+ modes:
+ merge: Co-aonaich
+ merge_long: Cùm na reacordan a tha ann is cuir feadhainn ùr ris
+ overwrite: Sgrìobh thairis air
+ overwrite_long: Cuir na reacordan ùra an àite na feadhna a tha ann
+ preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine air a leanas tu no a tha thu a’ bacadh."
+ success: Chaidh an dàta agad a luchdadh suas is thèid a phròiseasadh a-nis
+ types:
+ blocking: Liosta-bhacaidh
+ bookmarks: Comharran-lìn
+ domain_blocking: Liosta-bhacaidh àrainnean
+ following: Liosta dhen fheadhainn air a leanas tu
+ muting: Liosta a’ mhùchaidh
+ upload: Luchdaich suas
+ in_memoriam_html: Mar chuimhneachan.
+ invites:
+ delete: Cuir à gnìomh
+ expired: Dh’fhalbh an ùine air
+ expires_in:
+ '1800': Leth-uair a thìde
+ '21600': 6 uairean a thìde
+ '3600': Uair a thìde
+ '43200': 12 uair a thìde
+ '604800': Seachdain
+ '86400': Latha
+ expires_in_prompt: Chan ann idir
+ generate: Gin ceangal cuiridh
+ invited_by: 'Fhuair thu cuireadh o:'
+ max_uses:
+ few: "%{count} cleachdaichean"
+ one: "%{count} chleachdadh"
+ other: "%{count} cleachdadh"
+ two: "%{count} chleachdadh"
+ max_uses_prompt: Gun chrìoch
+ prompt: Cruthaich is co-roinn ceanglaichean le càch airson inntrigeadh dhan fhrithealaiche seo a thoirt dhaibh
+ table:
+ expires_at: Falbhaidh an ùine air
+ uses: Cleachdadh
+ title: Thoir cuireadh do dhaoine
+ lists:
+ errors:
+ limit: Ràinig thu na tha ceadaichte dhut de liostaichean
+ media_attachments:
+ validations:
+ images_and_video: Chan urrainn dhut video a cheangal ri post sa bheil dealbh mu thràth
+ not_ready: Chan urrainn dhuinn faidhlichean a cheangal ris nach eil air am pròiseasadh fhathast. Feuch ris a-rithist an ceann greis!
+ too_many: Chan urrainn dhut barrachd air 4 faidhlichean a ceangal ris
+ migrations:
+ acct: Air imrich gu
+ cancel: Sguir dhen ath-stiùireadh
+ cancel_explanation: Ma sguireas tu dhen ath-stiùireadh, thèid an cunntas làithreach agad a ghnìomhachadh a-rithist ach chan aisig sin an luchd-leantainn dhut a chaidh imrich dhan chunntas ud.
+ cancelled_msg: Chaidh sgur dhen ath-stiùireadh.
+ errors:
+ already_moved: "– seo an t-aon chunntas chan a ghluais thu mu thràth"
+ missing_also_known_as: "– chan eil seo ’na alias aig a’ chunntas seo"
+ move_to_self: "– chan fhaod thu an cunntas làithreach a chleachdadh dha seo"
+ not_found: "– cha deach seo a lorg"
+ on_cooldown: Tha àm socrachaidh ort
+ followers_count: Luchd-leantainn aig àm na h-imrich
+ incoming_migrations: Imrich o chunntas eile
+ incoming_migrations_html: Airson imrich o chunntas eile dhan fhear seo, feumaidh tu alias cunntais a chruthachadh an toiseach.
+ moved_msg: Tha an cunntas agad ’ga ath-stiùireadh gu %{acct} a-nis ’s an luchd-leantainn agad ’gan imrich.
+ not_redirecting: Chan eil an cunntas agad ’ga ath-stiùireadh gu cunntas sam bith eile aig an àm seo.
+ on_cooldown: Rinn thu imrich air a’ chunntas agad o chionn ghoirid. Bidh an gleus seo ri làimh dhut a-rithist an ceann %{count} là(ithean).
+ past_migrations: Imrichean roimhpe
+ proceed_with_move: Imrich an luchd-leantainn
+ redirected_msg: Tha an cunntas agad ’ga ath-stiùireadh gu %{acct} a-nis.
+ redirecting_to: Tha an cunntas agad ’ga ath-stiùireadh gu %{acct}.
+ set_redirect: Suidhich ath-stiùireadh
+ warning:
+ backreference_required: Feumaidh tu an cunntas ùr a rèiteachadh an toiseach ach an tomh e air ais dhan fhear seo
+ before: 'Mus lean thu air adhart, leugh na nòtaichean seo gu cùramach:'
+ cooldown: Às dèidh imrich, tha greis feitheimh ann rè nach urrainn dhut imrich eile a dhèanamh
+ disabled_account: Cha ghabh an cunntas làithreach agad a chleachdadh gu slàn às a dhèidh. Gidheadh, bidh an dà chuid às-phortadh an dàta is ath-ghnìomhachadh ri fhaighinn dhut.
+ followers: Imrichidh an gnìomh seo a h-uile neach-leantainn on chunntas làithreach dhan chunntas ùr
+ only_redirect_html: Mar roghainn eile, ’s urrainn dhut ath-stiùireadh a-mhàin a chur air a’ phròifil agad.
+ other_data: Cha dèid dàta sam bith eile imrich gu fèin-obrachail
+ redirect: Thèid pròifil a’ chunntais làithrich agad ùrachadh le brath ath-stiùiridh agus às-dhùnadh on lorg
+ moderation:
+ title: Maorsainneachd
+ move_handler:
+ carry_blocks_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a bhacadh.
+ carry_mutes_over_text: Chaidh an cleachdaiche seo imrich o %{acct} a b’ àbhaist dhut a mhùchadh.
+ copy_account_note_text: 'Da cleachdaiche air gluasad o %{acct}, seo na nòtaichean a bh’ agad mu dhèidhinn roimhe:'
+ notification_mailer:
+ digest:
+ action: Seall a h-uile brath
+ body: Seo geàrr-chunntas air na h-atharraichean nach fhaca thu on tadhal mu dheireadh agad %{since}
+ mention: 'Thug %{name} iomradh ort an-seo:'
+ new_followers_summary:
+ few: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
+ one: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
+ other: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
+ two: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
+ subject:
+ few: "%{count} brathan ùra on tadhal mu dheireadh agad \U0001F418"
+ one: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418"
+ other: "%{count} brath ùr on tadhal mu dheireadh agad \U0001F418"
+ two: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418"
+ title: Fhad ’s a bha thu air falbh…
+ favourite:
+ body: 'Is annsa le %{name} am post agad:'
+ subject: Is annsa le %{name} am post agad
+ title: Annsachd ùr
+ follow:
+ body: Tha %{name} a’ leantainn ort a-nis!
+ subject: Tha %{name} a’ leantainn ort a-nis
+ title: Neach-leantainn ùr
+ follow_request:
+ action: Stiùirich na h-iarrtasan leantainn
+ body: Dh’iarr %{name} leantainn ort
+ subject: 'Neach-leantainn ri dhèiligeadh: %{name}'
+ title: Iarrtas leantainn ùr
+ mention:
+ action: Freagair
+ body: 'Thug %{name} iomradh ort an-seo:'
+ subject: Thug %{name} iomradh ort
+ title: Iomradh ùr
+ poll:
+ subject: Thàinig cunntas-bheachd le %{name} gu crìoch
+ reblog:
+ body: 'Chaidh am post agad a bhrosnachadh le %{name}:'
+ subject: Bhrosnaich %{name} am post agad
+ title: Brosnachadh ùr
+ status:
+ subject: Tha %{name} air post a sgrìobhadh
+ notifications:
+ email_events: Tachartasan nam brathan puist-d
+ email_events_hint: 'Tagh na tachartasan dhan a bheil thu airson brathan fhaighinn:'
+ other_settings: Roghainnean eile nam brathan
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ units:
+ billion: bill.
+ million: mill.
+ quadrillion: quad.
+ thousand: mìle
+ trillion: trill.
+ otp_authentication:
+ code_hint: Cuir a-steach an còd a chaidh a ghintinn leis an aplacaid dearbhaidh agad airson a dhearbhadh
+ description_html: Ma chuireas tu an comas an dearbhadh dà-cheumnach le aplacaid dearbhaidh, feumaidh am fòn agad a bhith ri làimh dhut airson clàradh a-steach is ginidh esan tòcanan dhut.
+ enable: Cuir an comas
+ instructions_html: "Sganaich an còd QR le Google Authenticator no aplacaid TOTP sam bith eile air an fhòn agad. O seo a-mach, ginidh an aplacaid ud tòcanan a dh’fheumas tu cur a-steach nuair a bhios tu ri clàradh a-steach."
+ manual_instructions: 'Mur urrainn dhut an còd QR a sganadh is ma dh’fheumas tu a chur a-steach a làimh, seo an rùn ’na theasa lom dhut:'
+ setup: Suidhich
+ wrong_code: Cha robh an còd a chuir thu a-steach mar bu chòir! A bheil àm an fhrithealaiche agus àm an uidheim a-rèir a chèile?
+ pagination:
+ newer: Nas ùire
+ next: Air adhart
+ older: Nas sine
+ prev: Air ais
+ truncate: "…"
+ polls:
+ errors:
+ already_voted: Chuir thu bhòt sa chunntas-bheachd seo mu thràth
+ duplicate_options: " – tha nithean dùblaichte ann"
+ duration_too_long: "– tha seo ro fhad air falbh san àm ri teachd"
+ duration_too_short: "– tha seo ro aithghearr"
+ expired: Tha an cunntas-bheachd air a thighinn gu crìoch
+ invalid_choice: Chan eil an roghainn dhan a bhòt thu ann
+ over_character_limit: "– chan fhaod a bhith nas fhaide na %{max} caractar"
+ too_few_options: "– feumaidh iomadh nì a bhith aige"
+ too_many_options: "– chan fhaod còrr is %{max} nì a bhith ’na bhroinn"
+ preferences:
+ other: Eile
+ posting_defaults: Bun-roghainnean a’ phostaidh
+ public_timelines: Loidhnichean-ama poblach
+ reactions:
+ errors:
+ limit_reached: Ràinig thu crìoch nam freagairtean eadar-dhealaichte
+ unrecognized_emoji: "– chan aithne dhuinn an Emoji seo"
+ relationships:
+ activity: Gnìomhachd a’ chunntais
+ dormant: Na thàmh
+ follow_selected_followers: Lean air an luchd-leantainn a thagh thu
+ followers: Luchd-leantainn
+ following: A’ leantainn
+ invited: Air cuireadh fhaighinn
+ last_active: An gnìomh mu dheireadh
+ most_recent: As ùire
+ moved: Air imrich
+ mutual: Co-dhàimh
+ primary: Prìomh-dhàimh
+ relationship: Dàimh
+ remove_selected_domains: Thoir air falbh a h-uile neach-leantainn o na h-àrainnean a thagh thu
+ remove_selected_followers: Thoir air falbh a h-uile neach-leantainn a thagh thu
+ remove_selected_follows: Na lean air na cleachdaichean a thagh thu tuilleadh
+ status: Staid a’ chunntais
+ remote_follow:
+ acct: Cuir a-steach ainm-cleachdaiche@àrainn airson a chur ort
+ missing_resource: Cha do lorg sinn URL ath-stiùiridh riatanach a’ chunntais agad
+ no_account_html: Nach eil cunntas agad? ’S urrainn dhut clàradh leinn an-seo
+ proceed: Lean air adhart gus leantainn air
+ prompt: 'Bidh thu a’ leantainn air:'
+ reason_html: "Carson a tha feum air a’ cheum seo? Dh’fhaoidte nach e %{instance} am frithealaiche far an do rinn thu clàradh agus feumaidh sinn d’ ath-stiùireadh dhan fhrithealaiche dachaigh agad an toiseach."
+ remote_interaction:
+ favourite:
+ proceed: Lean air adhart gus a chur ris na h-annsachdan
+ prompt: 'Tha thu airson am post seo a chur ris na h-annsachdan:'
+ reblog:
+ proceed: Lean air adhart gus a bhrosnachadh
+ prompt: 'Tha thu airson am post seo a bhrosnachadh:'
+ reply:
+ proceed: Lean air adhart gus freagairt
+ prompt: 'Tha thu airson freagairt dhan phost seo:'
+ scheduled_statuses:
+ over_daily_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte an-diugh
+ over_total_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte
+ too_soon: Feumaidh ceann-latha an sgeideil a bhith san àm ri teachd
+ sessions:
+ activity: A’ ghnìomhachd mu dheireadh
+ browser: Brabhsair
+ browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
+ edge: Microsoft Edge
+ electron: Electron
+ firefox: Firefox
+ generic: Brabhsair nach aithne dhuinn
+ ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia S40 Ovi Browser
+ opera: Opera
+ otter: Otter
+ phantom_js: PhantomJS
+ qq: QQ Browser
+ safari: Safari
+ uc_browser: UCBrowser
+ weibo: Weibo
+ current_session: An seisean làithreach
+ description: "%{browser} air %{platform}"
+ explanation: Seo na bhrabhsairean-lìn a tha clàraichte a-staigh sa chunntas Mastodon agad aig an àm seo.
+ ip: IP
+ platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
+ chrome_os: ChromeOS
+ firefox_os: Firefox OS
+ ios: iOS
+ linux: Linux
+ mac: macOS
+ other: ùrlar nach aithne dhuinn
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
+ revoke: Cùl-ghairm
+ revoke_success: Chaidh an seisean a chùl-ghairm
+ title: Seiseanan
+ settings:
+ account: Cunntas
+ account_settings: Roghainnean a’ chunntais
+ aliases: Aliasan a’ chunntais
+ appearance: Coltas
+ authorized_apps: Aplacaidean ùghdarraichte
+ back: Till gu Mastodon
+ delete: Sguabadh às cunntais
+ development: Leasachadh
+ edit_profile: Deasaich a’ phròifil
+ export: Às-phortadh dàta
+ featured_tags: Tagaichean hais brosnaichte
+ identity_proofs: Dearbhaidhean na dearbh-aithne
+ import: Ion-phortadh
+ import_and_export: Ion-phortadh ⁊ às-phortadh
+ migrate: Imrich cunntais
+ notifications: Brathan
+ preferences: Roghainnean
+ profile: Pròifil
+ relationships: Dàimhean leantainn
+ two_factor_authentication: Dearbhadh dà-cheumnach
+ webauthn_authentication: Iuchraichean tèarainteachd
+ statuses:
+ attached:
+ audio:
+ few: "%{count} fuaimean"
+ one: "%{count} fhuaim"
+ other: "%{count} fuaim"
+ two: "%{count} fhuaim"
+ description: 'Ceanglachain: %{attached}'
+ image:
+ few: "%{count} dealbhan"
+ one: "%{count} dealbh"
+ other: "%{count} dealbh"
+ two: "%{count} dhealbh"
+ video:
+ few: "%{count} videothan"
+ one: "%{count} video"
+ other: "%{count} video"
+ two: "%{count} video"
+ boosted_from_html: Brosnachadh o %{acct_link}
+ content_warning: 'Rabhadh susbainte: %{warning}'
+ disallowed_hashtags:
+ few: "– bha na tagaichean hais toirmisgte seo ann: %{tags}"
+ one: "– bha na tagaichean hais toirmisgte seo ann: %{tags}"
+ other: "– bha na tagaichean hais toirmisgte seo ann: %{tags}"
+ two: "– bha na tagaichean hais toirmisgte seo ann: %{tags}"
+ errors:
+ in_reply_not_found: Tha coltas nach eil am post dhan a tha thu airson freagairt ann.
+ language_detection: Mothaich dhan chànan gu fèin-obrachail
+ open_in_web: Fosgail air an lìon
+ over_character_limit: chaidh thu thar crìoch charactaran de %{max}
+ pin_errors:
+ limit: Tha an àireamh as motha de phostaichean prìnichte agad a tha ceadaichte
+ ownership: Chan urrainn dhut post càich a phrìneachadh
+ private: Chan urrainn dhut post neo-phoblach a phrìneachadh
+ reblog: Chan urrainn dhut brosnachadh a phrìneachadh
+ poll:
+ total_people:
+ few: "%{count} daoine"
+ one: "%{count} neach"
+ other: "%{count} duine"
+ two: "%{count} neach"
+ total_votes:
+ few: "%{count} bhòtaichean"
+ one: "%{count} bhòt"
+ other: "%{count} bhòt"
+ two: "%{count} bhòt"
+ vote: Bhòt
+ show_more: Seall barrachd dheth
+ show_newer: Seall feadhainn as ùire
+ show_older: Seall feadhainn as sine
+ show_thread: Seall an snàithlean
+ sign_in_to_participate: Clàraich a-steach a ghabhail pàirt sa chòmhradh
+ title: "%{name}: “%{quote}”"
+ visibilities:
+ direct: Dìreach
+ private: Luchd-leantainn a-mhàin
+ private_long: Na seall dhan luchd-leantainn
+ public: Poblach
+ public_long: Chì a h-uile duine seo
+ unlisted: Falaichte o liostaichean
+ unlisted_long: Chì a h-uile duine seo ach cha nochd e air loidhnichean-ama poblach
+ stream_entries:
+ pinned: Post prìnichte
+ reblogged: "’ga bhrosnachadh"
+ sensitive_content: Susbaint fhrionasach
+ tags:
+ does_not_match_previous_name: "– chan eil seo a-rèir an ainm roimhe"
+ terms:
+ body_html: 'Poileasaidh prìobhaideachd
Dè am fiosrachadh a chruinnicheas sinn?
Dè na h-adhbharan air an cleachd sinn am fiosrachadh agad?
Ciamar a dhìonas sinn am fiosrachadh agad?
Dè am poileasaidh cumail dàta againn?
An cleachd sinn briosgaidhean?
Am foillsich sinn fiosrachadh sam bith gu pàrtaidhean air an taobh a-muigh?
Cleachdadh na làraich leis a’ chloinn
Atharraichean air a’ phoileasaidh phrìobhaideachd againn
Atharraichean air a’ phoileasaidh phrìobhaideachd againn
rel="me" a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:'
+ verification: Dearbhadh
+ webauthn_credentials:
+ add: Cuir iuchair tèarainteachd ùr ris
+ create:
+ error: Bha duilgheadas ann le bhith a’ cur ris an iuchair tèarainteachd agad. Feuch ris a-rithist.
+ success: Chaidh an iuchair tèarainteachd agad a chur ris.
+ delete: Sguab às
+ delete_confirmation: A bheil thu cinnteach gu bheil thu airson an iuchair tèarainteachd seo a sguabadh às?
+ description_html: Ma chuireas tu dearbhadh le iuchair tèarainteachd an comas, chan urrainn dhut clàradh a-steach às aonais tè dhe na h-iuchraichean tèarainteachd agad.
+ destroy:
+ error: Bha duilgheadas ann le bhith a’ sguabadh às an iuchair tèarainteachd agad. Feuch ris a-rithist.
+ success: Chaidh an iuchair tèarainteachd agad a sguabadh às.
+ invalid_credential: Iuchair tèarainteachd mì-dhligheach
+ nickname_hint: Cuir a-steach far-ainm na h-iuchrach tèarainteachd ùir agad
+ not_enabled: Cha do chuir thu WebAuthn an comas fhathast
+ not_supported: Cha chuir am brabhsair seo taic ri iuchraichean tèarainteachd
+ otp_required: Mus cleachd thu iuchraichean tèarainteachd, feumaidh tu an dearbhadh dà-cheumnach a chur an comas.
+ registered_on: Air a chlàradh %{date}
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 48aaff0ad..ce7dd20ce 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -1,8 +1,8 @@
---
gl:
about:
- about_hashtag_html: Estes son toots públicos etiquetados con #%{hashtag}. Podes interactuar con eles se tes unha conta nalgures do fediverso.
- about_mastodon_html: Mastodon é unha rede social que se basea en protocolos web abertos e libres, software de código aberto. É descentralizada como o correo electrónico.
+ about_hashtag_html: Estas son publicacións públicas etiquetadas con #%{hashtag}. Podes interactuar con elas se tes unha conta nalgures do fediverso.
+ about_mastodon_html: 'A rede social do futuro: Sen publicidade, sen seguimento por empresas, deseño ético e descentralización! En Mastodon ti posúes os teus datos!'
about_this: Acerca de
active_count_after: activas
active_footnote: Usuarias Activas no Mes (UAM)
@@ -23,15 +23,17 @@ gl:
hosted_on: Mastodon aloxado en %{domain}
instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio.
-'
+ '
learn_more: Saber máis
privacy_policy: Política de privacidade
+ rules: Regras do servidor
+ rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:'
see_whats_happening: Ver o que está a acontecer
server_stats: 'Estatísticas do servidor:'
source_code: Código fonte
status_count_after:
- one: estado
- other: estados
+ one: publicación
+ other: publicacións
status_count_before: Que publicaron
tagline: Segue ás túas amizades e coñece novas
terms: Termos do servizo
@@ -41,7 +43,7 @@ gl:
reason: Razón
rejecting_media: 'Os ficheiros multimedia deste servidor non serán procesados e non se amosarán miniaturas, o que require un clic manual no ficheiro orixinal:'
rejecting_media_title: Multimedia filtrado
- silenced: 'As publicacións deste servidor non se amosarán en conversas e liñas temporais, nin terás notificacións das súas usuarias agás que as sigas:'
+ silenced: 'As publicacións destes servidores non se amosarán en conversas e cronoloxías públicas, nin terás notificacións xeradas polas interaccións das usuarias, a menos que as estés a seguir:'
silenced_title: Servidores acalados
suspended: 'Non se procesarán, almacenarán nin intercambiarán datos destes servidores, o que fai imposíbel calquera interacción ou comunicación coas usuarias dende estes servidores:'
suspended_title: Servidores suspendidos
@@ -74,11 +76,10 @@ gl:
pin_errors:
following: Tes que seguir á persoa que queres engadir
posts:
- one: Toot
- other: Toots
- posts_tab_heading: Toots
- posts_with_replies: Toots e respostas
- reserved_username: O nome de usuaria está reservado
+ one: Publicación
+ other: Publicacións
+ posts_tab_heading: Publicacións
+ posts_with_replies: Publicacións e respostas
roles:
admin: Administradora
bot: Bot
@@ -198,7 +199,7 @@ gl:
targeted_reports: Denuncias feitas por outros
silence: Silenciar
silenced: Silenciado
- statuses: Estados
+ statuses: Publicacións
subscribe: Subscribirse
suspended: Suspendida
suspension_irreversible: Elimináronse de xeito irreversible os datos desta conta. Podes reactivar a conta para facela usable novamente pero non recuperará os datos eliminados.
@@ -229,6 +230,7 @@ gl:
create_domain_block: Crear bloqueo de dominio
create_email_domain_block: Crear bloqueo de dominio de correo electrónico
create_ip_block: Crear regra IP
+ create_unavailable_domain: Crear dominio Non dispoñible
demote_user: Degradar usuaria
destroy_announcement: Eliminar anuncio
destroy_custom_emoji: Eliminar emoticona personalizada
@@ -236,7 +238,8 @@ gl:
destroy_domain_block: Eliminar bloqueo de dominio
destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico
destroy_ip_block: Eliminar regra IP
- destroy_status: Eliminar estado
+ destroy_status: Eliminar publicación
+ destroy_unavailable_domain: Eliminar dominio Non dispoñible
disable_2fa_user: Desactivar 2FA
disable_custom_emoji: Desactivar emoticona personalizada
disable_user: Desactivar usuaria
@@ -258,49 +261,51 @@ gl:
update_announcement: Actualizar anuncio
update_custom_emoji: Actualizar emoticona personalizada
update_domain_block: Actualizar bloqueo do dominio
- update_status: Actualizar estado
+ update_status: Actualizar publicación
actions:
- assigned_to_self_report: "%{name} atribuíu a denuncia %{target} a el mesmo"
- change_email_user: "%{name} cambiou o enderezo de correo-e da usuaria %{target}"
- confirm_user: "%{name} comfirmou o enderezo de correo da usuaria %{target}"
- create_account_warning: "%{name} enviou un aviso a %{target}"
- create_announcement: "%{name} creou un novo anuncio %{target}"
- create_custom_emoji: "%{name} subiu unha nova emoticona %{target}"
- create_domain_allow: "%{name} engadiu á listaxe branca o dominio %{target}"
- create_domain_block: "%{name} bloqueou o dominio %{target}"
- create_email_domain_block: "%{name} engadiu á listaxe negra o dominio de email %{target}"
- create_ip_block: "%{name} creou regra para IP %{target}"
- demote_user: "%{name} degradou a usuaria %{target}"
- destroy_announcement: "%{name} eliminou o anuncio %{target}"
- destroy_custom_emoji: "%{name} eliminou a emoticona %{target}"
- destroy_domain_allow: "%{name} eliminou o dominio %{target} da listaxe branca"
- destroy_domain_block: "%{name} desbloqueou o dominio %{target}"
- destroy_email_domain_block: "%{name} engadiu á lista branca o dominio de email %{target}"
- destroy_ip_block: "%{name} eliminou regra para IP %{target}"
- destroy_status: "%{name} eliminou o estado de %{target}"
- disable_2fa_user: "%{name} desactivou o requirimento de dobre factor para a usuaria %{target}"
- disable_custom_emoji: "%{name} desactivou a emoticona %{target}"
- disable_user: "%{name} desactivou o acceso á conta para a usuaria %{target}"
- enable_custom_emoji: "%{name} activou a emoticona %{target}"
- enable_user: "%{name} activou o acceso á conta para a usuaria %{target}"
- memorialize_account: "%{name} converteu a conta de %{target} nunha páxina para a lembranza"
- promote_user: "%{name} promoveu a usuaria %{target}"
- remove_avatar_user: "%{name} eliminou a imaxe de perfil de %{target}"
- reopen_report: "%{name} reabriu a denuncia %{target}"
- reset_password_user: "%{name} restableceu o contrasinal da usuaria %{target}"
- resolve_report: "%{name} resolveu a denuncia %{target}"
- sensitive_account: "%{name} marcou o multimedia de %{target} como sensible"
- silence_account: "%{name} silenciou a conta de %{target}"
- suspend_account: "%{name} suspendeu a conta de %{target}"
- unassigned_report: "%{name} deixou de atribuír a denuncia %{target}"
- unsensitive_account: "%{name} desmarcou o multimedia de %{target} como sensible"
- unsilence_account: "%{name} deixou de silenciar a conta de %{target}"
- unsuspend_account: "%{name} desactivou a suspensión da conta de %{target}"
- update_announcement: "%{name} actualizou o anuncio %{target}"
- update_custom_emoji: "%{name} actualizou a emoticona %{target}"
- update_domain_block: "%{name} actualizou o bloqueo do dominio %{target}"
- update_status: "%{name} actualizou o estado de %{target}"
- deleted_status: "(estado eliminado)"
+ assigned_to_self_report_html: "%{name} asignou a denuncia %{target} para si mesma"
+ change_email_user_html: "%{name} cambiou o enderezo de email da usuaria %{target}"
+ confirm_user_html: "%{name} confirmou o enderezo de email da usuaria %{target}"
+ create_account_warning_html: "%{name} envioulle unha advertencia a %{target}"
+ create_announcement_html: "%{name} creou un novo anuncio %{target}"
+ create_custom_emoji_html: "%{name} subiu un novo emoji %{target}"
+ create_domain_allow_html: "%{name} permitiu a federación co dominio %{target}"
+ create_domain_block_html: "%{name} bloqueou o dominio %{target}"
+ create_email_domain_block_html: "%{name} bloqueou o dominio de email %{target}"
+ create_ip_block_html: "%{name} creou regra para o IP %{target}"
+ create_unavailable_domain_html: "%{name} deixou de interactuar co dominio %{target}"
+ demote_user_html: "%{name} degradou a usuaria %{target}"
+ destroy_announcement_html: "%{name} eliminou o anuncio %{target}"
+ destroy_custom_emoji_html: "%{name} destruíu o emoji %{target}"
+ destroy_domain_allow_html: "%{name} retirou a federación co dominio %{target}"
+ destroy_domain_block_html: "%{name} desbloqueou o dominio %{target}"
+ destroy_email_domain_block_html: "%{name} desbloqueou o dominio de email %{target}"
+ destroy_ip_block_html: "%{name} eliminou a regra para o IP %{target}"
+ destroy_status_html: "%{name} eliminou a publicación de %{target}"
+ destroy_unavailable_domain_html: "%{name} retomou a interacción co dominio %{target}"
+ disable_2fa_user_html: "%{name} desactivou o requerimento do segundo factor para a usuaria %{target}"
+ disable_custom_emoji_html: "%{name} desactivou o emoji %{target}"
+ disable_user_html: "%{name} desactivou a conexión para a usuaria %{target}"
+ enable_custom_emoji_html: "%{name} activou o emoji %{target}"
+ enable_user_html: "%{name} activou a conexión para a usuaria %{target}"
+ memorialize_account_html: "%{name} convertiu a conta de %{target} nunha páxina para o recordo"
+ promote_user_html: "%{name} promocionou a usuaria %{target}"
+ remove_avatar_user_html: "%{name} eliminou o avatar de %{target}"
+ reopen_report_html: "%{name} reabriu a denuncia %{target}"
+ reset_password_user_html: "%{name} restableceu o contrasinal da usuaria %{target}"
+ resolve_report_html: "%{name} resolveu a denuncia %{target}"
+ sensitive_account_html: "%{name} marcou o multimedia de %{target} como sensible"
+ silence_account_html: "%{name} acalou a conta de %{target}"
+ suspend_account_html: "%{name} suspendeu a conta de %{target}"
+ unassigned_report_html: "%{name} quitoulle a asignación á denuncia %{target}"
+ unsensitive_account_html: "%{name} desmarcou como sensible o multimedia de %{target}"
+ unsilence_account_html: "%{name} reactivou a conta de %{target}"
+ unsuspend_account_html: "%{name} retiroulle a suspensión á conta de %{target}"
+ update_announcement_html: "%{name} actualizou o anuncio %{target}"
+ update_custom_emoji_html: "%{name} actualizou o emoji %{target}"
+ update_domain_block_html: "%{name} actualizou o bloqueo do dominio para %{target}"
+ update_status_html: "%{name} actualizou a publicación de %{target}"
+ deleted_status: "(publicación eliminada)"
empty: Non se atoparon rexistros.
filter_by_action: Filtrar por acción
filter_by_user: Filtrar por usuaria
@@ -314,10 +319,12 @@ gl:
new:
create: Crear anuncio
title: Novo anuncio
+ publish: Publicar
published_msg: Anuncio publicado de xeito correcto!
scheduled_for: Programado para %{time}
scheduled_msg: Anuncio programado para a súa publicación!
title: Anuncios
+ unpublish: Retirar publicación
unpublished_msg: Anuncio desbotado de xeito correcto!
updated_msg: Anuncio actualizado de xeito correcto!
custom_emojis:
@@ -362,7 +369,6 @@ gl:
feature_profile_directory: Directorio do perfil
feature_registrations: Rexistros
feature_relay: Repetidor da federación
- feature_spam_check: Anti-spam
feature_timeline_preview: Vista previa da cronoloxía
features: Funcións
hidden_service: Federación con servizos agochados
@@ -440,9 +446,34 @@ gl:
create: Engadir dominio
title: Nova entrada na listaxe negra de email
title: Listaxe negra de email
+ follow_recommendations:
+ description_html: "As recomendacións de seguimento son útiles para que as novas usuarias atopen contidos interesantes. Cando unha usuaria aínda non interactuou con outras para obter recomendacións de seguimento, estas contas serán recomendadas. Variarán a diario xa que se escollen en base ao maior número de interaccións e ao contador local de seguimentos para un idioma dado."
+ language: Para o idioma
+ status: Estado
+ suppress: Suprimir recomendación de seguimento
+ suppressed: Eliminada
+ title: Recomendacións de seguimento
+ unsuppress: Restablecer recomendación de seguimento
instances:
+ back_to_all: Todo
+ back_to_limited: Limitado
+ back_to_warning: Aviso
by_domain: Dominio
+ delivery:
+ all: Todo
+ clear: Eliminar erros na entrega
+ restart: Restablecer a entrega
+ stop: Deter a entrega
+ title: Entrega
+ unavailable: Non dispoñible
+ unavailable_message: Entrega non dispoñible
+ warning: Aviso
+ warning_message:
+ one: Fallou a entrega %{count} día
+ other: Fallou a entrega %{count} días
delivery_available: Entrega dispoñíbel
+ delivery_error_days: Días de fallo na entrega
+ delivery_error_hint: Se non é posible a entrega durante %{count} días, será automáticamente marcado como non entregable.
empty: Non se atopan dominios.
known_accounts:
one: "%{count} conta coñecida"
@@ -489,11 +520,11 @@ gl:
relays:
add_new: Engadir un novo repetidor
delete: Eliminar
- description_html: Un repetidor da federación é un servidor intermedio que intercambia grandes volumes de toots públicos entre servidores que se suscriban e publiquen nel. Pode axudar a servidores pequenos e medios a descubrir contido no fediverso, o que de outro xeito precisaría que as usuarias locais seguisen a outra xente en servidores remotos.
+ description_html: Un repetidor da federación é un servidor intermedio que intercambia grandes volumes de publicacións públicas entre servidores que se suscriban e publiquen nel. Pode axudar a servidores pequenos e medios a descubrir contido no fediverso, o que de outro xeito precisaría que as usuarias locais seguisen a outra xente en servidores remotos.
disable: Desactivar
disabled: Desactivado
enable: Activar
- enable_hint: Unha vez activado, o teu servidor subscribirase a todos os toots públicos deste repetidor, e tamén comezará a enviar a el os toots públicos do servidor.
+ enable_hint: Unha vez activado, o teu servidor subscribirase a todas as publicacións públicas deste repetidor, e tamén comezará a enviar a el as publicacións públicas do servidor.
enabled: Activado
inbox_url: URL do repetidor
pending: Agardando pola aprobación do repetidor
@@ -542,13 +573,20 @@ gl:
unassign: Non asignar
unresolved: Non resolto
updated_at: Actualizado
+ rules:
+ add_new: Engadir regra
+ delete: Eliminar
+ description_html: Aínda que a maioría di que leu e acepta os termos de servizo, normalmente non os lemos ata que xurde un problema. Facilita a visualización das regras do servidor mostrándoas nunha lista de puntos. Intenta manter as regras individuais curtas e simples, mais non dividilas en demasiados elementos separados.
+ edit: Editar regra
+ empty: Aínda non se definiron as regras do servidor.
+ title: Regras do servidor
settings:
activity_api_enabled:
desc_html: Conta de estados publicados de xeito local, usuarias activas, e novos rexistros en períodos semanais
- title: Publicar estatísticas agregadas sobre a actividade da usuaria
+ title: Publicar na API estatísticas acumuladas sobre a actividade da usuaria
bootstrap_timeline_accounts:
- desc_html: Separar os múltiples nomes de usuaria con vírgulas. Só funcionarán as contas locais non bloqueadas. Se fica baleiro, serán todos os administradores locais.
- title: Seguimentos por defecto para novas contas
+ desc_html: Separar os múltiples nomes de usuaria con vírgulas. Estas contas teñen garantido aparecer nas recomendacións de seguimento
+ title: Recoméndalle estas contas ás novas usuarias
contact_information:
email: Email de negocios
username: Nome de usuaria de contacto
@@ -565,9 +603,6 @@ gl:
users: Para usuarias locais conectadas
domain_blocks_rationale:
title: Amosar motivo
- enable_bootstrap_timeline_accounts:
- desc_html: Facer que as novas usuarias sigan automáticamente certas contas para que así a cronoloxía inicial non esté baleira
- title: Activar seguimentos por omisión para novas usuarias
hero:
desc_html: Amosado na páxina principal. Polo menos 600x100px recomendados. Se non está definido, estará por defecto a miniatura do servidor
title: Imaxe do heroe
@@ -576,7 +611,7 @@ gl:
title: Imaxe da mascota
peers_api_enabled:
desc_html: Nomes de dominio que este servidor atopou no fediverso
- title: Publicar listaxe de servidores descobertos
+ title: Publicar na API listaxe de servidores descobertos
preview_sensitive_media:
desc_html: A vista previa de ligazóns de outros sitios web mostrará unha imaxe incluso si os medios están marcados como sensibles
title: Mostrar medios sensibles con vista previa OpenGraph
@@ -604,7 +639,7 @@ gl:
title: Estado do rexistro
show_known_fediverse_at_about_page:
desc_html: Si activado, mostraralle os toots de todo o fediverso coñecido nunha vista previa. Si non só mostrará os toots locais.
- title: Mostrar vista previa do fediverso na liña temporal
+ title: Incluír contido federado na páxina da cronoloxía pública sen autenticación
show_staff_badge:
desc_html: Mostrar unha insignia de membresía nunha páxina de usuaria
title: Mostrar insigna de membresía
@@ -621,15 +656,12 @@ gl:
desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar cancelos HTML
title: Termos de servizo personalizados
site_title: Nome do servidor
- spam_check_enabled:
- desc_html: Mastodon pode silenciar e informar automáticamente sobre contas baseándose en medidas como detectar contas que envían mensaxes non solicitadas de xeito repetido. Podería haber falsos positivos.
- title: Anti-spam
thumbnail:
desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px
title: Icona do servidor
timeline_preview:
- desc_html: Mostrar liña de tempo pública na páxina de inicio
- title: vista previa da liña temporal
+ desc_html: Mostrar ligazón á cronoloxía pública na páxina de benvida e permitir o acceso API á cronoloxía pública sen ter autenticación
+ title: Permitir acceso á cronoloxía pública sen autenticación
title: Axustes do sitio
trendable_by_default:
desc_html: Afecta ós cancelos que non foron rexeitados de xeito previo
@@ -651,16 +683,21 @@ gl:
media:
title: Medios
no_media: Sen medios
- no_status_selected: Non se cambiou ningún estado xa que ningún foi seleccionado
- title: Estados da conta
+ no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada
+ title: Publicacións da conta
with_media: con medios
+ system_checks:
+ database_schema_check:
+ message_html: Existen migracións pendentes na base de datos. Bota man desta tarefa para facer que a aplicación funcione como se agarda dela
+ rules_check:
+ action: Xestionar regras do servidor
+ message_html: Non tes definidas regras para o servidor.
+ sidekiq_process_check:
+ message_html: Non hai procesos Sidekiq a funcionar para a cola(s) %{value}. Revisa a túa configuración para Sidekiq
tags:
accounts_today: Usos únicos hoxe
accounts_week: Usos únicos esta semana
breakdown: Consumo do uso diario por fonte
- context: Contexto
- directory: No directorio
- in_directory: "%{count} no directorio"
last_active: Úlimo activo
most_popular: Máis popular
most_recent: Máis recente
@@ -677,6 +714,7 @@ gl:
add_new: Engadir novo
delete: Eliminar
edit_preset: Editar aviso preestablecido
+ empty: Non definiches os avisos prestablecidos.
title: Xestionar avisos preestablecidos
admin_mailer:
new_pending_account:
@@ -707,21 +745,21 @@ gl:
guide_link: https://crowdin.com/project/mastodon
guide_link_text: Todas podemos contribuír.
sensitive_content: Contido sensible
- toot_layout: Disposición do toot
+ toot_layout: Disposición da publicación
application_mailer:
notification_preferences: Cambiar os axustes de correo-e
salutation: "%{name},"
settings: 'Mudar as preferencias de e-mail: %{link}'
view: 'Vista:'
view_profile: Ver perfil
- view_status: Ver estado
+ view_status: Ver publicación
applications:
created: Creouse con éxito este aplicativo
destroyed: Eliminouse con éxito o aplicativo
invalid_url: A URL proporcionada non é válida
regenerate_token: Votar a xenerar o testemuño de acceso
token_regenerated: Rexenerouse con éxito o testemuño de acceso
- warning: Teña moito tino con estos datos. Nunca os comparta con ninguén!
+ warning: Ten moito tino con estos datos. Non os compartas nunca con ninguén!
your_token: O seu testemuño de acceso
auth:
apply_for_account: Solicite un convite
@@ -851,7 +889,7 @@ gl:
archive_takeout:
date: Data
download: Descargue o seu ficheiro
- hint_html: Pode solicitar un ficheiro cos seus toots e ficheiros de medios. Os datos estarán en formato ActivityPub e son compatibles con calquer software que o siga. Pode solicitar un ficheiro cada 7 días.
+ hint_html: Pode solicitar un ficheiro coas súas publicacións e ficheiros de medios. Os datos estarán en formato ActivityPub e son compatibles con calquera software que o siga. Podes solicitar un ficheiro cada 7 días.
in_progress: Xerando o seu ficheiro...
request: Solicite o ficheiro
size: Tamaño
@@ -870,9 +908,9 @@ gl:
filters:
contexts:
account: Perfís
- home: Liña temporal inicial
+ home: Inicio e listaxes
notifications: Avisos
- public: Liñas temporais públicas
+ public: Cronoloxías públicas
thread: Conversas
edit:
title: Editar filtro
@@ -968,7 +1006,7 @@ gl:
limit: Acadou o número máximo de listas
media_attachments:
validations:
- images_and_video: Non pode anexar un vídeo a un estado que xa contén imaxes
+ images_and_video: Non podes anexar un vídeo a unha publicación que xa contén imaxes
not_ready: Non se poden anexar ficheiros que aínda se están a procesar. Agarda un intre!
too_many: Non pode anexar máis de 4 ficheiros
migrations:
@@ -1021,8 +1059,8 @@ gl:
other: "%{count} novas notificacións desde a súa última visita \U0001F418"
title: Na súa ausencia...
favourite:
- body: 'O seu estado foi marcado favorito por %{name}:'
- subject: "%{name} marcou favorito o teu estado"
+ body: 'A túa publicación foi marcada como favorita por %{name}:'
+ subject: "%{name} marcou como favorita a túa publicación"
title: Nova favorita
follow:
body: Agora %{name} séguete!
@@ -1038,10 +1076,14 @@ gl:
body: 'Foi mencionada por %{name} en:'
subject: Foches mencionada por %{name}
title: Nova mención
+ poll:
+ subject: A enquisa de %{name} rematou
reblog:
- body: 'O seu estado foi promocionado por %{name}:'
- subject: "%{name} promoveu o teu estado"
+ body: 'A túa publicación promovida por %{name}:'
+ subject: "%{name} promoveu a túa publicación"
title: Nova promoción
+ status:
+ subject: "%{name} publicou"
notifications:
email_events: Eventos para os correos de notificación
email_events_hint: 'Escolle os eventos sobre os que queres recibir notificacións:'
@@ -1084,7 +1126,7 @@ gl:
preferences:
other: Outro
posting_defaults: Valores por omisión
- public_timelines: Liñas temporais públicas
+ public_timelines: Cronoloxías públicas
reactions:
errors:
limit_reached: Acadouse o límite das diferentes reaccións
@@ -1116,16 +1158,16 @@ gl:
remote_interaction:
favourite:
proceed: Darlle a favorito
- prompt: 'Vas marcar favorito este toot:'
+ prompt: 'Vas marcar favorita esta publicación:'
reblog:
proceed: Darlle a promocionar
- prompt: 'Vas promocionar este toot:'
+ prompt: 'Vas promover esta publicación:'
reply:
proceed: Respostar
- prompt: 'Vas responder a este toot:'
+ prompt: 'Vas responder a esta publicación:'
scheduled_statuses:
- over_daily_limit: Excedeu o límite de %{limit} toots programados para ese día
- over_total_limit: Excedeu o límite de %{limit} toots programados
+ over_daily_limit: Excedeches o límite de %{limit} publicacións programadas para ese día
+ over_total_limit: Excedeches o límite de %{limit} publicacións programadas
too_soon: A data de programación debe estar no futuro
sessions:
activity: Última actividade
@@ -1190,8 +1232,6 @@ gl:
relationships: Seguindo e seguidoras
two_factor_authentication: Validar Dobre Factor
webauthn_authentication: Chaves de seguridade
- spam_check:
- spam_detected: Esto é un informe automatizado. Detectouse Spam.
statuses:
attached:
audio:
@@ -1210,14 +1250,14 @@ gl:
one: 'contiña un cancelo non permitido: %{tags}'
other: 'contiña uns cancelos non permitidos: %{tags}'
errors:
- in_reply_not_found: O estado ó cal tentas respostar semella que non existe.
+ in_reply_not_found: A publicación á que tentas respostar semella que non existe.
language_detection: Detección automática do idioma
open_in_web: Abrir na web
over_character_limit: Excedeu o límite de caracteres %{max}
pin_errors:
- limit: Xa fixou o número máximo permitido de mensaxes
- ownership: Non pode fixar a mensaxe de outra usuaria
- private: As mensaxes non-públicas non poden ser fixadas
+ limit: Xa fixaches o número máximo permitido de publicacións
+ ownership: Non podes fixar a publicación doutra usuaria
+ private: As publicacións non-públicas non poden ser fixadas
reblog: Non se poden fixar as mensaxes promovidas
poll:
total_people:
@@ -1234,15 +1274,16 @@ gl:
sign_in_to_participate: Conéctese para participar na conversa
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Directa
private: Só seguidoras
private_long: Mostrar só as seguidoras
public: Público
public_long: Visible para calquera
unlisted: Non listado
- unlisted_long: Visible para calquera, pero non listado en liñas de tempo públicas
+ unlisted_long: Visible para calquera, pero non en cronoloxías públicas
stream_entries:
- pinned: Mensaxe fixada
- reblogged: comparteu
+ pinned: Publicación fixada
+ reblogged: promovido
sensitive_content: Contido sensible
tags:
does_not_match_previous_name: non concorda co nome anterior
@@ -1345,12 +1386,12 @@ gl:
enabled: A autenticación de dobre-factor está activada
enabled_success: Activouse con éxito a autenticación de dobre-factor
generate_recovery_codes: Xerar códigos de recuperación
- lost_recovery_codes: Os códigos de recuperación permítenlle recuperar o acceso a súa conta si perde o teléfono. Si perde os códigos de recuperación, pode restauralos aquí. Os seus códigos de recuperación anteriores serán invalidados.
+ lost_recovery_codes: Os códigos de recuperación permítenche recuperar o acceso a túa conta se perdes o teléfono. Se perdes os códigos de recuperación, podes restauralos aquí. Os teus códigos de recuperación anteriores serán invalidados.
methods: Métodos para o segundo factor
otp: App autenticadora
recovery_codes: Códigos de recuperación do respaldo
recovery_codes_regenerated: Códigos de recuperación xerados correctamente
- recovery_instructions_html: Si perdese o acceso ao seu teléfono, pode utilizar un dos códigos inferiores de recuperación para recuperar o acceso a súa conta. Garde os códigos en lugar seguro. Por exemplo, pode imprimilos e gardalos xunto con outros documentos importantes.
+ recovery_instructions_html: Se perdeses o acceso ao teu teléfono, podes utilizar un dos códigos de recuperación inferiores para recuperar o acceso á conta. Garda os códigos nun lugar seguro. Por exemplo, podes imprimilos e gardalos xunto con outros documentos importantes.
webauthn: Chaves de seguridade
user_mailer:
backup_ready:
@@ -1367,7 +1408,7 @@ gl:
explanation:
disable: Cando a súa conta está conxelada, os datos permanecen intactos, pero non pode levar a fin accións ate que se desbloquea.
sensitive: Os teus ficheiros e ligazóns a multimedia serán tratados como sensibles.
- silence: Mentras a conta está limitada, só a xente que actualmente te segue verá os teus toots en este servidor, e poderías estar excluída de varias listaxes públicas. Porén, outras persoas poderíante seguir de xeito manual.
+ silence: Mentras a conta está limitada, só a xente que actualmente te segue verá as publicacións neste servidor, e poderías estar excluída de varias listaxes públicas. Porén, outras persoas poderíante seguir de xeito manual.
suspend: A súa conta foi suspendida, e todos os seus toots e medios subidos foron eliminados de este servidor de xeito irreversible, e dos servidores onde tivese seguidoras.
get_in_touch: Pode responder a este correo para contactar coa administración de %{instance}.
review_server_policies: Revisar políticas do servidor
@@ -1389,27 +1430,24 @@ gl:
edit_profile_step: Podes personalizar o teu perfil subindo un avatar, cabeceira, cambiar o nome público e aínda máis. Se restrinxes a túa conta podes revisar a conta das persoas que solicitan seguirte antes de permitirlles o acceso aos teus toots.
explanation: Aquí ten alunhas endereitas para ir aprendendo
final_action: Comece a publicar
- final_step: 'Publica! Incluso sen seguidoras as túas mensaxes serán vistas por outras, por exemplo na liña temporal local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.'
+ final_step: 'Publica! Incluso sen seguidoras as túas mensaxes públicas serán vistas por outras, por exemplo na cronoloxía local e nos cancelos. Poderías presentarte ao #fediverso utilizando o cancelo #introductions.'
full_handle: O seu alcume completo
full_handle_hint: Esto é o que lle dirá aos seus amigos para que poidan seguila ou enviarlle mensaxes desde outro servidor.
review_preferences_action: Cambiar preferencias
review_preferences_step: Lembre establecer as preferencias, tales como qué correos-e lle querería recibir, ou o nivel de intimidade por omisión para as súas mensaxes. Se non lle molestan as imaxes con movemento, pode escoller que os GIF se reproduzan automáticamente.
subject: Benvida a Mastodon
- tip_federated_timeline: A liña temporal federada é unha visión reducida da rede Mastodon. Inclúe xente a que segue xente que ti segues, así que non é completa.
- tip_following: Por omisión segues a Admin(s) no teu servidor. Para atopar máis xente interesante, mira nas liñas temporais local e federada.
- tip_local_timeline: A liña temporal local é unha ollada xeral sobre a xente en %{instance}. Son as súas veciñas máis próximas!
+ tip_federated_timeline: A cronoloxía federada é unha visión reducida da rede Mastodon. Inclúe xente a que segue xente que ti segues, así que non é completa.
+ tip_following: Por defecto segues a Admin(s) no teu servidor. Para atopar máis xente interesante, mira nas cronoloxías local e federada.
+ tip_local_timeline: A cronoloxía local é unha ollada xeral sobre a xente en %{instance}. Son as súas veciñas máis próximas!
tip_mobile_webapp: Si o navegador móbil lle ofrece engadir Mastodon a pantalla de inicio, pode recibir notificacións push. En moitos aspectos comportarase como un aplicativo nativo!
tips: Consellos
title: Benvida, %{name}!
users:
- blocked_email_provider: Este provedor de email non está permitido
follow_limit_reached: Non pode seguir a máis de %{limit} persoas
generic_access_help_html: Problemas para acceder a conta? Podes contactar con %{email} para obter axuda
- invalid_email: O enderezo de correo non é válido
- invalid_email_mx: Semella que o enderezo de email non existe
invalid_otp_token: O código do segundo factor non é válido
invalid_sign_in_token: Código de seguridade non válido
- otp_lost_help_html: Si perde o acceso a ambos, pode contactar con %{email}
+ otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email}
seamless_external_login: Está conectado a través de un servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles.
signed_in_as: 'Rexistrada como:'
suspicious_sign_in_confirmation: Semella que non te conectaches antes desde este dispositivo, e hai tempo que non te conectas, así que ímosche enviar un código de seguridade ao teu enderezo de email para confirmar que es ti.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 7fa884cb3..300d13d62 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -24,7 +24,6 @@ he:
people_followed_by: הנעקבים של %{name}
people_who_follow: העוקבים של %{name}
posts_with_replies: חצרוצים ותגובות
- reserved_username: שם המשתמש שמור
roles:
admin: מנהל
moderator: מנחה
@@ -105,17 +104,6 @@ he:
unsubscribe: הפסקת הרשמה
username: שם משתמש
web: רשת
- action_logs:
- actions:
- confirm_user: יש אישור מאת %{name} על כתובת הדוא"ל של %{target}
- create_custom_emoji: "%{name} תרמה/תרם אמוג'י חדש %{target}"
- create_domain_block: "%{name} חסמה/חסם את שם המתחם %{target}"
- create_email_domain_block: מתחם דוא"ל %{target} הוסף לרשימה השחורה ע"י %{name}
- demote_user: '%{name} הורד(ה) בדרגה ע"י %{target}'
- destroy_domain_block: החסימה על מתחם %{target} הוסרה ע"י %{name}
- destroy_email_domain_block: מתחם דוא"ל %{target} הוכנס לרשימה הלבנה ע"י %{name}
- destroy_status: ההודעה של %{target} הוסרה ע"י %{name}
- disable_2fa_user: אימות דו שלבי של %{target} הוסר ע"י %{name}
domain_blocks:
add_new: הוספת חדש
created_msg: חסימת שרת בתהליך
@@ -293,5 +281,4 @@ he:
recovery_codes_regenerated: קודי האחזור יוצרו בהצלחה
recovery_instructions_html: במידה והגישה למכשירך תאבד, ניתן לייצר קודי אחזור למטה על מנת לאחזר גישה לחשבונך בכל עת. נא לשמור על קודי הגישה במקום בטוח. לדוגמא על ידי הדפסתם ושמירתם עם מסמכים חשובים אחרים, או שימוש בתוכנה ייעודית לניהול סיסמאות וסודות.
users:
- invalid_email: כתובת הדוא"ל אינה חוקית
invalid_otp_token: קוד דו-שלבי שגוי
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index f8a659ac2..3380f7d42 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -6,7 +6,6 @@ hr:
about_this: Dodatne informacije
active_count_after: aktivnih
active_footnote: Mjesečno aktivnih korisnika (MAU)
- api: API
apps: Mobilne aplikacije
apps_platforms: Koristite Mastodon na iOS-u, Androidu i drugim platformama
contact: Kontakt
@@ -30,18 +29,10 @@ hr:
nothing_here: Ovdje nema ničeg!
people_followed_by: Ljudi koje %{name} prati
people_who_follow: Ljudi koji prate %{name}
- posts:
- few: Toota
- one: Toot
- other: Tootova
posts_tab_heading: Tootovi
posts_with_replies: Tootovi i odgovori
- reserved_username: Korisničko ime je rezervirano
roles:
- admin: Admin
- bot: Bot
group: Grupa
- moderator: Mod
unavailable: Profil nije dostupan
unfollow: Prestani pratiti
admin:
@@ -53,7 +44,6 @@ hr:
approve: Odobri
approve_all: Odobri sve
are_you_sure: Jeste li sigurni?
- avatar: Avatar
by_domain: Domena
change_email:
changed_msg: E-pošta računa uspješno je promijenjena!
@@ -76,7 +66,6 @@ hr:
followers: Pratitelji
follows: Praćeni
header: Zaglavlje
- ip: IP
location:
all: Sve
local: Lokalno
@@ -110,7 +99,6 @@ hr:
title: Prati %{acct}
datetime:
distance_in_words:
- about_x_hours: "%{count}h"
about_x_months: "%{count}mj"
about_x_years: "%{count}god"
almost_x_years: "%{count}god"
@@ -118,7 +106,6 @@ hr:
less_than_x_seconds: Upravo sada
over_x_years: "%{count}god"
x_months: "%{count}mj"
- x_seconds: "%{count}s"
errors:
'400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page.
@@ -135,7 +122,6 @@ hr:
download: Preuzmite svoju arhivu
size: Veličina
blocks: Blokirali ste
- csv: CSV
lists: Liste
storage: Pohrana medijskih sadržaja
filters:
@@ -217,7 +203,6 @@ hr:
next: Sljedeće
older: Starije
prev: Prethodno
- truncate: "…"
polls:
errors:
already_voted: Već ste glasali u ovoj anketi
@@ -228,17 +213,7 @@ hr:
prompt: 'Pratit ćete:'
sessions:
platforms:
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
- mac: macOS
other: nepoznata platforma
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Opozovi
revoke_success: Sesija je uspješno opozvana
title: Sesije
@@ -296,7 +271,6 @@ hr:
subject: Dobro došli na Mastodon
tips: Savjeti
users:
- invalid_email: Adresa e-pošte nije valjana
invalid_otp_token: Nevažeći dvo-faktorski kôd
invalid_sign_in_token: Nevažeći sigurnosni kôd
signed_in_as: 'Prijavljeni kao:'
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 97596ff0c..542b5553b 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1,8 +1,8 @@
---
hu:
about:
- about_hashtag_html: Ezek a #%{hashtag} hashtag-gel ellátott publikus tülkök. Reagálhatsz rájuk, ha már van felhasználói fiókod valahol a föderációban.
- about_mastodon_html: A Mastodon egy szabad webes protokollokat használó, nyílt forráskódú szociális háló. Decentralizált, akár az e-mail.
+ about_hashtag_html: Ezek a #%{hashtag} hashtaggel ellátott nyilvános bejegyzések. Reagálhatsz rájuk, ha már van felhasználói fiókod valahol a föderációban.
+ about_mastodon_html: 'A jövő közösségi hálózata: Hirdetések és céges megfigyelés nélkül, etikus dizájnnal és decentralizációval! Legyél a saját adataid ura a Mastodonnal!'
about_this: Névjegy
active_count_after: aktív
active_footnote: Havonta aktív felhasználók
@@ -11,8 +11,8 @@ hu:
apps: Mobil appok
apps_platforms: Használd a Mastodont iOS-ről, Androidról vagy más platformról
browse_directory: Böngészd a profilokat és szűrj érdeklődési körre
- browse_local_posts: Nézz bele a szerver publikus, élő adatfolyamába
- browse_public_posts: Nézz bele a Mastodon élő adatfolyamába
+ browse_local_posts: Nézz bele a szerver élő, nyilvános bejegyzéseibe
+ browse_public_posts: Nézz bele a Mastodon élő, nyilvános bejegyzéseibe
contact: Kapcsolat
contact_missing: Nincs megadva
contact_unavailable: N/A
@@ -26,13 +26,15 @@ hu:
felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni, hacsak nem akarod a teljes szervert kitiltani, mely esetben a domain tiltásának használata javasolt.
learn_more: Tudj meg többet
privacy_policy: Adatvédelmi szabályzat
+ rules: Szerverünk szabályai
+ rules_html: 'Alább látod azon követendő szabályok összefoglalóját, melyet be kell tartanod, ha szeretnél fiókot ezen a szerveren:'
see_whats_happening: Nézd, mi történik
server_stats: 'Szerver statisztika:'
source_code: Forráskód
status_count_after:
- one: tülköt küldött
- other: tülköt küldött
- status_count_before: eddig
+ one: bejegyzést írt
+ other: bejegyzést írt
+ status_count_before: Eddig
tagline: Kövess barátokat és találj újakat
terms: Felhasználási feltételek
unavailable_content: A tartalom nem elérhető
@@ -41,7 +43,7 @@ hu:
reason: 'Indok:'
rejecting_media: A szerverről származó médiafájlok nem kerülnek feldolgozásra, és nem jelennek meg miniatűrök, amelyek kézi átkattintást igényelnek a másik szerverre.
rejecting_media_title: Kiszűrt média
- silenced: A szerver hozzászólásai csak a saját hírvonalon jelennek meg, ha követik a szerzőt.
+ silenced: 'Az ezen szerverekről származó bejegyzéseket elrejtjük a nyilvános idővonalakról és beszélgetésekből, a rajtuk lévő felhasználók műveleteiről nem küldünk értesítéseket, hacsak nem követed őket:'
silenced_title: Elnémított szerverek
suspended: Nem fogsz tudni követni senkit ebből a szerverből, és nem kerül feldolgozásra vagy tárolásra a tőle származó adat, és nincs adatcsere.
suspended_title: Felfüggesztett szerverek
@@ -76,11 +78,10 @@ hu:
pin_errors:
following: Ehhez szükséges, hogy kövesd már a felhasználót
posts:
- one: Tülk
- other: Tülk
- posts_tab_heading: Tülkölés
- posts_with_replies: Tülkölés válaszokkal
- reserved_username: Ez már foglalt felhasználónév
+ one: Bejegyzés
+ other: Bejegyzés
+ posts_tab_heading: Bejegyzés
+ posts_with_replies: Bejegyzés válaszokkal
roles:
admin: Adminisztrátor
bot: Bot
@@ -178,7 +179,7 @@ hu:
removed_header_msg: A %{username} fiók fejlécét sikeresen töröltük
resend_confirmation:
already_confirmed: Ezt a felhasználót már megerősítették
- send: Küldd újra a megerősítő e-mailt
+ send: Megerősítő e-mail újraküldése
success: A megerősítő e-mail sikeresen elküldve!
reset: Visszaállítás
reset_password: Jelszó visszaállítása
@@ -192,15 +193,15 @@ hu:
search: Keresés
search_same_email_domain: Felhasználók ugyanezzel az email domainnel
search_same_ip: Más felhasználók ugyanezzel az IP-vel
- sensitive: Szenzitív
- sensitized: szenzitívnek jelölve
+ sensitive: Kényes
+ sensitized: kényesnek jelölve
shared_inbox_url: Megosztott bejövő üzenetek URL
show:
created_reports: Létrehozott jelentések
targeted_reports: Jelentések ezzel kapcsolatban
silence: Némítás
silenced: Némított
- statuses: Tülkök
+ statuses: Bejegyzés
subscribe: Feliratkozás
suspended: Felfüggesztett
suspension_irreversible: Ennek a fióknak az adatait visszaállíthatatlanul törölték. Visszavonhatod a fiók felfüggesztését, hogy újra használható legyen, de a régi adatok ettől még nem fognak visszatérni.
@@ -208,7 +209,7 @@ hu:
time_in_queue: Várakozás a sorban %{time}
title: Fiókok
unconfirmed_email: Nem megerősített e-mail
- undo_sensitized: Szenzitív jelölés levétele
+ undo_sensitized: Kényesnek jelölés visszavonása
undo_silenced: Némítás visszavonása
undo_suspension: Felfüggesztés visszavonása
unsilenced_msg: A %{username} fiók korlátozásait sikeresen levettük
@@ -231,6 +232,7 @@ hu:
create_domain_block: Domain tiltás létrehozása
create_email_domain_block: E-mail domain tiltás létrehozása
create_ip_block: IP szabály létrehozása
+ create_unavailable_domain: Elérhetetlen domain létrehozása
demote_user: Felhasználó lefokozása
destroy_announcement: Közlemény törlése
destroy_custom_emoji: Egyéni emodzsi törlése
@@ -238,7 +240,8 @@ hu:
destroy_domain_block: Domain tiltás törlése
destroy_email_domain_block: E-mail domain tiltás törlése
destroy_ip_block: IP szabály törlése
- destroy_status: Állapot törlése
+ destroy_status: Bejegyzés törlése
+ destroy_unavailable_domain: Elérhetetlen domain törlése
disable_2fa_user: Kétlépcsős hitelesítés letiltása
disable_custom_emoji: Egyéni emodzsi letiltása
disable_user: Felhasználói letiltása
@@ -250,59 +253,61 @@ hu:
reopen_report: Jelentés újranyitása
reset_password_user: Jelszó visszaállítása
resolve_report: Jelentés megoldása
- sensitive_account: A fiókodban minden média szenzitívnek jelölése
+ sensitive_account: A fiókodban minden média kényesnek jelölése
silence_account: Fiók némítása
suspend_account: Fiók felfüggesztése
unassigned_report: Jelentés hozzárendelésének megszüntetése
- unsensitive_account: A fiókodban minden média szenzitív állapotának törlése
+ unsensitive_account: A fiókodban minden média kényesként jelölésének törlése
unsilence_account: Fiók némításának feloldása
unsuspend_account: Fiók felfüggesztésének feloldása
update_announcement: Közlemény frissítése
update_custom_emoji: Egyéni emodzsi frissítése
update_domain_block: Domain tiltás frissítése
- update_status: Állapot frissítése
+ update_status: Bejegyzés frissítése
actions:
- assigned_to_self_report: "%{name} a %{target} bejelentést magához rendelte"
- change_email_user: "%{name} megváltoztatta %{target} felhasználó e-mail címét"
- confirm_user: "%{name} megerősítette e-mail címét: %{target}"
- create_account_warning: "%{name} figyelmeztetést küldött %{target} felhasználónak"
- create_announcement: "%{name} új közleményt hozott létre %{target}"
- create_custom_emoji: "%{name} új emodzsit töltött fel: %{target}"
- create_domain_allow: "%{name} engedélyező listára vette %{target} domaint"
- create_domain_block: "%{name} letiltotta az alábbi domaint: %{target}"
- create_email_domain_block: "%{name} letiltotta az e-mail domaint: %{target}"
- create_ip_block: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban"
- demote_user: "%{name} lefokozta az alábbi felhasználót: %{target}"
- destroy_announcement: "%{name} törölte a közleményt %{target}"
- destroy_custom_emoji: "%{name} törölte az emodzsit: %{target}"
- destroy_domain_allow: "%{name} leszedte %{target} domaint az engedélyező listáról"
- destroy_domain_block: "%{name} engedélyezte az alábbi domaint: %{target}"
- destroy_email_domain_block: "%{name} engedélyezte az e-mail domaint: %{target}"
- destroy_ip_block: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban"
- destroy_status: "%{name} eltávolította az alábbi felhasználó tülkjét: %{target}"
- disable_2fa_user: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján"
- disable_custom_emoji: "%{name} letiltotta az alábbi emodzsit: %{target}"
- disable_user: "%{name} letiltotta az alábbi felhasználó bejelentkezését: %{target}"
- enable_custom_emoji: "%{name} engedélyezte az alábbi emodzsit: %{target}"
- enable_user: "%{name} engedélyezte az alábbi felhasználó bejelentkezését: %{target}"
- memorialize_account: "%{name} emléket állított az alábbi felhasználónak: %{target}"
- promote_user: "%{name} előléptette az alábbi felhasználót: %{target}"
- remove_avatar_user: "%{name} törölte %{target} profilképét"
- reopen_report: "%{name} újranyitotta a bejelentést: %{target}"
- reset_password_user: "%{name} visszaállította az alábbi felhasználó jelszavát: %{target}"
- resolve_report: "%{name} megoldotta alábbi bejelentést: %{target}"
- sensitive_account: "%{name} szenzitívnek jelölte %{target} médiatartalmát"
- silence_account: "%{name} lenémította %{target} felhasználói fiókját"
- suspend_account: "%{name} felfüggesztette %{target} felhasználói fiókját"
- unassigned_report: "%{name} törölte a %{target} bejelentés hozzárendelését"
- unsensitive_account: "%{name} levette a szenzitív jelölést %{target} médiatartalmáról"
- unsilence_account: "%{name} feloldotta a némítást %{target} felhasználói fiókján"
- unsuspend_account: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését"
- update_announcement: "%{name} frissítette a közleményt %{target}"
- update_custom_emoji: "%{name} frissítette az alábbi emodzsit: %{target}"
- update_domain_block: "%{name} frissítette a %{target} domain tiltását"
- update_status: "%{name} frissítette %{target} felhasználó tülkjét"
- deleted_status: "(törölt tülk)"
+ assigned_to_self_report_html: "%{name} a %{target} bejelentést magához rendelte"
+ change_email_user_html: "%{name} megváltoztatta %{target} felhasználó e-mail címét"
+ confirm_user_html: "%{name} megerősítette %{target} e-mail-címét"
+ create_account_warning_html: "%{name} figyelmeztetést küldött %{target} számára"
+ create_announcement_html: "%{name} új közleményt hozott létre: %{target}"
+ create_custom_emoji_html: "%{name} új emodzsit töltött fel: %{target}"
+ create_domain_allow_html: "%{name} engedélyezte a föderációt %{target} domainnel"
+ create_domain_block_html: "%{name} letiltotta a %{target} domaint"
+ create_email_domain_block_html: "%{name} letiltotta a %{target} e-mail domaint"
+ create_ip_block_html: "%{name} létrehozott egy szabályt a %{target} IP-vel kapcsolatban"
+ create_unavailable_domain_html: "%{name} leállította a kézbesítést a %{target} domainbe"
+ demote_user_html: "%{name} lefokozta %{target} felhasználót"
+ destroy_announcement_html: "%{name} törölte a %{target} közleményt"
+ destroy_custom_emoji_html: "%{name} törölte a %{target} emodzsit"
+ destroy_domain_allow_html: "%{name} letiltotta a föderációt a %{target} domainnel"
+ destroy_domain_block_html: "%{name} engedélyezte a %{target} domaint"
+ destroy_email_domain_block_html: "%{name} engedélyezte a %{target} e-mail domaint"
+ destroy_ip_block_html: "%{name} törölt egy szabályt a %{target} IP-vel kapcsolatban"
+ destroy_status_html: "%{name} eltávolította %{target} felhasználó bejegyzését"
+ destroy_unavailable_domain_html: "%{name} újraindította a kézbesítést a %{target} domainbe"
+ disable_2fa_user_html: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján"
+ disable_custom_emoji_html: "%{name} letiltotta a %{target} emodzsit"
+ disable_user_html: "%{name} letiltotta %{target} felhasználó bejelentkezését"
+ enable_custom_emoji_html: "%{name} engedélyezte a %{target} emodzsit"
+ enable_user_html: "%{name} engedélyezte %{target} felhasználó bejelentkezését"
+ memorialize_account_html: "%{name} emléket állított %{target} felhasználónak"
+ promote_user_html: "%{name} előléptette %{target} felhasználót"
+ remove_avatar_user_html: "%{name} törölte %{target} profilképét"
+ reopen_report_html: "%{name} újranyitotta a %{target} bejelentést"
+ reset_password_user_html: "%{name} visszaállította %{target} felhasználó jelszavát"
+ resolve_report_html: "%{name} megoldotta a %{target} bejelentést"
+ sensitive_account_html: "%{name} kényesnek jelölte %{target} médiatartalmát"
+ silence_account_html: "%{name} lenémította %{target} felhasználói fiókját"
+ suspend_account_html: "%{name} felfüggesztette %{target} felhasználói fiókját"
+ unassigned_report_html: "%{name} törölte a %{target} bejelentés hozzárendelését"
+ unsensitive_account_html: "%{name} levette a kényesnek jelölést %{target} médiatartalmáról"
+ unsilence_account_html: "%{name} feloldotta a némítást %{target} felhasználói fiókján"
+ unsuspend_account_html: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését"
+ update_announcement_html: "%{name} frissítette a %{target} közleményt"
+ update_custom_emoji_html: "%{name} frissítette a %{target} emodzsit"
+ update_domain_block_html: "%{name} frissítette a %{target} domain tiltását"
+ update_status_html: "%{name} frissítette %{target} felhasználó bejegyzését"
+ deleted_status: "(törölt bejegyzés)"
empty: Nem található napló.
filter_by_action: Szűrés művelet alapján
filter_by_user: Szűrés felhasználó alapján
@@ -316,10 +321,12 @@ hu:
new:
create: Közlemény létrehozása
title: Új közlemény
+ publish: Közzététel
published_msg: A közlemény sikeresen publikálva!
scheduled_for: Ekkorra ütemezve %{time}
scheduled_msg: A közlemény közzétételre beütemezve!
title: Közlemények
+ unpublish: Közzététel visszavonása
unpublished_msg: A közlemény közzététele sikeresen visszavonva!
updated_msg: A közlemény sikeresen frissítve!
custom_emojis:
@@ -364,7 +371,6 @@ hu:
feature_profile_directory: Profil adatbázis
feature_registrations: Regisztráció
feature_relay: Föderációs relé
- feature_spam_check: Anti-spam
feature_timeline_preview: Idővonal betekintő
features: Funkciók
hidden_service: Föderáció rejtett szolgáltatásokkal
@@ -399,7 +405,7 @@ hu:
create: Tiltás létrehozása
hint: A domain tiltása nem gátolja meg az új fiókok hozzáadását az abatbázishoz, de visszamenőlegesen és automatikusan aktivál bizonyos moderációs szabályokat ezen fiókok esetében.
severity:
- desc_html: A Némítás elrejti az adott felhasználó tülkjeit mindenki elől, aki nem követi az adott felhasználót. A Felfüggesztés eltávolítja az adott felhasználó által létrehozott minden tartalmat, ide értve a médiafájlokat és a fiókadatokat is. Válaszd az Egyik sem opciót, ha csupán a médiafájlokat szeretnéd elutasítani.
+ desc_html: A Némítás elrejti az adott felhasználó bejegyzéseit mindenki elől, aki nem követi őt. A Felfüggesztés eltávolítja az adott felhasználó által létrehozott minden tartalmat, ide értve a médiafájlokat és a fiókadatokat is. Válaszd az Egyik sem opciót, ha csupán a médiafájlokat szeretnéd elutasítani.
noop: Egyik sem
silence: Némítás
suspend: Felfüggesztés
@@ -442,9 +448,34 @@ hu:
create: Domain hozzáadása
title: Új e-mail domain tiltása
title: Tiltott e-mail domainek
+ follow_recommendations:
+ description_html: "A követési ajánlatok segítik az új felhasználókat az érdekes tartalmak gyors megtalálásában. Ha egy felhasználó még nem érintkezett eleget másokkal ahhoz, hogy személyre szabott ajánlatokat kapjon, ezeket a fiókokat ajánljuk helyette. Ezeket naponta újraszámítjuk a nemrég legtöbb embert foglalkoztató, illetve legtöbb helyi követővel rendelkező fiókok alapján."
+ language: Ezen a nyelven
+ status: Állapot
+ suppress: Követési ajánlatok elnémítása
+ suppressed: Elnémítva
+ title: Követési ajánlatok
+ unsuppress: Követési ajánlatok visszaállítása
instances:
+ back_to_all: Mind
+ back_to_limited: Korlátozott
+ back_to_warning: Figyelmeztetés
by_domain: Domain
+ delivery:
+ all: Mind
+ clear: Kézbesítési hibák törlése
+ restart: Kézbesítés újraindítása
+ stop: Kézbesítés leállítása
+ title: Kézbesítés
+ unavailable: Nem elérhető
+ unavailable_message: Kézbesítés nem elérhető
+ warning: Figyelmeztetés
+ warning_message:
+ one: Kézbesítés sikertelen %{count} napja
+ other: Kézbesítés sikertelen %{count} napja
delivery_available: Kézbesítés elérhető
+ delivery_error_days: Kézbesítési hiba időtartama
+ delivery_error_hint: Ha a kézbesítés lehetetlen %{count} napig, automatikusan kézbesíthetetlennek lesz megjelölve.
empty: Nem található domain.
known_accounts:
one: "%{count} ismert fiók"
@@ -491,11 +522,11 @@ hu:
relays:
add_new: Új relé hozzáadása
delete: Törlés
- description_html: A föderációs relé egy olyan köztes szerver, mely nagy mennyiségű publikus tülköt cserél az erre feliratkozó vagy publikáló szerverek között. Ezzel segíthet kis és közepes szervereknek tartalmat megtalálni a föderációban, mely egyébként csak akkor válna lehetővé, ha a saját felhasználóink más szervereken lévő fiókokat követnének.
+ description_html: A föderációs relé egy olyan köztes szerver, mely nagy mennyiségű nyilvános bejegyzést cserél az erre feliratkozó vagy erre publikáló szerverek között. Ezzel segíthetsz kis és közepes szervereknek tartalmat megtalálni a föderációban, mely egyébként csak akkor válna lehetővé, ha a saját felhasználóik más szervereken lévő fiókokat követnének.
disable: Kikapcsolás
disabled: Kikapcsolva
enable: Bekapcsolás
- enable_hint: Ha bekapcsolod, a szerver minden nyilvános tülkre feliratkozik ezen a relén, valamint az összes nyilvános tülköt elküldi ennek.
+ enable_hint: Ha bekapcsolod, a szerver minden nyilvános bejegyzésre feliratkozik ezen a relén, valamint az összes nyilvános bejegyzést elküldi ennek.
enabled: Bekapcsolva
inbox_url: Relé URL
pending: Várakozás a relé jóváhagyására
@@ -544,9 +575,16 @@ hu:
unassign: Hozzárendelés törlése
unresolved: Megoldatlan
updated_at: Frissítve
+ rules:
+ add_new: Szabály hozzáadása
+ delete: Törlés
+ description_html: Bár a többség azt állítja, hogy elolvasták és egyetértenek a felhasználói feltételekkel, általában ez nem teljesül, amíg egy probléma elő nem jön. Tedd könnyebbé a szervered szabályinak áttekintését azzal, hogy pontokba foglalod azt egy listába. Próbáld meg a különálló szabályokat megtartani rövidnek, egyszerűnek, de próbáld meg azt is, hogy nem darabolod fel őket sok különálló kis pontra.
+ edit: Szabály szerkesztése
+ empty: Nincsenek még szerver szabályok definiálva.
+ title: Szerverszabályzat
settings:
activity_api_enabled:
- desc_html: Helyi tülkök, aktív felhasználók és új regisztrációk száma heti bontásban
+ desc_html: Helyi bejegyzések, aktív felhasználók és új regisztrációk száma heti bontásban
title: Felhasználói aktivitás összesített statisztikájának publikussá tétele
bootstrap_timeline_accounts:
desc_html: Az egyes felhasználóneveket vesszővel válaszd el! Csak helyi és aktivált fiókok esetében működik. Üresen (alapértelmezettként) minden helyi adminisztrátorra érvényes.
@@ -567,9 +605,6 @@ hu:
users: Bejelentkezett helyi felhasználóknak
domain_blocks_rationale:
title: Mutasd meg az indokolást
- enable_bootstrap_timeline_accounts:
- desc_html: Az új felhasználók automatikusan követik a beállított fiókokat, így a Saját idővonaluk kezdéskor nem lesz üres
- title: Alapértelmezett követés engedélyezése új felhasználóknak
hero:
desc_html: A kezdőoldalon látszik. Legalább 600x100px méret javasolt. Ha nincs beállítva, a szerver bélyegképet használjuk
title: Hősi kép
@@ -580,8 +615,8 @@ hu:
desc_html: Domainek, amelyekkel ez a szerver kapcsolatban áll
title: Szerverek listájának közzététele, melyekkel ez a szerver kapcsolatban áll
preview_sensitive_media:
- desc_html: Más weboldalakon linkelt tartalmaink előnézetében mindenképp benne lesz egy bélyegkép még akkor is, ha a médiát szenzitívnek jelölték meg
- title: Szenzitív média mutatása OpenGraph előnézetben
+ desc_html: Más weboldalakon linkelt tartalmaink előnézetében mindenképp benne lesz egy bélyegkép még akkor is, ha a médiát kényesnek jelölték meg
+ title: Kényes média mutatása OpenGraph előnézetben
profile_directory:
desc_html: Lehetővé teszi, hogy a felhasználóinkat megtalálják
title: Profil adatbázis engedélyezése
@@ -605,7 +640,7 @@ hu:
open: Bárki regisztrálhat
title: Regisztrációs mód
show_known_fediverse_at_about_page:
- desc_html: Ha aktív, az előnézetben minden tülk megjelenik a velünk kapcsolatban álló szerverekről, egyébként csak helyi tülköket mutatunk.
+ desc_html: Ha le van tiltva, a nyilvános, főoldalról elérhető idővonalon csak helyi tartalmak jelennek meg
title: Mutassuk az általunk ismert föderációt az idővonal előnézetben
show_staff_badge:
desc_html: Stáb-jelvény megjelenítése a felhasználó oldalán
@@ -623,9 +658,6 @@ hu:
desc_html: Megírhatod saját adatkezelési szabályzatodat, felhasználási feltételeidet vagy más hasonló jellegű dokumentumodat. HTML-tageket is használhatsz
title: Egyedi felhasználási feltételek
site_title: A szerver neve
- spam_check_enabled:
- desc_html: A Mastodon automatikusan elnémíthatja és bejelentheti azokat a fiókokat, akik rendszeresen kéretlen üzeneteket küldenek. Persze lehetnek tévedések is.
- title: Automatikus anti-spam
thumbnail:
desc_html: OpenGraph-os és API-s előnézetekben használjuk. Ajánlott mérete 1200x630 pixel
title: A szerver bélyegképe
@@ -646,23 +678,28 @@ hu:
back_to_account: Vissza a fiók oldalára
batch:
delete: Törlés
- nsfw_off: Szenzitív megjelölés törlése
- nsfw_on: Megjelölés szenzitív tartalomként
+ nsfw_off: Kényesnek jelölés törlése
+ nsfw_on: Megjelölés kényes tartalomként
deleted: Törölve
failed_to_execute: Végrehajtás sikertelen
media:
title: Média
- no_media: Nem található médiafájl
- no_status_selected: Nem változtattunk meg semmit, mert semmi sem volt kiválasztva
- title: Felhasználó tülkjei
- with_media: Médiafájlokkal
+ no_media: Nincs média
+ no_status_selected: Nem változtattunk meg egy bejegyzést sem, mert semmi sem volt kiválasztva
+ title: Fiók bejegyzései
+ with_media: Médiával
+ system_checks:
+ database_schema_check:
+ message_html: Vannak esedékes adatbázis migrációink. Kérlek, futtasd őket, hogy biztosítsd, hogy az alkalmazás megfelelően működjön
+ rules_check:
+ action: Szerver szabályok menedzselése
+ message_html: Még nem definiáltál egy szerver szabályt sem.
+ sidekiq_process_check:
+ message_html: Nincs Sidekiq folyamat, mely a %{value} sorhoz van rendelve. Kérlek, nézd át a Sidekiq beállításait
tags:
accounts_today: Egyedi használat a mai napon
accounts_week: Egyedi használat ezen a héten
breakdown: Mai használat bontása forrás szerint
- context: Környezet
- directory: Katalógusban
- in_directory: "%{count} a katalógusban"
last_active: Utoljára aktív
most_popular: Legnépszerűbb
most_recent: Legutóbbi
@@ -671,7 +708,7 @@ hu:
reviewed: Engedélyezett
title: Hashtagek
trending_right_now: Most trendi
- unique_uses_today: "%{count} mai tülkölés"
+ unique_uses_today: "%{count} mai bejegyzés"
unreviewed: Még nem engedélyezett
updated_msg: A hashtag beállításokat sikeresen frissítettük
title: Karbantartás
@@ -679,6 +716,7 @@ hu:
add_new: Új hozzáadása
delete: Törlés
edit_preset: Figyelmeztetés szerkesztése
+ empty: Nem definiáltál még egyetlen figyelmeztetést sem.
title: Figyelmeztetések
admin_mailer:
new_pending_account:
@@ -708,15 +746,15 @@ hu:
body: A Mastodont önkéntesek fordítják.
guide_link: https://crowdin.com/project/mastodon
guide_link_text: Bárki közreműködhet.
- sensitive_content: Szenzitív tartalom
- toot_layout: Tülkök megjelenése
+ sensitive_content: Kényes tartalom
+ toot_layout: Bejegyzések elrendezése
application_mailer:
notification_preferences: E-mail beállítások módosítása
salutation: "%{name}!"
settings: 'E-mail beállítások módosítása: %{link}'
view: 'Megtekintés:'
view_profile: Profil megtekintése
- view_status: Tülk megtekintése
+ view_status: Bejegyzés megtekintése
applications:
created: Alkalmazás sikeresen létrehozva
destroyed: Alkalmazás sikeresen eltávolítva
@@ -735,7 +773,7 @@ hu:
description:
prefix_invited_by_user: "@%{name} meghív téged, hogy csatlakozz erre a Mastodon szerverre!"
prefix_sign_up: Regisztrláj még ma a Mastodonra!
- suffix: Egy fiókkal követhetsz másokat, tülkölhetsz, eszmét cserélhetsz más Mastodon szerverek felhasználóival!
+ suffix: Egy fiókkal követhetsz másokat, bejegyzéseket tehetsz közzé, eszmét cserélhetsz más Mastodon szerverek felhasználóival!
didnt_get_confirmation: Nem kaptad meg a megerősítési lépéseket?
dont_have_your_security_key: Nincs biztonsági kulcsod?
forgot_password: Elfelejtetted a jelszavad?
@@ -762,9 +800,9 @@ hu:
title: Beállítás
status:
account_status: Fiók állapota
- confirming: Várakozás a visszaigazolásra.
+ confirming: Várakozás az e-mailes visszaigazolásra.
functional: A fiókod teljesen működőképes.
- pending: A jelentkezésed engedélyezésre vár. Ez eltarthat egy ideig. Kapsz egy e-mailt, ha az elbírálás megtörtént.
+ pending: A jelentkezésed engedélyezésre vár. Ez eltarthat egy ideig. Kapsz egy e-mailt, ha a kérelmedet jóváhagyták.
redirecting_to: A fiókod inaktív, mert jelenleg ide %{acct} van átirányítva.
too_fast: Túl gyorsan küldted el az űrlapot, próbáld később.
trouble_logging_in: Problémád van a bejelentkezéssel?
@@ -778,7 +816,7 @@ hu:
following: 'Siker! Mostantól követed az alábbi felhasználót:'
post_follow:
close: Akár be is zárhatod ezt az ablakot.
- return: Visszatérés a felhasználó profiloldalára
+ return: A felhasználó profiljának mutatása
web: Megtekintés a weben
title: "%{acct} követése"
challenge:
@@ -817,7 +855,7 @@ hu:
warning:
before: 'Mielőtt továbbmész, kérlek olvasd el ezt alaposan:'
caches: Más szerverek által cache-elt tartalmak még megmaradhatnak
- data_removal: A tülkjeid és minden más adatod véglegesen törlődni fog
+ data_removal: Bejegyzéseid és minden más adatod véglegesen törlődni fog
email_change_html: Megváltoztathatod az email címed a fiókod törlése nélkül
email_contact_html: Ha még mindig nem érkezik meg, emailezhetsz ide %{email} segítségért
email_reconfirmation_html: Ha nem kaptad meg a megerősítő emailt, itt újrakérheted
@@ -853,7 +891,7 @@ hu:
archive_takeout:
date: Dátum
download: Archív letöltése
- hint_html: Itt kérhető egy archív az összes feltöltött tülködről és médiádról. Az exportált adatok ActivityPub formátumban lesznek, melyet bármilyen szabványos program tud olvasni. 7 naponként kérhetsz ilyen archívot.
+ hint_html: Itt kérhető egy archív az összes feltöltött bejegyzésedről és médiádról. Az exportált adatok ActivityPub formátumban lesznek, melyet bármilyen szabványos program tud olvasni. 7 naponként kérhetsz ilyen archívot.
in_progress: Archív összeállítása...
request: Archív kérése
size: Méret
@@ -868,7 +906,7 @@ hu:
add_new: Új hozzáadása
errors:
limit: Már kiemelted a maximálisan engedélyezett számú hashtaget
- hint_html: "Mik a kiemelt hashtagek? Ezek állandóan megjelennek a nyilvános profilodon és lehetővé teszik, hogy mások kifejezetten az ezekhez tartozó tülkjeidet böngésszék. Jó eszköz ez kreatív munkák vagy hosszútávú projektek nyomonkövetésére."
+ hint_html: "Mik a kiemelt hashtagek? Ezek állandóan megjelennek a nyilvános profilodon és lehetővé teszik, hogy mások kifejezetten az ezekhez tartozó bejegyzéseidet böngésszék. Jó eszköz ez kreatív munkák vagy hosszútávú projektek nyomonkövetésére."
filters:
contexts:
account: Profil
@@ -942,7 +980,7 @@ hu:
following: Követettjeid listája
muting: Némított felhasználók listája
upload: Feltöltés
- in_memoriam_html: In Memoriam.
+ in_memoriam_html: Emlékünkben.
invites:
delete: Visszavonás
expired: Lejárt
@@ -970,9 +1008,9 @@ hu:
limit: Elérted a hozzáadható listák maximális számát
media_attachments:
validations:
- images_and_video: Nem csatolhatsz videót olyan tülkhöz, amelyhez már csatoltál képet
+ images_and_video: Nem csatolhatsz videót olyan bejegyzéshez, amelyhez már csatoltál képet
not_ready: Nem lehet olyan fájlt csatolni, melynek még nem fejeződött be a feldolgozása. Próbáld kicsit később!
- too_many: Maximum négy fájlt csatolhatsz a tülkhöz
+ too_many: Maximum négy fájlt csatolhatsz
migrations:
acct: Az új fiók felhasznalonev@domain formátumban
cancel: Átirányítás törlése
@@ -1023,8 +1061,8 @@ hu:
other: "%{count} új értesítésed érkezett legutóbbi látogatásod óta \U0001F418"
title: Amíg távol voltál…
favourite:
- body: 'A tülködet kedvencnek jelölte %{name}:'
- subject: "%{name} kedvencnek jelölte a tülködet"
+ body: 'A bejegyzésedet kedvencnek jelölte %{name}:'
+ subject: "%{name} kedvencnek jelölte a bejegyzésedet"
title: Új kedvencnek jelölés
follow:
body: "%{name} mostantól követ téged!"
@@ -1040,10 +1078,14 @@ hu:
body: "%{name} megemlített téged:"
subject: "%{name} megemlített téged"
title: Új említés
+ poll:
+ subject: "%{name} szavazása véget ért"
reblog:
- body: 'A tülködet %{name} megtolta:'
- subject: "%{name} megtolta a tülködet"
+ body: 'A bejegyzésedet %{name} megtolta:'
+ subject: "%{name} megtolta a bejegyzésedet"
title: Új megtolás
+ status:
+ subject: "%{name} bejegyzést írt"
notifications:
email_events: Események email értesítésekhez
email_events_hint: 'Válaszd ki azokat az eseményeket, melyekről értesítést szeretnél:'
@@ -1085,7 +1127,7 @@ hu:
too_many_options: nem lehet több, mint %{max} opció
preferences:
other: Egyéb
- posting_defaults: Tülkölés alapértelmezései
+ posting_defaults: Bejegyzések alapértelmezései
public_timelines: Nyilvános idővonalak
reactions:
errors:
@@ -1118,17 +1160,17 @@ hu:
remote_interaction:
favourite:
proceed: Jelöljük kedvencnek
- prompt: 'Ezt a tülköt szeretnéd kedvencnek jelölni:'
+ prompt: 'Ezt a bejegyzést szeretnéd kedvencnek jelölni:'
reblog:
- proceed: Megtolás
- prompt: 'Ezt a tülköt szeretnéd megtolni:'
+ proceed: Tovább a megtoláshoz
+ prompt: 'Ezt a bejegyzést szeretnéd megtolni:'
reply:
proceed: Válaszadás
- prompt: 'Erre a tülkre szeretnél válaszolni:'
+ prompt: 'Erre a bejegyzésre szeretnél válaszolni:'
scheduled_statuses:
- over_daily_limit: Túllépted az időzített tülkökre vonatkozó napi limitet (%{limit})
- over_total_limit: Túllépted az időzített tülkökre vonatkozó limitet (%{limit})
- too_soon: Az időzítéshez jövőbeni időpont kell
+ over_daily_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os napi limitet
+ over_total_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os limitet
+ too_soon: Az időzített időpontnak a jövőben kell lennie
sessions:
activity: Legutóbbi tevékenység
browser: Böngésző
@@ -1192,13 +1234,11 @@ hu:
relationships: Követések és követők
two_factor_authentication: Kétlépcsős hitelesítés
webauthn_authentication: Biztonsági kulcsok
- spam_check:
- spam_detected: Ez egy automatikus jelentés. Spamet érzékeltünk.
statuses:
attached:
audio:
- one: "%{count} audio"
- other: "%{count} audio"
+ one: "%{count} hang"
+ other: "%{count} hang"
description: 'Csatolva: %{attached}'
image:
one: "%{count} kép"
@@ -1212,15 +1252,15 @@ hu:
one: 'tiltott hashtaget tartalmaz: %{tags}'
other: 'tiltott hashtageket tartalmaz: %{tags}'
errors:
- in_reply_not_found: Már nem létezik az a tülk, melyre válaszolni szeretnél.
+ in_reply_not_found: Már nem létezik az a bejegyzés, melyre válaszolni szeretnél.
language_detection: Nyelv automatikus felismerése
open_in_web: Megnyitás a weben
- over_character_limit: Túllépted a maximális %{max} karakteres keretet
+ over_character_limit: túllépted a maximális %{max} karakteres keretet
pin_errors:
- limit: Elérted a kitűzhető tülkök maximális számát
- ownership: Nem tűzheted ki valaki más tülkjét
- private: Csak nyilvános tülköt tűzhetsz ki
- reblog: Megtolt tülköt nem tudsz kitűzni
+ limit: Elérted a kitűzhető bejegyzések maximális számát
+ ownership: Nem tűzheted ki valaki más bejegyzését
+ private: Nem nyilvános bejegyzéseket nem tűzhetsz ki
+ reblog: Megtolt bejegyzést nem tudsz kitűzni
poll:
total_people:
one: "%{count} személy"
@@ -1234,18 +1274,19 @@ hu:
show_older: Régebbiek mutatása
show_thread: Szál mutatása
sign_in_to_participate: Jelentkezz be, hogy részt vehess a beszélgetésben
- title: '%{name}: "%{quote}"'
+ title: "%{name}: „%{quote}”"
visibilities:
+ direct: Közvetlen
private: Csak követőknek
- private_long: A tülk csak követőidnek jelenik meg
+ private_long: Csak a követőidnek jelenik meg
public: Nyilvános
- public_long: Bárki láthatja a tülköt
+ public_long: Bárki láthatja
unlisted: Listázatlan
unlisted_long: Mindenki látja, de a nyilvános idővonalakon nem jelenik meg
stream_entries:
- pinned: Kitűzött tülk
+ pinned: Kitűzött bejegyzés
reblogged: megtolta
- sensitive_content: Szenzitív tartalom
+ sensitive_content: Kényes tartalom
tags:
does_not_match_previous_name: nem illeszkedik az előző névvel
terms:
@@ -1254,10 +1295,10 @@ hu:
Milyen adatokat gyűjtünk?
-
@@ -1289,7 +1330,7 @@ hu:
@@ -1307,9 +1348,9 @@ hu:
@@ -1368,47 +1409,44 @@ hu:
warning:
explanation:
disable: A fiókod befagyasztott állapotban megtartja minden adatát, de feloldásig nem csinálhatsz vele semmit.
- sensitive: A feltöltött és hivatkozott médiatartalmaidat szenzitívként kezeljük.
- silence: A fiókod korlátozott állapotában csak a követőid láthatják a tülkjeidet, valamint nem kerülsz rá nyilvános idővonalakra. Ugyanakkor mások manuálisan még követhetnek.
- suspend: A fiókodat felfüggesztették, így minden tülköd és feltöltött fájlod menthetetlenül elveszett erről a szerverről és minden olyanról is, ahol voltak követőid.
+ sensitive: A feltöltött és hivatkozott médiatartalmaidat kényesként kezeljük.
+ silence: A fiókodat így is használhatod, de csak a követőid láthatják a bejegyzéseidet ezen a szerveren, valamint kimaradhatsz a nyilvános idővonalakról is. Ugyanakkor ettől még mások manuálisan bekövethetnek.
+ suspend: Többé nem használhatod a fiókodat, a profilod és más adataid többé nem elérhetőek. Még be tudsz jelentkezni, hogy lementsd az adataidat addig, amíg azokat teljesen le nem töröljük, bár néhány adatot megtartunk, hogy a jövőben ne tudd elkerülni a felfüggesztést.
get_in_touch: Válaszolhatsz erre az emailre, hogy kapcsolatba lépj a %{instance} csapatával.
review_server_policies: Szerver szabályzat átnézése
statuses: 'Különösen hozzá:'
subject:
disable: A fiókodat %{acct} befagyasztották
none: Figyelmeztetés a %{acct} fióknak
- sensitive: A %{acct} fiókod médiatartalmait szenzitívnek jelölték
+ sensitive: A %{acct} fiókod médiatartalmait kényesnek jelölték
silence: A fiókodat %{acct} korlátozták
suspend: A fiókodat %{acct} felfüggesztették
title:
disable: Befagyasztott fiók
none: Figyelem
- sensitive: Médiatartalmadat szenzitívnek jelölték
+ sensitive: Médiatartalmadat kényesnek jelölték
silence: Lekorlátozott fiók
suspend: Felfüggesztett fiók
welcome:
edit_profile_action: Készítsd el profilod
- edit_profile_step: 'Itt tudod egyedivé tenni a profilod: feltölthetsz profil- és borítóképet, megváltoztathatod a megjelenített neved és így tovább. Ha jóvá szeretnéd hagyni követőidet, mielőtt láthatják a tülkjeid, itt tudod a fiókodat zárttá tenni.'
+ edit_profile_step: 'Itt tudod egyedivé tenni a profilod: feltölthetsz profil- és borítóképet, megváltoztathatod a megjelenített neved és így tovább. Ha jóvá szeretnéd hagyni követőidet, mielőtt követhetnek, itt tudod a fiókodat zárttá tenni.'
explanation: Néhány tipp a kezdeti lépésekhez
- final_action: Kezdj tülkölni
- final_step: 'Kezdj tülkölni! Publikus üzeneteid még követők híján is megjelennek másoknak, például a helyi idővonalon és a hashtageknél. Kezdd például azzal, hogy bemutatkozol: használd a #bemutatkozas vagy az #introductions hashtaget a tülködben.'
+ final_action: Kezdj bejegyzéseket írni
+ final_step: 'Kezdj tülkölni! Nyilvános üzeneteid még követők híján is megjelennek másoknak, például a helyi idővonalon és a hashtageknél. Kezdd azzal, hogy bemutatkozol a #bemutatkozas vagy az #introductions hashtag használatával.'
full_handle: Teljes felhasználóneved
full_handle_hint: Ez az, amit megadhatsz másoknak, hogy üzenhessenek neked vagy követhessenek téged más szerverekről.
review_preferences_action: Beállítások módosítása
- review_preferences_step: Tekintsd át beállításaidat, például hogy milyen értesítéseket kérsz e-mailben vagy hogy alapértelmezettként mi legyen a tülkjeid láthatósága. Ha nem vagy szédülős alkat, azt is engedélyezheted, hogy automatikusan lejátsszuk a GIF-eket.
+ review_preferences_step: Tekintsd át a beállításaidat, például hogy milyen értesítéseket kérsz e-mailben, vagy hogy alapértelmezettként mi legyen a bejegyzéseid láthatósága. Ha nem vagy szédülős alkat, GIF-ek automatikus lejátszását is engedélyezheted.
subject: Üdvözöl a Mastodon
- tip_federated_timeline: A nyilvános idővonal a Mastodon ütőere, ahol minden tülkölés összefolyik. Nem teljes ugyan, mert csak azokat az embereket fogod látni, akiket a szervered többi felhasználója közül valaki követ.
+ tip_federated_timeline: A föderációs idővonal a Mastodon hálózat ütőere. Nem teljes, mivel csak azokat az embereket fogod látni, akiket a szervered többi felhasználója közül valaki már követ.
tip_following: Alapértelmezettként szervered adminisztrátorait követed. Látogasd meg a helyi és a nyilvános idővonalat, hogy más érdekes emberekre is rátalálj.
tip_local_timeline: A helyi idővonal a saját szervered (%{instance}) ütőere. Ezek a kedves emberek itt mind a szomszédaid!
tip_mobile_webapp: Ha a böngésződ lehetővé teszi, hogy a kezdőképernyődhöz add a Mastodont, még értesítéseket is fogsz kapni, akárcsak egy igazi alkalmazás esetében!
tips: Tippek
title: Üdv a fedélzeten, %{name}!
users:
- blocked_email_provider: Ez az email szolgáltató nem engedélyezett
follow_limit_reached: Nem követhetsz több, mint %{limit} embert
generic_access_help_html: Nem tudod elérni a fiókodat? Segítségért lépj kapcsolatba velünk ezen %{email}
- invalid_email: A megadott e-mail cím helytelen
- invalid_email_mx: Az email cím nem tűnik létezőnek
invalid_otp_token: Érvénytelen ellenőrző kód
invalid_sign_in_token: Érvénytelen biztonsági kód
otp_lost_help_html: Ha mindkettőt elvesztetted, kérhetsz segítséget itt %{email}
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index 0cfae56ef..fb694709c 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -21,11 +21,11 @@ hy:
federation_hint_html: "%{instance} հանգոյցում հաշիւ բացելով կարող ես հետեւել այլ մարդկանց Մաստադոնի ցանկացած հանգոյցից և ոչ միայն։"
get_apps: Փորձեք բջջային հավելվածը
hosted_on: Մաստոդոնը տեղակայուած է %{domain}ում
- instance_actor_flash: 'Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։
-
-'
+ instance_actor_flash: "Այս հաշիւ վիրտուալ դերասան է, օգտագործուում է սպասարկիչը, այլ ոչ անհատ օգտատիրոջը ներկայացնելու, համար։ Օգտագործուում է ֆեդերացիայի նպատակով, ու չպէտք է արգելափակուի, եթէ չէք ցանկանում արգելափակել ողջ հանգոյցը, որի դէպքում պէտք է օգտագործէք տիրոյթի արգելափակումը։ \n"
learn_more: Իմանալ ավելին
privacy_policy: Գաղտնիության քաղաքականություն
+ rules: Սերվերի կանոնները
+ rules_html: Ներքևում կանոնների ամփոփագիր է, որին պետք է հետևեք, եթե ցանկանում եք այս սերվերում ունենան Mastodon-ի հաշիվ
see_whats_happening: Տես ինչ ա կատարվում
server_stats: Սերվերի վիճակը․
source_code: Ելատեքստ
@@ -78,7 +78,6 @@ hy:
other: Թութերից
posts_tab_heading: Թթեր
posts_with_replies: Թթեր եւ պատասխաններ
- reserved_username: Ծածկանունն արդէն վերցուած է
roles:
admin: Ադմինիստրատոր
bot: Բոտ
@@ -259,47 +258,6 @@ hy:
update_custom_emoji: Թարմացնել սեփական էմոջիները
update_domain_block: Թարմացնել տիրոյթի արգելափակումը
update_status: Թարմացնել գրառումը
- actions:
- assigned_to_self_report: "%{name} բողոքել է %{target} իրենց համար"
- change_email_user: "%{name} փոփոխել է %{target} օգտատիրոջ էլ․ հասցէն"
- confirm_user: "%{name} հաստատել է %{target} օգտատիրոջ էլ․ հասցէն"
- create_account_warning: "%{name} զգուշացրել է %{target}ին"
- create_announcement: "%{name} ստեղծեց նոր յայտարարութիւն %{target}"
- create_custom_emoji: "%{name} վերբեռնել է նոր էմոջի՝ %{target}"
- create_domain_allow: "%{name} թոյլատրել ֆեդերացիան %{target} տիրոյթի հետ"
- create_domain_block: "%{name} արգելափակեց %{target} տիրոյթը"
- create_email_domain_block: "%{name} արգելափակեց էլ․ փոստի տիրոյթ %{target}"
- create_ip_block: "%{name} ստեղծեց կանոն %{target} IP֊ի համար"
- demote_user: "%{name} աստիճանազրկեց օգտատիրոջ %{target}"
- destroy_announcement: "%{name} ջնջեց յայտարարութիւն %{target}"
- destroy_custom_emoji: "%{name} ջնջել է %{target} էմոջին"
- destroy_domain_allow: "%{name} չթոյլատրեց ֆեդերացիան %{target} տիրոյթի հետ"
- destroy_domain_block: "%{name} ապաարգելափակեց տիրոյթ %{target}"
- destroy_email_domain_block: "%{name} ապաարգելափակեց էլ․ փոստի տիրոյթ %{target}"
- destroy_ip_block: "%{name} ջնջեց կանոնը %{target} IP֊ի համար"
- destroy_status: "%{name} ջնջեց %{target}ի գրառում"
- disable_2fa_user: "%{name}ը կասեցրեց 2F պահանջը %{target} օգտատիրոջ համար"
- disable_custom_emoji: "%{name} ապակտիւացրել է %{target} էմոջին"
- disable_user: "%{name} անջատել է մուտքը %{target} օգտատիրոջ համար"
- enable_custom_emoji: "%{name} ակտիվացրել է %{target} էմոջին"
- enable_user: "%{name} թոյլատրեց մուտք %{target} օգտատիրոջ համար"
- memorialize_account: "%{name} դարձրեց %{target}ի հաշիւը յիշատակի էջ"
- promote_user: "%{name} աջակցեց օգտատիրոջը %{target}"
- remove_avatar_user: "%{name} հեռացրեց %{target}ի աւատարը"
- reopen_report: "%{name} վերաբացեց բողոք %{target}"
- reset_password_user: "%{name} վերականգնեց օգտատիրոջ գաղտնաբառը %{target}"
- resolve_report: "%{name} լուծարեց բողոքը %{target}"
- sensitive_account: "%{name}ը նշեց %{target}ի մեդիան որպէս զգայուն"
- silence_account: "%{name} լռեցրեց %{target}ի հաշիւը"
- suspend_account: "%{name} լռեցրեց %{target}ի հաշիւը"
- unassigned_report: "%{name} չսահմանուած բողոք %{target}"
- unsensitive_account: "%{name}ը հեռացրեց %{target}֊ի մեդիայի զգայուն նշումը"
- unsilence_account: "%{name}֊ը հանեց լռեցումը %{target}֊ի հաշուից"
- unsuspend_account: "%{name}ը ապակասեցրեց %{target}ի հաշիւը"
- update_announcement: "%{name}ը թարմացրեց %{target}ի յայտարարութիւնը"
- update_custom_emoji: "%{name} թարմացրել է %{target} էմոջին"
- update_domain_block: "%{name}ը թարմացրեց %{target}ի տիրոյթի արգելափակումը"
- update_status: "%{name}ը թարմացրեց %{target}ի կարգավիճակը"
deleted_status: "(ջնջուած գրառում)"
empty: Ոչ մի գրառում չկայ։
filter_by_action: Զտել ըստ գործողութեան
@@ -361,7 +319,6 @@ hy:
feature_profile_directory: Օգտատիրոջ մատեան
feature_registrations: Գրանցումներ
feature_relay: Ֆեդերացիայի շերտ
- feature_spam_check: Հակա-սպամ
feature_timeline_preview: Հոսքի նախադիտում
features: Յատկանիշներ
hidden_service: Ֆեդերացիա թաքնուած ծառայութիւնների հետ
@@ -569,7 +526,6 @@ hy:
title: Օգտատիրոջ գրառումները
with_media: Մեդիայի հետ
tags:
- context: Համատեքստ
last_active: Վերջին ակտիւութիւնը
most_popular: Ամէնայայտնի
most_recent: Վերջին
@@ -595,11 +551,9 @@ hy:
discovery: Բացայայտում
localization:
body: Մաստոդոնը թարգմանուում է կամաւորների կողմից։
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Աջակցել կարող են բոլորը։
sensitive_content: Զգայուն բովանդակութիւն
application_mailer:
- salutation: "%{name},"
view: Նայել․
view_profile: Նայել անձնական էջը
view_status: Նայել գրառումը
@@ -619,9 +573,6 @@ hy:
logout: Դուրս գալ
migrate_account: Տեղափոխուել այլ հաշիւ
or_log_in_with: Կամ մուտք գործել օգտագործելով՝
- providers:
- cas: CAS
- saml: SAML
register: Գրանցվել
registration_closed: "%{instance}ը չի ընդունում նոր անդամներ"
reset_password: Վերականգնել գաղտանաբառը
@@ -650,7 +601,6 @@ hy:
invalid_signature: անվաւեր Ed25519 բանալի
date:
formats:
- default: "%b %d, %Y"
with_month_name: "%d %B %Y"
datetime:
distance_in_words:
@@ -698,7 +648,6 @@ hy:
size: Չափը
blocks: Արգելափակել
bookmarks: Էջանիշեր
- csv: CSV
domain_blocks: Տիրոյթի արգելափակումներ
lists: Ցանկեր
mutes: Լռեցրել ես
@@ -823,7 +772,6 @@ hy:
next: Հաջորդ
older: Ավելի հին
prev: Նախորդ
- truncate: "…"
polls:
errors:
duration_too_short: շատ կարճ է
@@ -852,38 +800,12 @@ hy:
activity: Վերջին թութը
browser: Դիտարկիչ
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Անհայտ դիտարկիչ
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
description: "%{browser}, %{platform}"
- ip: IP
platforms:
- adobe_air: Adobe Air
android: Անդրոիդ
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
linux: Լինուքս
- mac: macOS
other: անհայտ հարթակ
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Չեղարկել
title: Սեսսիա
settings:
@@ -931,7 +853,6 @@ hy:
show_more: Աւելին
show_thread: Բացել շղթան
sign_in_to_participate: Մուտք գործէք՝ զրոյցին միանալու համար
- title: '%{name}: "%{quote}"'
visibilities:
private: Միայն հետեւողներին
private_long: Հասանելի միայն հետեւորդներին
@@ -1032,10 +953,6 @@ hy:
contrast: Mastodon (բարձր կոնտրաստով)
default: Mastodon (Մուգ)
mastodon-light: Mastodon (Լուսավոր)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
add: Ավելացնել
disable: Անջատել
@@ -1071,9 +988,6 @@ hy:
tip_local_timeline: Տեղական հոսքում երևում են %{instance} հանգոյցի օգտատերի գրառումները։ Նրանք քո հանգոյցի հարևաններն են։
tips: Հուշումներ
users:
- blocked_email_provider: Սույն էլփոստի տրամադրողը արգելված է
- invalid_email: Էլ․ հասցէն անվաւեր է
- invalid_email_mx: Այս հասցէն կարծես թէ գոյութիւն չունի
invalid_otp_token: Անվաւեր 2F կոդ
invalid_sign_in_token: Անվաւեր անվտանգութեան կոդ
signed_in_as: Մոտք գործել որպէս․
diff --git a/config/locales/id.yml b/config/locales/id.yml
index bf63f62a4..31f2ae62f 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -8,7 +8,7 @@ id:
active_footnote: Pengguna Aktif Bulanan (PAB)
administered_by: 'Dikelola oleh:'
api: API
- apps: Aplikasi hp
+ apps: Aplikasi mobile
apps_platforms: Gunakan Mastodon dari iOS, Android, dan platform lain
browse_directory: Jelajahi direktori profil dan saring sesuai minat
browse_local_posts: Jelajahi siaran langsung dari pos publik server ini
@@ -21,11 +21,11 @@ id:
federation_hint_html: Dengan akun di %{instance} Anda dapat mengikuti orang di server Mastodon mana pun dan di luarnya.
get_apps: Coba aplikasi mobile
hosted_on: Mastodon dihosting di %{domain}
- instance_actor_flash: 'Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain.
-
-'
+ instance_actor_flash: "Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain. \n"
learn_more: Pelajari selengkapnya
privacy_policy: Kebijakan Privasi
+ rules: Aturan server
+ rules_html: 'Di bawah ini adalah ringkasan aturan yang perlu Anda ikuti jika Anda ingin memiliki akun di server Mastodon ini:'
see_whats_happening: Lihat apa yang sedang terjadi
server_stats: 'Statistik server:'
source_code: Kode sumber
@@ -74,7 +74,6 @@ id:
other: Toot
posts_tab_heading: Toot
posts_with_replies: Toot dan balasan
- reserved_username: Nama pengguna telah dipesan
roles:
admin: Admin
bot: Bot
@@ -119,7 +118,7 @@ id:
display_name: Nama
domain: Domain
edit: Ubah
- email: E-mail
+ email: Email
email_status: Status Email
enable: Aktifkan
enabled: Diaktifkan
@@ -174,7 +173,7 @@ id:
already_confirmed: Pengguna ini sudah dikonfirmasi
send: Kirim ulang email konfirmasi
success: Email konfirmasi berhasil dikirim!
- reset: Reset
+ reset: Atur ulang
reset_password: Reset kata sandi
resubscribe: Langganan ulang
role: Hak akses
@@ -225,6 +224,7 @@ id:
create_domain_block: Buat Blokir Domain
create_email_domain_block: Buat Email Blokir Domain
create_ip_block: Buat aturan IP
+ create_unavailable_domain: Buat Domain yang Tidak Tersedia
demote_user: Turunkan Pengguna
destroy_announcement: Hapus Pengumuman
destroy_custom_emoji: Hapus Emoji Khusus
@@ -233,6 +233,7 @@ id:
destroy_email_domain_block: Hapus email blokir domain
destroy_ip_block: Hapus aturan IP
destroy_status: Hapus Status
+ destroy_unavailable_domain: Hapus Domain yang Tidak Tersedia
disable_2fa_user: Nonaktifkan 2FA
disable_custom_emoji: Nonaktifkan Emoji Khusus
disable_user: Nonaktifkan Pengguna
@@ -256,46 +257,48 @@ id:
update_domain_block: Perbarui Blokir Domain
update_status: Perbarui Status
actions:
- assigned_to_self_report: "%{name} menugaskan laporan %{target} kpd dirinya sendiri"
- change_email_user: "%{name} mengubah alamat email pengguna %{target}"
- confirm_user: "%{name} mengonfirmasi alamat email pengguna %{target}"
- create_account_warning: "%{name} mengirim peringatan untuk %{target}"
- create_announcement: "%{name} membuat pengumuman baru %{target}"
- create_custom_emoji: "%{name} mengunggah emoji baru %{target}"
- create_domain_allow: "%{name} memasukkan ke daftar putih domain %{target}"
- create_domain_block: "%{name} memblokir domain %{target}"
- create_email_domain_block: "%{name} memblokir domain email %{target}"
- create_ip_block: "%{name} membuat aturan untuk IP %{target}"
- demote_user: "%{name} menurunkan pengguna %{target}"
- destroy_announcement: "%{name} menghapus pengumuman %{target}"
- destroy_custom_emoji: "%{name} menghapus emoji %{target}"
- destroy_domain_allow: "%{name} menghapus domain %{target} dari daftar putih"
- destroy_domain_block: "%{name} membuka blokir domain %{target}"
- destroy_email_domain_block: "%{name} membuka blokir domain email %{target}"
- destroy_ip_block: "%{name} menghapus aturan untuk IP %{target}"
- destroy_status: "%{name} menghapus status %{target}"
- disable_2fa_user: "%{name} mematikan syarat dua faktor utk pengguna %{target}"
- disable_custom_emoji: "%{name} mematikan emoji %{target}"
- disable_user: "%{name} mematikan login untuk pengguna %{target}"
- enable_custom_emoji: "%{name} mengaktifkan emoji %{target}"
- enable_user: "%{name} mengaktifkan login untuk pengguna %{target}"
- memorialize_account: "%{name} mengubah akun %{target} jadi halaman memorial"
- promote_user: "%{name} mempromosikan pengguna %{target}"
- remove_avatar_user: "%{name} menghapus avatar %{target}"
- reopen_report: "%{name} membuka ulang laporan %{target}"
- reset_password_user: "%{name} mereset kata sandi pengguna %{target}"
- resolve_report: "%{name} menyelesaikan laporan %{target}"
- sensitive_account: "%{name} menandai media %{target} sebagai sensitif"
- silence_account: "%{name} membungkam akun %{target}"
- suspend_account: "%{name} menangguhkan akun %{target}"
- unassigned_report: "%{name} tidak menugaskan laporan %{target}"
- unsensitive_account: "%{name} membatalkan tanda media %{target} sebagai sensitif"
- unsilence_account: "%{name} menghapus bungkaman akun %{target}"
- unsuspend_account: "%{name} menghapus penangguhan akun %{target}"
- update_announcement: "%{name} memperbarui pengumuman %{target}"
- update_custom_emoji: "%{name} memperbarui emoji %{target}"
- update_domain_block: "%{name} memperbarui blokir domain untuk %{target}"
- update_status: "%{name} memperbarui status %{target}"
+ assigned_to_self_report_html: "%{name} menugaskan laporan %{target} ke dirinya sendiri"
+ change_email_user_html: "%{name} mengubah alamat email pengguna %{target}"
+ confirm_user_html: "%{name} mengonfirmasi alamat email pengguna %{target}"
+ create_account_warning_html: "%{name} mengirim peringatan untuk %{target}"
+ create_announcement_html: "%{name} membuat pengumuman baru %{target}"
+ create_custom_emoji_html: "%{name} mengunggah emoji baru %{target}"
+ create_domain_allow_html: "%{name} mengizinkan penggabungan dengan domain %{target}"
+ create_domain_block_html: "%{name} memblokir domain %{target}"
+ create_email_domain_block_html: "%{name} memblokir domain email %{target}"
+ create_ip_block_html: "%{name} membuat aturan untuk IP %{target}"
+ create_unavailable_domain_html: "%{name} menghentikan pengiriman ke domain %{target}"
+ demote_user_html: "%{name} menurunkan pengguna %{target}"
+ destroy_announcement_html: "%{name} menghapus pengumuman %{target}"
+ destroy_custom_emoji_html: "%{name} menghapus emoji %{target}"
+ destroy_domain_allow_html: "%{name} membatalkan izin penggabungan dengan domain %{target}"
+ destroy_domain_block_html: "%{name} membuka blokir domain %{target}"
+ destroy_email_domain_block_html: "%{name} membuka blokir domain email %{target}"
+ destroy_ip_block_html: "%{name} menghapus aturan untuk IP %{target}"
+ destroy_status_html: "%{name} menghapus status %{target}"
+ destroy_unavailable_domain_html: "%{name} melanjutkan pengiriman ke domain %{target}"
+ disable_2fa_user_html: "%{name} mematikan syarat dua faktor utk pengguna %{target}"
+ disable_custom_emoji_html: "%{name} mematikan emoji %{target}"
+ disable_user_html: "%{name} mematikan login untuk pengguna %{target}"
+ enable_custom_emoji_html: "%{name} mengaktifkan emoji %{target}"
+ enable_user_html: "%{name} mengaktifkan login untuk pengguna %{target}"
+ memorialize_account_html: "%{name} mengubah akun %{target} jadi halaman memorial"
+ promote_user_html: "%{name} mempromosikan pengguna %{target}"
+ remove_avatar_user_html: "%{name} menghapus avatar %{target}"
+ reopen_report_html: "%{name} membuka ulang laporan %{target}"
+ reset_password_user_html: "%{name} mereset kata sandi pengguna %{target}"
+ resolve_report_html: "%{name} menyelesaikan laporan %{target}"
+ sensitive_account_html: "%{name} menandai media %{target} sebagai sensitif"
+ silence_account_html: "%{name} membisukan akun %{target}"
+ suspend_account_html: "%{name} menangguhkan akun %{target}"
+ unassigned_report_html: "%{name} membatalkan penugasan laporan %{target}"
+ unsensitive_account_html: "%{name} membatalkan tanda media %{target} sebagai sensitif"
+ unsilence_account_html: "%{name} membunyikan akun %{target}"
+ unsuspend_account_html: "%{name} membatalkan penangguhan akun %{target}"
+ update_announcement_html: "%{name} memperbarui pengumuman %{target}"
+ update_custom_emoji_html: "%{name} memperbarui emoji %{target}"
+ update_domain_block_html: "%{name} memperbarui blokir domain untuk %{target}"
+ update_status_html: "%{name} memperbarui status %{target}"
deleted_status: "(status dihapus)"
empty: Log tidak ditemukan.
filter_by_action: Filter berdasarkan tindakan
@@ -310,10 +313,12 @@ id:
new:
create: Buat pengumuman
title: Pengumuman baru
+ publish: Terbitkan
published_msg: Pengumuman berhasil diterbitkan!
scheduled_for: Dijadwalkan untuk %{time}
scheduled_msg: Pengumuman dijadwalkan untuk publikasi!
title: Pengumuman
+ unpublish: Batal terbitkan
unpublished_msg: Pengumuman berhasil ditarik!
updated_msg: Pengumuman berhasil diperbarui!
custom_emojis:
@@ -358,7 +363,6 @@ id:
feature_profile_directory: Direktori profil
feature_registrations: Registrasi
feature_relay: Relai federasi
- feature_spam_check: Anti-spam
feature_timeline_preview: Pratinjau linimasa
features: Fitur
hidden_service: Federasi dengan layanan tersembunyi
@@ -398,6 +402,8 @@ id:
silence: Pendiaman
suspend: Suspen
title: Pemblokiran domain baru
+ obfuscate: Nama domain kabur
+ obfuscate_hint: Mengaburkan nama domain sebagian di daftar jika pengiklanan batasan daftar domain diaktifkan
private_comment: Komentar pribadi
private_comment_hint: Komentar tentang pembatasan domain ini untuk penggunaan internal oleh moderator.
public_comment: Komentar publik
@@ -433,9 +439,33 @@ id:
create: Tambah domain
title: Blokir domain email baru
title: Domain email terblokir
+ follow_recommendations:
+ description_html: "Rekomendasi untuk diikuti" membantu pengguna baru untuk secara cepat menemukan konten yang menarik. Ketika pengguna belum cukup berinteraksi dengan lainnya sehingga belum memunculkan rekomendasi, akun-akun ini akan direkomendasikan. Mereka dihitung ulang secara harian dari campuran akun-akun dengan keterlibatan tertinggi baru-baru ini dan jumlah pengikut lokal tertinggi untuk bahasa tertentu.
+ language: Untuk bahasa
+ status: Status
+ suppress: Hapus akun yang direkomendasikan untuk diikuti
+ suppressed: Dihapus
+ title: Rekomendasi untuk diikuti
+ unsuppress: Kembalikan rekomendasi untuk diikuti
instances:
+ back_to_all: Semua
+ back_to_limited: Terbatas
+ back_to_warning: Peringatan
by_domain: Domain
+ delivery:
+ all: Semua
+ clear: Hapus galat pengiriman
+ restart: Mulai ulang pengiriman
+ stop: Setop pengiriman
+ title: Pengiriman
+ unavailable: Tidak tersedia
+ unavailable_message: Pengiriman tidak tersedia
+ warning: Peringatan
+ warning_message:
+ other: Kegagalan pengiriman %{count} hari
delivery_available: Pengiriman tersedia
+ delivery_error_days: Lama hari pengiriman galat
+ delivery_error_hint: Jika pengiriman tidak terjadi selama %{count} hari, ia akan ditandai secara otomatis sebagai tidak terkirim.
empty: Domain tidak ditemukan.
known_accounts:
other: "%{count} akun yang dikenal"
@@ -532,6 +562,13 @@ id:
unassign: Bebas Tugas
unresolved: Belum Terseleseikan
updated_at: Diperbarui
+ rules:
+ add_new: Tambah aturan
+ delete: Hapus
+ description_html: Saat kebanyakan mengklaim sudah membaca dan menyetujui ketentuan layanan, biasanya orang-orang tidak membacanya sampai masalah muncul. Lebih mudah melihat sepintas aturan server Anda dengan menampilkannya dalam daftar bulatan. Coba buat aturan individu sependek dan sesederhana mungkin, tapi coba jangan memisahkannya ke dalam item terpisah yang sangat banyak.
+ edit: Edit aturan
+ empty: Belum ada aturan server yang didefinisikan.
+ title: Aturan server
settings:
activity_api_enabled:
desc_html: Hitung status yang dipos scr lokal, pengguna aktif, dan registrasi baru dlm keranjang bulanan
@@ -555,9 +592,6 @@ id:
users: Ke pengguna lokal yang sudah login
domain_blocks_rationale:
title: Tampilkan alasan
- enable_bootstrap_timeline_accounts:
- desc_html: Buat pengguna baru mengikuti akun yang sudah dipilih agar beranda mereka tidak kosong
- title: Aktifkan opsi ikuti otomatis untuk pengguna baru
hero:
desc_html: Ditampilkan di halaman depan. Direkomendasikan minimal 600x100px. Jika tidak diatur, kembali ke server gambar kecil
title: Gambar pertama
@@ -611,9 +645,6 @@ id:
desc_html: Anda dapat menulis kebijakan privasi, ketentuan layanan, atau hal legal lainnya sendiri. Anda dapat menggunakan tag HTML
title: Ketentuan layanan kustom
site_title: Judul Situs
- spam_check_enabled:
- desc_html: Mastodon dapat melaporkan secara otomatis akun yang mengirimkan pesan berulang tanpa diminta. Ini mungkin ada kesalahan.
- title: Automasi anti-spam
thumbnail:
desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px
title: Server gambar kecil
@@ -644,13 +675,18 @@ id:
no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih
title: Status akun
with_media: Dengan media
+ system_checks:
+ database_schema_check:
+ message_html: Ada proses migrasi basis data tertunda. Silakan jalankan untuk memastikan aplikasi bekerja seperti yang diharapkan
+ rules_check:
+ action: Kelola aturan server
+ message_html: Anda belum menentukan aturan server apapun.
+ sidekiq_process_check:
+ message_html: Tidak ada proses Sidekiq yang berjalan untuk %{value} antrian. Silakan tinjau konfigurasi Sidekiq Anda
tags:
accounts_today: Penggunaan unik hari ini
accounts_week: Penggunaan unik minggu ini
breakdown: Rinci penggunaan hari ini berdasar sumber
- context: Konteks
- directory: Di direktori
- in_directory: "%{count} di direktori"
last_active: Terakhir aktif
most_popular: Paling populer
most_recent: Terkini
@@ -667,6 +703,7 @@ id:
add_new: Tambah baru
delete: Hapus
edit_preset: Sunting preset peringatan
+ empty: Anda belum mendefinisikan peringatan apapun.
title: Kelola preset peringatan
admin_mailer:
new_pending_account:
@@ -1024,10 +1061,14 @@ id:
body: 'Anda disebut oleh %{name} pada:'
subject: Anda disebut oleh %{name}
title: Sebutan baru
+ poll:
+ subject: Japat oleh %{name} telah berakhir
reblog:
body: 'Status anda di-boost oleh %{name}:'
subject: "%{name} mem-boost status anda"
title: Boost baru
+ status:
+ subject: "%{name} baru saja memposting"
notifications:
email_events: Event untuk notifikasi email
email_events_hint: 'Pilih event yang ingin Anda terima notifikasinya:'
@@ -1176,8 +1217,6 @@ id:
relationships: Ikuti dan pengikut
two_factor_authentication: Autentikasi Two-factor
webauthn_authentication: Kunci keamanan
- spam_check:
- spam_detected: Ini adalah laporan otomatis. Spam terdeteksi.
statuses:
attached:
audio:
@@ -1214,6 +1253,7 @@ id:
sign_in_to_participate: Masuk untuk mengikuti percakapan
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Langsung
private: Khusus pengikut
private_long: Hanya tampilkan ke pengikut
public: Publik
@@ -1382,11 +1422,8 @@ id:
tips: Tips
title: Selamat datang, %{name}!
users:
- blocked_email_provider: Layanan email ini tidak diizinkan
follow_limit_reached: Anda tidak dapat mengikuti lebih dari %{limit} orang
generic_access_help_html: Mengalami masalah saat akses akun? Anda mungkin perlu menghubungi %{email} untuk mencari bantuan
- invalid_email: Alamat email tidak cocok
- invalid_email_mx: Alamat email ini sepertinya tidak ada
invalid_otp_token: Kode dua faktor tidak cocok
invalid_sign_in_token: Kode keamanan tidak valid
otp_lost_help_html: Jika Anda kehilangan akses keduanya, Anda dapat menghubungi %{email}
diff --git a/config/locales/io.yml b/config/locales/io.yml
index a99c4a966..ad9ac5be6 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -155,5 +155,4 @@ io:
generate_recovery_codes: Generate Recovery Codes
recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe, for example by printing them and storing them with other important documents.
users:
- invalid_email: La retpost-adreso ne esas valida
invalid_otp_token: La dufaktora autentikigila kodexo ne esas valida
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 2d6102d98..01c87b598 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -26,6 +26,8 @@ is:
Tilgangur hans tengist virkni vefþjónasambandsins og ætti alls ekki að loka á hann nema að þú viljir útiloka allan viðkomandi vefþjón, en þá ætti frekar að útiloka sjálft lénið.
learn_more: Kanna nánar
privacy_policy: Persónuverndarstefna
+ rules: Reglur netþjónsins
+ rules_html: 'Hér fyrir neðan er yfirlit yfir þær reglur sem þú þarft að fara eftir ef þú ætlar að vera með notandaaðgang á þessum Mastodon-netþjóni:'
see_whats_happening: Sjáðu hvað er í gangi
server_stats: 'Tölfræði þjóns:'
source_code: Grunnkóði
@@ -78,7 +80,6 @@ is:
other: Tíst
posts_tab_heading: Tíst
posts_with_replies: Tíst og svör
- reserved_username: Notandanafnið er frátekið
roles:
admin: Stjóri
bot: Róbót
@@ -229,6 +230,7 @@ is:
create_domain_block: Búa til lén bannað
create_email_domain_block: Búa til tölvupóstfang bannað
create_ip_block: Búa til IP-reglu
+ create_unavailable_domain: Útbúa lén sem ekki er tiltækt
demote_user: Lækka notanda í tign
destroy_announcement: Eyða tilkynningu
destroy_custom_emoji: Eyða sérsniðnu tjáningartákni
@@ -237,6 +239,7 @@ is:
destroy_email_domain_block: Eyða tölvupóstfangi bannað
destroy_ip_block: Eyða IP-reglu
destroy_status: Eyða stöðufærslu
+ destroy_unavailable_domain: Eyða léni sem ekki er tiltækt
disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka
disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt
disable_user: Gera notanda óvirkan
@@ -260,46 +263,48 @@ is:
update_domain_block: Uppfæra útilokun léns
update_status: Uppfæra stöðufærslu
actions:
- assigned_to_self_report: "%{name} úthlutaði skýrslu %{target} til sín"
- change_email_user: "%{name} breytti tölvupóstfangi fyrir notandann %{target}"
- confirm_user: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}"
- create_account_warning: "%{name} sendi aðvörun til %{target}"
- create_announcement: "%{name} útbjó auglýsingu %{target}"
- create_custom_emoji: "%{name} sendi inn nýtt tjáningartákn %{target}"
- create_domain_allow: "%{name} setti lén %{target} á lista yfir leyft"
- create_domain_block: "%{name} útilokaði lénið %{target}"
- create_email_domain_block: "%{name} setti póstlén %{target} á lista yfir bannað"
- create_ip_block: "%{name} bjó til reglu fyrir IP-vistfangið %{target}"
- demote_user: "%{name} lækkaði notandann %{target} í tign"
- destroy_announcement: "%{name} eyddi auglýsingu %{target}"
- destroy_custom_emoji: "%{name} henti út tjáningartákninu %{target}"
- destroy_domain_allow: "%{name} fjarlægði lén %{target} af lista yfir leyft"
- destroy_domain_block: "%{name} aflétti útilokun af léninu %{target}"
- destroy_email_domain_block: "%{name} setti póstlén %{target} á lista yfir leyft"
- destroy_ip_block: "%{name} eyddi reglu fyrir IP-vistfangið %{target}"
- destroy_status: "%{name} fjarlægði stöðufærslu frá %{target}"
- disable_2fa_user: "%{name} gerði tveggja-þátta auðkenningu óvirka fyrir notandann %{target}"
- disable_custom_emoji: "%{name} gerði tjáningartáknið %{target} óvirkt"
- disable_user: "%{name} gerðir innskráningu óvirka fyrir notandann %{target}"
- enable_custom_emoji: "%{name} gerði tjáningartáknið %{target} virkt"
- enable_user: "%{name} gerðir innskráningu virka fyrir notandann %{target}"
- memorialize_account: "%{name} breytti notandaaðgangnum %{target} í minningargreinarsíðu"
- promote_user: "%{name} hækkaði notandann %{target} í tign"
- remove_avatar_user: "%{name} fjarlægði auðkennismynd af %{target}"
- reopen_report: "%{name} enduropnaði skýrslu %{target}"
- reset_password_user: "%{name} endurstillti lykilorð fyrir notandann %{target}"
- resolve_report: "%{name} leysti skýrslu %{target}"
- sensitive_account: "%{name} merkti myndefni frá %{target} sem viðkvæmt"
- silence_account: "%{name} gerði notandaaðganginn %{target} hulinn"
- suspend_account: "%{name} setti notandaaðganginn %{target} í bið"
- unassigned_report: "%{name} fjarlægði úthlutun af skýrslu %{target}"
- unsensitive_account: "%{name} afmerkti myndefni frá %{target} sem viðkvæmt"
- unsilence_account: "%{name} hætti að hylja notandaaðganginn %{target}"
- unsuspend_account: "%{name} tók notandaaðganginn %{target} úr bið"
- update_announcement: "%{name} uppfærði auglýsingu %{target}"
- update_custom_emoji: "%{name} uppfærði tjáningartákn %{target}"
- update_domain_block: "%{name} uppfærði útilokun lénsins %{target}"
- update_status: "%{name} uppfærði stöðufærslu frá %{target}"
+ assigned_to_self_report_html: "%{name} úthlutaði kæru %{target} til sín"
+ change_email_user_html: "%{name} breytti tölvupóstfangi fyrir notandann %{target}"
+ confirm_user_html: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}"
+ create_account_warning_html: "%{name} sendi aðvörun til %{target}"
+ create_announcement_html: "%{name} útbjó nýja tilkynningu %{target}"
+ create_custom_emoji_html: "%{name} sendi inn nýtt tjáningartákn %{target}"
+ create_domain_allow_html: "%{name} leyfði skýjasamband með léninu %{target}"
+ create_domain_block_html: "%{name} útilokaði lénið %{target}"
+ create_email_domain_block_html: "%{name} útilokaði póstlénið %{target}"
+ create_ip_block_html: "%{name} útbjó reglu fyrir IP-vistfangið %{target}"
+ create_unavailable_domain_html: "%{name} stöðvaði afhendingu til lénsins %{target}"
+ demote_user_html: "%{name} lækkaði notandann %{target} í tign"
+ destroy_announcement_html: "%{name} eyddi tilkynninguni %{target}"
+ destroy_custom_emoji_html: "%{name} henti út tjáningartákninu %{target}"
+ destroy_domain_allow_html: "%{name} bannaði skýjasamband með léninu %{target}"
+ destroy_domain_block_html: "%{name} aflétti útilokun af léninu %{target}"
+ destroy_email_domain_block_html: "%{name} aflétti útilokun af póstléninu %{target}"
+ destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}"
+ destroy_status_html: "%{name} fjarlægði stöðufærslu frá %{target}"
+ destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}"
+ disable_2fa_user_html: "%{name} gerði kröfu um tveggja-þátta innskráningu óvirka fyrir notandann %{target}"
+ disable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} óvirkt"
+ disable_user_html: "%{name} gerði innskráningu óvirka fyrir notandann %{target}"
+ enable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} virkt"
+ enable_user_html: "%{name} gerði innskráningu virka fyrir notandann %{target}"
+ memorialize_account_html: "%{name} breytti notandaaðgangnum %{target} í minningargreinarsíðu"
+ promote_user_html: "%{name} hækkaði notandann %{target} í tign"
+ remove_avatar_user_html: "%{name} fjarlægði auðkennismynd af %{target}"
+ reopen_report_html: "%{name} enduropnaði kæru %{target}"
+ reset_password_user_html: "%{name} endurstillti lykilorð fyrir notandann %{target}"
+ resolve_report_html: "%{name} leysti kæru %{target}"
+ sensitive_account_html: "%{name} merkti myndefni frá %{target} sem viðkvæmt"
+ silence_account_html: "%{name} þaggaði niður í aðgangnum %{target}"
+ suspend_account_html: "%{name} setti notandaaðganginn %{target} í bið"
+ unassigned_report_html: "%{name} fjarlægði úthlutun af kæru %{target}"
+ unsensitive_account_html: "%{name} tók merkinguna viðkvæmt af myndefni frá %{target}"
+ unsilence_account_html: "%{name} hætti að hylja notandaaðganginn %{target}"
+ unsuspend_account_html: "%{name} tók notandaaðganginn %{target} úr bið"
+ update_announcement_html: "%{name} uppfærði tilkynningu %{target}"
+ update_custom_emoji_html: "%{name} uppfærði tjáningartáknið %{target}"
+ update_domain_block_html: "%{name} uppfærði lénalás fyrir %{target}"
+ update_status_html: "%{name} uppfærði stöðufærslu frá %{target}"
deleted_status: "(eydd stöðufærsla)"
empty: Engar atvikaskrár fundust.
filter_by_action: Sía eftir aðgerð
@@ -314,10 +319,12 @@ is:
new:
create: Búa til auglýsingu
title: Ný auglýsing
+ publish: Birta
published_msg: Það tókst að birta auglýsinguna!
scheduled_for: Áætlað %{time}
scheduled_msg: Auglýsing var sett á áætlun!
title: Auglýsingar
+ unpublish: Taka úr birtingu
unpublished_msg: Það tókst að taka auglýsinguna úr birtingu!
updated_msg: Það tókst að uppfæra auglýsinguna!
custom_emojis:
@@ -362,7 +369,6 @@ is:
feature_profile_directory: Notandasniðamappa
feature_registrations: Nýskráningar
feature_relay: Sambandsendurvarpi
- feature_spam_check: Ruslpóstvarnir
feature_timeline_preview: Forskoðun tímalínu
features: Eiginleikar
hidden_service: Skýjasamband með faldar þjónustur
@@ -440,9 +446,34 @@ is:
create: Bæta við léni
title: Ný færsla á bannlista fyrir tölvupóstföng
title: Bannlisti yfir tölvupóstföng
+ follow_recommendations:
+ description_html: "Að fylgja meðmælum hjálpar nýjum notendum að finna áhugavert efni á einfaldan máta. Þegar notandi hefur ekki átt í nægilegum samskiptum við aðra til að vera farinn að móta sér skoðanir á hverju hann vill fylgjast með, er mælt með að fylgjast með þessum aðgöngum. Þeir eru endurreiknaðir daglega út frá blöndu þeirra aðganga sem eru með hvað mestri þáttöku í umræðum og mesta fylgjendafjölda út frá hverju tungumáli."
+ language: Fyrir tungumálið
+ status: Staða
+ suppress: Útiloka að fylgja meðmælum
+ suppressed: Útilokað
+ title: Fylgja meðmælum
+ unsuppress: Endurheimta að fylgja meðmælum
instances:
+ back_to_all: Allt
+ back_to_limited: Takmarkað
+ back_to_warning: Aðvörun
by_domain: Lén
+ delivery:
+ all: Allt
+ clear: Hreinsa afhendingarvillur
+ restart: Endurræsa afhendingu
+ stop: Stöðva afhendingu
+ title: Afhending
+ unavailable: Ekki tiltækt
+ unavailable_message: Afhending ekki möguleg
+ warning: Aðvörun
+ warning_message:
+ one: "%{count} dagur með villum í afhendingu"
+ other: "%{count} dagar með villum í afhendingu"
delivery_available: Afhending er til taks
+ delivery_error_days: Dagar með villum í afhendingu
+ delivery_error_hint: Ef afhending er ekki möguleg í %{count} daga, verður það sjálfkrafa merkt sem óafhendanlegt.
empty: Engin lén fundust.
known_accounts:
one: "%{count} þekktur notandaaðgangur"
@@ -542,6 +573,13 @@ is:
unassign: Aftengja úthlutun
unresolved: Óleyst
updated_at: Uppfært
+ rules:
+ add_new: Skrá reglu
+ delete: Eyða
+ description_html: Þó að flestir segist hafa lesið og samþykkt þjónustuskilmála, er fólk samt gjarnt á að lesa slíkar upplýsingar ekki til enda fyrr en upp koma einhver vandamál. Gerðu fólki auðvelt að sjá mikilvægustu reglurnar með því að setja þær fram í flötum punktalista. Reyndu að hafa hverja reglu stutta og skýra, en ekki vera heldur að skipta þeim upp í mörg aðskilin atriði.
+ edit: Breyta reglu
+ empty: Engar reglur fyrir netþjón hafa ennþá verið skilgreindar.
+ title: Reglur netþjónsins
settings:
activity_api_enabled:
desc_html: Fjöldi staðværra stöðufærslna, virkra notenda og nýskráninga í vikulegum skömmtum
@@ -565,9 +603,6 @@ is:
users: Til innskráðra staðværra notenda
domain_blocks_rationale:
title: Birta röksemdafærslu
- enable_bootstrap_timeline_accounts:
- desc_html: Láta nýja notendur sjálfkrafa fylgjast með uppsettum aðgöngum svo að heimastreymi þeirra byrji ekki autt
- title: Virkja sjálfgefnar fylgnistillingar fyrir nýja notendur
hero:
desc_html: Birt á forsíðunni. Mælt með að hún sé a.m.k. 600×100 mynddílar. Þegar þetta er ekki stillt, er notuð smámynd netþjónsins
title: Aðalmynd
@@ -621,9 +656,6 @@ is:
desc_html: Þú getur skrifað þína eigin persónuverndarstefnu, þjónustuskilmála eða annað lagatæknilegt. Þú getur notað HTML-einindi
title: Sérsniðnir þjónustuskilmálar
site_title: Heiti vefþjóns
- spam_check_enabled:
- desc_html: Mastodon getur tilkynnt sjálfvirkt um aðganga sem senda ítrekað óumbeðin skilaboð. Mögulega geta verið rangar slíkar tilkynningar.
- title: Sjálfvirkar ruslpóstvarnir
thumbnail:
desc_html: Notað við forskoðun í gegnum OpenGraph og API-kerfisviðmót. Mælt með 1200×630 mynddílum
title: Smámynd vefþjóns
@@ -654,13 +686,18 @@ is:
no_status_selected: Engum stöðufærslum var breytt þar sem engar voru valdar
title: Staða notendaaðganga
with_media: Með myndefni
+ system_checks:
+ database_schema_check:
+ message_html: Það eru fyrirliggjandi yfirfærslur á gagnagrunnum. Keyrðu þær til að tryggja að forritið hegði sér eins og skyldi
+ rules_check:
+ action: Sýsla með reglur netþjónsins
+ message_html: Þú hefur ekki skilgreint neinar reglur fyrir netþjón.
+ sidekiq_process_check:
+ message_html: Ekkert Sidekiq-ferli er í gangi fyrir %{value} biðröð/biðraðir. Endilega athugaðu Sidekiq-uppsetninguna þína
tags:
accounts_today: Einstök afnot í dag
accounts_week: Einstök afnot í þessari viku
breakdown: Samantekt á notkun dagsins eftir uppruna
- context: Samhengi
- directory: Í möppunni
- in_directory: "%{count} í möppunni"
last_active: Síðasta virkni
most_popular: Vinsælast
most_recent: Nýjast
@@ -677,6 +714,7 @@ is:
add_new: Bæta við nýju
delete: Eyða
edit_preset: Breyta forstilltri aðvörun
+ empty: Þú hefur ekki enn skilgreint neinar aðvaranaforstillingar.
title: Sýsla með forstilltar aðvaranir
admin_mailer:
new_pending_account:
@@ -1038,10 +1076,14 @@ is:
body: "%{name} minntist á þig í:"
subject: "%{name} minntist á þig"
title: Ný tilvísun
+ poll:
+ subject: Könnun frá %{name} er lokið
reblog:
body: "%{name} endurbirti stöðufærsluna þína:"
subject: "%{name} endurbirti stöðufærsluna þína"
title: Ný endurbirting
+ status:
+ subject: "%{name} sendi inn rétt í þessu"
notifications:
email_events: Atburðir fyrir tilkynningar í tölvupósti
email_events_hint: 'Veldu þá atburði sem þú vilt fá tilkynningar í tölvupósti þegar þeir koma upp:'
@@ -1190,8 +1232,6 @@ is:
relationships: Fylgist með og fylgjendur
two_factor_authentication: Tveggja-þátta auðkenning
webauthn_authentication: Öryggislyklar
- spam_check:
- spam_detected: Þetta er sjálfvirk kæra. Ruslpóstur hefur fundist.
statuses:
attached:
audio:
@@ -1234,6 +1274,7 @@ is:
sign_in_to_participate: Skráðu þig inn til að taka þátt í samtalinu
title: "%{name}: „%{quote}‟"
visibilities:
+ direct: Beint
private: Einungis fylgjendur
private_long: Aðeins birt fylgjendum
public: Opinber
@@ -1402,11 +1443,8 @@ is:
tips: Ábendingar
title: Velkomin/n um borð, %{name}!
users:
- blocked_email_provider: Þessi tölvupóstþjónusta er ekki leyfileg
follow_limit_reached: Þú getur ekki fylgst með fleiri en %{limit} aðilum
generic_access_help_html: Vandamál við að tengjast aðgangnum þínum? Þú getur sett þig í samband við %{email} til að fá aðstoð
- invalid_email: Tölvupóstfangið er ógilt
- invalid_email_mx: Tölvupóstfangið virðist ekki vera til
invalid_otp_token: Ógildur tveggja-þátta kóði
invalid_sign_in_token: Ógildur öryggiskóði
otp_lost_help_html: Ef þú hefur misst aðganginn að hvoru tveggja, geturðu sett þig í samband við %{email}
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 1e0ab42f0..b6f482737 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -26,6 +26,8 @@ it:
È utilizzato per scopi di federazione e non dovrebbe essere bloccato a meno che non si voglia bloccare l'intera istanza: in questo caso si dovrebbe utilizzare un blocco di dominio.
learn_more: Scopri altro
privacy_policy: Politica della privacy
+ rules: Regole del server
+ rules_html: 'Di seguito è riportato un riassunto delle regole che devi seguire se vuoi avere un account su questo server di Mastodon:'
see_whats_happening: Guarda cosa succede
server_stats: 'Statistiche del server:'
source_code: Codice sorgente
@@ -35,7 +37,7 @@ it:
status_count_before: Che hanno pubblicato
tagline: Segui amici e trovane di nuovi
terms: Termini di Servizio
- unavailable_content: Contenuto non disponibile
+ unavailable_content: Server moderati
unavailable_content_description:
domain: Server
reason: 'Motivo:'
@@ -78,7 +80,6 @@ it:
other: Toot
posts_tab_heading: Toot
posts_with_replies: Toot e risposte
- reserved_username: Questo nome utente è già stato preso
roles:
admin: Amministratore
bot: Bot
@@ -229,6 +230,7 @@ it:
create_domain_block: Crea blocco di dominio
create_email_domain_block: Crea blocco dominio e-mail
create_ip_block: Crea regola IP
+ create_unavailable_domain: Crea dominio non disponibile
demote_user: Degrada l'utente
destroy_announcement: Cancella annuncio
destroy_custom_emoji: Cancella emoji personalizzata
@@ -237,6 +239,7 @@ it:
destroy_email_domain_block: Cancella blocco dominio e-mail
destroy_ip_block: Elimina regola IP
destroy_status: Cancella stato
+ destroy_unavailable_domain: Elimina dominio non disponibile
disable_2fa_user: Disabilita l'autenticazione a due fattori
disable_custom_emoji: Disabilita emoji personalizzata
disable_user: Disabilita utente
@@ -260,46 +263,48 @@ it:
update_domain_block: Aggiorna blocco di dominio
update_status: Aggiorna stato
actions:
- assigned_to_self_report: "%{name} ha assegnato il rapporto %{target} a se stesso"
- change_email_user: "%{name} ha cambiato l'indirizzo email per l'utente %{target}"
- confirm_user: "%{name} ha confermato l'indirizzo email per l'utente %{target}"
- create_account_warning: "%{name} ha mandato un avvertimento a %{target}"
- create_announcement: "%{name} ha creato un nuovo annuncio %{target}"
- create_custom_emoji: "%{name} ha caricato un nuovo emoji %{target}"
- create_domain_allow: "%{name} ha messo il dominio %{target} nella whitelist"
- create_domain_block: "%{name} ha bloccato il dominio %{target}"
- create_email_domain_block: "%{name} ha messo il dominio email %{target} nella blacklist"
- create_ip_block: "%{name} ha creato la regola per l'IP %{target}"
- demote_user: "%{name} ha degradato l'utente %{target}"
- destroy_announcement: "%{name} ha eliminato l'annuncio %{target}"
- destroy_custom_emoji: "%{name} ha distrutto l'emoji %{target}"
- destroy_domain_allow: "%{name} ha tolto il dominio %{target} dalla whitelist"
- destroy_domain_block: "%{name} ha sbloccato il dominio %{target}"
- destroy_email_domain_block: "%{name}ha messo il dominio email %{target} nella whitelist"
- destroy_ip_block: "%{name} ha eliminato la regola per l'IP %{target}"
- destroy_status: "%{name} ha eliminato lo status di %{target}"
- disable_2fa_user: "%{name} ha disabilitato l'obbligo dei due fattori per l'utente %{target}"
- disable_custom_emoji: "%{name} ha disabilitato l'emoji %{target}"
- disable_user: "%{name} ha disabilitato il login per l'utente %{target}"
- enable_custom_emoji: "%{name} ha abilitato l'emoji %{target}"
- enable_user: "%{name} ha abilitato il login per l'utente %{target}"
- memorialize_account: "%{name} ha trasformato l'account di %{target} in una pagina in memoriam"
- promote_user: "%{name} ha promosso l'utente %{target}"
- remove_avatar_user: "%{name} ha eliminato l'avatar di %{target}"
- reopen_report: "%{name} ha riaperto il rapporto %{target}"
- reset_password_user: "%{name} ha reimpostato la password dell'utente %{target}"
- resolve_report: "%{name} ha risolto il rapporto %{target}"
- sensitive_account: "%{name} ha contrassegnato il media di %{target} come sensibile"
- silence_account: "%{name} ha silenziato l'account di %{target}"
- suspend_account: "%{name} ha sospeso l'account di %{target}"
- unassigned_report: "%{name} report non assegnato %{target}"
- unsensitive_account: "%{name} ha deselezionato il media di %{target} come sensibile"
- unsilence_account: "%{name} ha de-silenziato l'account di %{target}"
- unsuspend_account: "%{name} ha annullato la sospensione dell'account di %{target}"
- update_announcement: "%{name} ha aggiornato l'annuncio %{target}"
- update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
- update_domain_block: "%{name} ha aggiornato il blocco di dominio per %{target}"
- update_status: "%{name} stato aggiornato da %{target}"
+ assigned_to_self_report_html: "%{name} ha assegnato il rapporto %{target} a se stesso"
+ change_email_user_html: "%{name} ha cambiato l'indirizzo e-mail dell'utente %{target}"
+ confirm_user_html: "%{name} ha confermato l'indirizzo e-mail dell'utente %{target}"
+ create_account_warning_html: "%{name} ha inviato un avviso a %{target}"
+ create_announcement_html: "%{name} ha creato un nuovo annuncio %{target}"
+ create_custom_emoji_html: "%{name} ha caricato una nuova emoji %{target}"
+ create_domain_allow_html: "%{name} ha consentito alla federazione col dominio %{target}"
+ create_domain_block_html: "%{name} ha bloccato dominio %{target}"
+ create_email_domain_block_html: "%{name} ha bloccato dominio e-mail %{target}"
+ create_ip_block_html: "%{name} ha creato una regola per l'IP %{target}"
+ create_unavailable_domain_html: "%{name} ha interrotto la consegna al dominio %{target}"
+ demote_user_html: "%{name} ha retrocesso l'utente %{target}"
+ destroy_announcement_html: "%{name} ha eliminato l'annuncio %{target}"
+ destroy_custom_emoji_html: "%{name} ha eliminato emoji %{target}"
+ destroy_domain_allow_html: "%{name} ha negato la federazione al dominio %{target}"
+ destroy_domain_block_html: "%{name} ha sbloccato dominio %{target}"
+ destroy_email_domain_block_html: "%{name} ha sbloccato il dominio e-mail %{target}"
+ destroy_ip_block_html: "%{name} ha eliminato la regola per l'IP %{target}"
+ destroy_status_html: "%{name} ha eliminato lo status di %{target}"
+ destroy_unavailable_domain_html: "%{name} ha ripreso la consegna al dominio %{target}"
+ disable_2fa_user_html: "%{name} ha disabilitato l'autenticazione a due fattori per l'utente %{target}"
+ disable_custom_emoji_html: "%{name} ha disabilitato emoji %{target}"
+ disable_user_html: "%{name} ha disabilitato il login per l'utente %{target}"
+ enable_custom_emoji_html: "%{name} ha abilitato emoji %{target}"
+ enable_user_html: "%{name} ha abilitato il login per l'utente %{target}"
+ memorialize_account_html: "%{name} ha trasformato l'account di %{target} in una pagina in memoriam"
+ promote_user_html: "%{name} ha promosso l'utente %{target}"
+ remove_avatar_user_html: "%{name} ha rimosso l'immagine profilo di %{target}"
+ reopen_report_html: "%{name} ha riaperto il rapporto %{target}"
+ reset_password_user_html: "%{name} ha reimpostato la password dell'utente %{target}"
+ resolve_report_html: "%{name} ha risolto il rapporto %{target}"
+ sensitive_account_html: "%{name} ha segnato il media di %{target} come sensibile"
+ silence_account_html: "%{name} ha silenziato l'account di %{target}"
+ suspend_account_html: "%{name} ha sospeso l'account di %{target}"
+ unassigned_report_html: "%{name} ha disassegnato il rapporto %{target}"
+ unsensitive_account_html: "%{name} ha annullato il segnare il media di %{target} come sensibile"
+ unsilence_account_html: "%{name} ha riattivato l'account di %{target}"
+ unsuspend_account_html: "%{name} ha annullato la sospensione dell'account di %{target}"
+ update_announcement_html: "%{name} ha aggiornato l'annuncio %{target}"
+ update_custom_emoji_html: "%{name} ha aggiornato emoji %{target}"
+ update_domain_block_html: "%{name} ha aggiornato il blocco dominio per %{target}"
+ update_status_html: "%{name} ha aggiornato lo status di %{target}"
deleted_status: "(stato cancellato)"
empty: Nessun log trovato.
filter_by_action: Filtra per azione
@@ -314,10 +319,12 @@ it:
new:
create: Crea annuncio
title: Nuovo annuncio
+ publish: Pubblica
published_msg: Annuncio pubblicato!
scheduled_for: Programmato per %{time}
scheduled_msg: Annuncio programmato per la pubblicazione!
title: Annunci
+ unpublish: Annulla la pubblicazione
unpublished_msg: Annuncio ritirato!
updated_msg: Annuncio aggiornato!
custom_emojis:
@@ -362,7 +369,6 @@ it:
feature_profile_directory: Directory dei profili
feature_registrations: Registrazioni
feature_relay: Ripetitore di federazione
- feature_spam_check: Anti-spam
feature_timeline_preview: Anteprima timeline
features: Funzionalità
hidden_service: Federazione con servizi nascosti
@@ -440,9 +446,34 @@ it:
create: Aggiungi dominio
title: Nuova voce della lista nera delle email
title: Lista nera email
+ follow_recommendations:
+ description_html: "I consigli su chi seguire aiutano i nuovi utenti a trovare rapidamente dei contenuti interessanti. Quando un utente non ha interagito abbastanza con altri per avere dei consigli personalizzati, vengono consigliati questi account. Sono ricalcolati ogni giorno da un misto di account con le più alte interazioni recenti e con il maggior numero di seguaci locali per una data lingua."
+ language: Per lingua
+ status: Stato
+ suppress: Nascondi consigli su chi seguire
+ suppressed: Nascosti
+ title: Consigli su chi seguire
+ unsuppress: Ripristina consigli su chi seguire
instances:
+ back_to_all: Tutto
+ back_to_limited: Limitato
+ back_to_warning: Avviso
by_domain: Dominio
+ delivery:
+ all: Tutto
+ clear: Cancella errori di consegna
+ restart: Riavvia la consegna
+ stop: Interrompi consegna
+ title: Consegna
+ unavailable: Non disponibile
+ unavailable_message: Consegna non disponibile
+ warning: Avviso
+ warning_message:
+ one: Errore di consegna %{count} giorno
+ other: Errori di consegna %{count} giorni
delivery_available: Distribuzione disponibile
+ delivery_error_days: Giorni con errori di consegna
+ delivery_error_hint: Se la consegna non è possibile per %{count} giorni, sarà automaticamente contrassegnata come non consegnabile.
empty: Nessun dominio trovato.
known_accounts:
one: "%{count} account noto"
@@ -542,6 +573,13 @@ it:
unassign: Non assegnare
unresolved: Non risolto
updated_at: Aggiornato
+ rules:
+ add_new: Aggiungi regola
+ delete: Cancella
+ description_html: Mentre la maggior parte degli utenti sostiene di aver letto e accettato i termini di servizio, di solito non li leggono fino a quando sorge un problema. Rendi più facile vedere le regole del server, fornendole in un semplice elenco. Cerca di mantenere le singole regole brevi e semplici, ma cerca anche di non dividerle in molti elementi separati.
+ edit: Modifica regola
+ empty: Non sono ancora state definite regole del server.
+ title: Regole del server
settings:
activity_api_enabled:
desc_html: Conteggi degli status pubblicati localmente, degli utenti attivi e delle nuove registrazioni in gruppi settimanali
@@ -565,9 +603,6 @@ it:
users: Agli utenti locali connessi
domain_blocks_rationale:
title: Mostra motivazione
- enable_bootstrap_timeline_accounts:
- desc_html: I nuovi utenti seguiranno automaticamente gli account configurati, in modo che il loro home feed all'inizio non sia vuoto
- title: Abilita seguiti predefiniti per i nuovi utenti
hero:
desc_html: Mostrata nella pagina iniziale. Almeno 600x100 px consigliati. Se non impostata, sarà usato il thumbnail del server
title: Immagine dell'eroe
@@ -621,9 +656,6 @@ it:
desc_html: Potete scrivere la vostra politica sulla privacy, condizioni del servizio o altre informazioni legali. Potete usare tag HTML
title: Termini di servizio personalizzati
site_title: Nome del server
- spam_check_enabled:
- desc_html: Mastodon può silenziare e segnalare automaticamente account che inviano ripetutamente messaggi non richiesti. Potrebbero esserci falsi positivi.
- title: Automazione anti-spam
thumbnail:
desc_html: Usato per anteprime tramite OpenGraph e API. 1200x630px consigliati
title: Thumbnail del server
@@ -654,13 +686,18 @@ it:
no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato
title: Gli status dell'account
with_media: con media
+ system_checks:
+ database_schema_check:
+ message_html: Ci sono migrazioni del database in attesa. Sei pregato di eseguirle per assicurarti che l'applicazione si comporti come previsto
+ rules_check:
+ action: Gestisci regole del server
+ message_html: Non hai definito alcuna regola del server.
+ sidekiq_process_check:
+ message_html: Nessun processo di Sidekiq in esecuzione per le code di %{value}. Sei pregato di revisionare la tua configurazione di Sidekiq
tags:
accounts_today: Usi unici oggi
accounts_week: Usi unici questa settimana
breakdown: Suddivisione dell'utilizzo di oggi per fonte
- context: Contesto
- directory: Nella directory
- in_directory: "%{count} nella directory"
last_active: Ultima attività
most_popular: Più popolari
most_recent: Più recenti
@@ -677,6 +714,7 @@ it:
add_new: Aggiungi nuovo
delete: Cancella
edit_preset: Modifica avviso predefinito
+ empty: Non hai ancora definito alcun avviso preimpostato.
title: Gestisci avvisi predefiniti
admin_mailer:
new_pending_account:
@@ -688,7 +726,7 @@ it:
subject: Nuova segnalazione per %{instance} (#%{id})
new_trending_tag:
body: 'L''hashtag #%{name} oggi è di tendenza, ma non è stato mai controllato. Non sarà visualizzato pubblicamente se non lo permetti; se salvi il form senza modifiche non lo vedrai mai più.'
- subject: Nuovo hashtag pronto per essere controllato su %{instance} (%{name})
+ subject: Nuovo hashtag pronto per essere controllato su %{instance} (#%{name})
aliases:
add_new: Crea alias
created_msg: Hai creato un nuovo alias. Ora puoi iniziare lo spostamento dal vecchio account.
@@ -1040,10 +1078,14 @@ it:
body: 'Sei stato menzionato da %{name} su:'
subject: Sei stato menzionato da %{name}
title: Nuova menzione
+ poll:
+ subject: Un sondaggio da %{name} è terminato
reblog:
body: 'Il tuo status è stato condiviso da %{name}:'
subject: "%{name} ha condiviso il tuo status"
title: Nuova condivisione
+ status:
+ subject: "%{name} ha appena pubblicato un post"
notifications:
email_events: Eventi per notifiche via email
email_events_hint: 'Seleziona gli eventi per i quali vuoi ricevere le notifiche:'
@@ -1192,8 +1234,6 @@ it:
relationships: Follows e followers
two_factor_authentication: Autenticazione a due fattori
webauthn_authentication: Chiavi di sicurezza
- spam_check:
- spam_detected: Questo è un rapporto automatico. È stato rilevato dello spam.
statuses:
attached:
audio:
@@ -1236,6 +1276,7 @@ it:
sign_in_to_participate: Accedi per partecipare alla conversazione
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Diretto
private: Mostra solo ai tuoi seguaci
private_long: Mostra solo ai seguaci
public: Pubblico
@@ -1340,7 +1381,7 @@ it:
mastodon-light: Mastodon (chiaro)
time:
formats:
- default: "%b %d, %Y, %H:%M"
+ default: "%d %b %Y, %H:%M"
month: "%b %Y"
two_factor_authentication:
add: Aggiungi
@@ -1407,11 +1448,8 @@ it:
tips: Suggerimenti
title: Benvenuto a bordo, %{name}!
users:
- blocked_email_provider: Questo provider di posta non è consentito
follow_limit_reached: Non puoi seguire più di %{limit} persone
generic_access_help_html: Problemi nell'accesso al tuo account? Puoi contattare %{email} per assistenza
- invalid_email: L'indirizzo email inserito non è valido
- invalid_email_mx: L'indirizzo e-mail non sembra esistere
invalid_otp_token: Codice d'accesso non valido
invalid_sign_in_token: Codice di sicurezza non valido
otp_lost_help_html: Se perdessi l'accesso ad entrambi, puoi entrare in contatto con %{email}
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 1b5eeec8d..ebc1ec822 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1,7 +1,7 @@
---
ja:
about:
- about_hashtag_html: ハッシュタグ #%{hashtag} の付いた公開トゥートです。どこでもいいので、連合に参加しているSNS上にアカウントを作れば会話に参加することができます。
+ about_hashtag_html: ハッシュタグ #%{hashtag} の付いた公開投稿です。どこでもいいので、連合に参加しているSNS上にアカウントを作れば会話に参加することができます。
about_mastodon_html: Mastodon は、オープンなウェブプロトコルを採用した、自由でオープンソースなソーシャルネットワークです。電子メールのような分散型の仕組みを採っています。
about_this: 詳細情報
active_count_after: 人アクティブ
@@ -21,17 +21,17 @@ ja:
federation_hint_html: "%{instance} のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。"
get_apps: モバイルアプリを試す
hosted_on: Mastodon hosted on %{domain}
- instance_actor_flash: 'このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。
-
-'
+ instance_actor_flash: "このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 \n"
learn_more: もっと詳しく
privacy_policy: プライバシーポリシー
+ rules: サーバーのルール
+ rules_html: 'このMastodonサーバーにアカウントをお持ちの場合は、以下のルールの概要を確認してください:'
see_whats_happening: やりとりを見てみる
server_stats: 'サーバー統計:'
source_code: ソースコード
status_count_after:
- other: トゥート
- status_count_before: トゥート数
+ other: 投稿
+ status_count_before: 投稿数
tagline: Follow friends and discover new ones
terms: 利用規約
unavailable_content: 制限中のサーバー
@@ -71,10 +71,9 @@ ja:
pin_errors:
following: おすすめしたい人はあなたが既にフォローしている必要があります
posts:
- other: トゥート
- posts_tab_heading: トゥート
- posts_with_replies: トゥートと返信
- reserved_username: このユーザー名は予約されています
+ other: 投稿
+ posts_tab_heading: 投稿
+ posts_with_replies: 投稿と返信
roles:
admin: Admin
bot: Bot
@@ -194,7 +193,7 @@ ja:
targeted_reports: このアカウントについての通報
silence: サイレンス
silenced: サイレンス済み
- statuses: トゥート数
+ statuses: 投稿数
subscribe: 購読する
suspended: 停止済み
suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。
@@ -225,6 +224,7 @@ ja:
create_domain_block: ドメインブロックを作成
create_email_domain_block: メールドメインブロックを作成
create_ip_block: IPルールを作成
+ create_unavailable_domain: 配送できないドメインを作成
demote_user: ユーザーを降格
destroy_announcement: お知らせを削除
destroy_custom_emoji: カスタム絵文字を削除
@@ -232,7 +232,8 @@ ja:
destroy_domain_block: ドメインブロックを削除
destroy_email_domain_block: メールドメインブロックを削除
destroy_ip_block: IPルールを削除
- destroy_status: トゥートを削除
+ destroy_status: 投稿を削除
+ destroy_unavailable_domain: 配送できないドメインを削除
disable_2fa_user: 二段階認証を無効化
disable_custom_emoji: カスタム絵文字を無効化
disable_user: ユーザーを無効化
@@ -241,7 +242,7 @@ ja:
memorialize_account: 追悼アカウント化
promote_user: ユーザーを昇格
remove_avatar_user: アイコンを削除
- reopen_report: 通報を再度開く
+ reopen_report: 未解決に戻す
reset_password_user: パスワードをリセット
resolve_report: 通報を解決済みにする
sensitive_account: アカウントのメディアを閲覧注意にマーク
@@ -254,48 +255,50 @@ ja:
update_announcement: お知らせを更新
update_custom_emoji: カスタム絵文字を更新
update_domain_block: ドメインブロックを更新
- update_status: トゥートを更新
+ update_status: 投稿を更新
actions:
- assigned_to_self_report: "%{name} さんが通報 %{target} を自身の担当に割り当てました"
- change_email_user: "%{name} さんが %{target} さんのメールアドレスを変更しました"
- confirm_user: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました"
- create_account_warning: "%{name} さんが %{target} さんに警告メールを送信しました"
- create_announcement: "%{name} さんが新しいお知らせ %{target} を作成しました"
- create_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を追加しました"
- create_domain_allow: "%{name} さんが %{target} の連合を許可しました"
- create_domain_block: "%{name} さんがドメイン %{target} をブロックしました"
- create_email_domain_block: "%{name} さんが %{target} をメールドメインブロックに追加しました"
- create_ip_block: "%{name} さんが IP %{target} のルールを作成しました"
- demote_user: "%{name} さんが %{target} さんを降格しました"
- destroy_announcement: "%{name} さんがお知らせ %{target} を削除しました"
- destroy_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を削除しました"
- destroy_domain_allow: "%{name} さんが %{target} の連合許可を外しました"
- destroy_domain_block: "%{name} さんがドメイン %{target} のブロックを外しました"
- destroy_email_domain_block: "%{name} さんが %{target} をメールドメインブロックから外しました"
- destroy_ip_block: "%{name} さんが IP %{target} のルールを削除しました"
- destroy_status: "%{name} さんが %{target} さんのトゥートを削除しました"
- disable_2fa_user: "%{name} さんが %{target} さんの二段階認証を無効化しました"
- disable_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を無効化しました"
- disable_user: "%{name} さんが %{target} さんのログインを無効化しました"
- enable_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を有効化しました"
- enable_user: "%{name} さんが %{target} さんのログインを有効化しました"
- memorialize_account: "%{name} さんが %{target} さんを追悼アカウントページに登録しました"
- promote_user: "%{name} さんが %{target} さんを昇格しました"
- remove_avatar_user: "%{name} さんが %{target} さんのアイコンを削除しました"
- reopen_report: "%{name} さんが通報 %{target} を再び開きました"
- reset_password_user: "%{name} さんが %{target} さんのパスワードをリセットしました"
- resolve_report: "%{name} さんが通報 %{target} を解決済みにしました"
- sensitive_account: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました"
- silence_account: "%{name} さんが %{target} さんをサイレンスにしました"
- suspend_account: "%{name} さんが %{target} さんを停止しました"
- unassigned_report: "%{name} さんが通報 %{target} の担当を外しました"
- unsensitive_account: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました"
- unsilence_account: "%{name} さんが %{target} さんのサイレンスを解除しました"
- unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
- update_announcement: "%{name} さんがお知らせ %{target} を更新しました"
- update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
- update_domain_block: "%{name} が %{target} のドメインブロックを更新しました"
- update_status: "%{name} さんが %{target} さんのトゥートを更新しました"
+ assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました"
+ change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました"
+ confirm_user_html: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました"
+ create_account_warning_html: "%{name} さんが %{target} さんに警告メールを送信しました"
+ create_announcement_html: "%{name} さんが新しいお知らせ %{target} を作成しました"
+ create_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を追加しました"
+ create_domain_allow_html: "%{name} さんが %{target} の連合を許可しました"
+ create_domain_block_html: "%{name} さんがドメイン %{target} をブロックしました"
+ create_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックに追加しました"
+ create_ip_block_html: "%{name} さんが IP %{target} のルールを作成しました"
+ create_unavailable_domain_html: "%{name} がドメイン %{target} への配送を停止しました"
+ demote_user_html: "%{name} さんが %{target} さんを降格しました"
+ destroy_announcement_html: "%{name} さんがお知らせ %{target} を削除しました"
+ destroy_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を削除しました"
+ destroy_domain_allow_html: "%{name} さんが %{target} の連合許可を外しました"
+ destroy_domain_block_html: "%{name} さんがドメイン %{target} のブロックを外しました"
+ destroy_email_domain_block_html: "%{name} さんが %{target} をメールドメインブロックから外しました"
+ destroy_ip_block_html: "%{name} さんが IP %{target} のルールを削除しました"
+ destroy_status_html: "%{name} さんが %{target} さんの投稿を削除しました"
+ destroy_unavailable_domain_html: "%{name} がドメイン %{target} への配送を再開しました"
+ disable_2fa_user_html: "%{name} さんが %{target} さんの二段階認証を無効化しました"
+ disable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を無効化しました"
+ disable_user_html: "%{name} さんが %{target} さんのログインを無効化しました"
+ enable_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を有効化しました"
+ enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました"
+ memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました"
+ promote_user_html: "%{name} さんが %{target} さんを昇格しました"
+ remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました"
+ reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました"
+ reset_password_user_html: "%{name} さんが %{target} さんのパスワードをリセットしました"
+ resolve_report_html: "%{name} さんが通報 %{target} を解決済みにしました"
+ sensitive_account_html: "%{name} さんが %{target} さんのメディアを閲覧注意にマークしました"
+ silence_account_html: "%{name} さんが %{target} さんをサイレンスにしました"
+ suspend_account_html: "%{name} さんが %{target} さんを停止しました"
+ unassigned_report_html: "%{name} さんが通報 %{target} の担当を外しました"
+ unsensitive_account_html: "%{name} さんが %{target} さんのメディアの閲覧注意を解除しました"
+ unsilence_account_html: "%{name} さんが %{target} さんのサイレンスを解除しました"
+ unsuspend_account_html: "%{name} さんが %{target} さんの停止を解除しました"
+ update_announcement_html: "%{name} さんがお知らせ %{target} を更新しました"
+ update_custom_emoji_html: "%{name} さんがカスタム絵文字 %{target} を更新しました"
+ update_domain_block_html: "%{name} が %{target} のドメインブロックを更新しました"
+ update_status_html: "%{name} さんが %{target} さんの投稿を更新しました"
deleted_status: "(削除済)"
empty: ログが見つかりませんでした
filter_by_action: アクションでフィルター
@@ -310,10 +313,12 @@ ja:
new:
create: お知らせを作成
title: お知らせを追加
+ publish: 公開する
published_msg: お知らせを掲載しました
scheduled_for: "%{time} に予約"
scheduled_msg: お知らせの掲載を予約しました
title: お知らせ
+ unpublish: 非公開にする
unpublished_msg: お知らせを非掲載にしました
updated_msg: お知らせを更新しました
custom_emojis:
@@ -358,7 +363,6 @@ ja:
feature_profile_directory: ディレクトリ
feature_registrations: 新規登録
feature_relay: 連合リレー
- feature_spam_check: スパム対策
feature_timeline_preview: タイムラインプレビュー
features: 機能
hidden_service: 秘匿サービスとの連合
@@ -393,7 +397,7 @@ ja:
create: ブロックを作成
hint: ドメインブロックはデータベース中のアカウント項目の作成を妨げませんが、遡って自動的に指定されたモデレーションをそれらのアカウントに適用します。
severity:
- desc_html: "サイレンスはアカウントのトゥートをフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルを拒否したいだけの場合はなしを使います。"
+ desc_html: "サイレンスはアカウントの投稿をフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルを拒否したいだけの場合はなしを使います。"
noop: なし
silence: サイレンス
suspend: 停止
@@ -435,9 +439,33 @@ ja:
create: ドメインを追加
title: 新規メールドメインブロック
title: メールドメインブロック
+ follow_recommendations:
+ description_html: "おすすめフォローは、新規ユーザーが興味のあるコンテンツをすばやく見つけるのに役立ちます。ユーザーが他のユーザーとの交流を十分にしていない場合、パーソナライズされたおすすめフォローを生成する代わりに、これらのアカウントが表示されます。最近のエンゲージメントが最も高いアカウントと、特定の言語のローカルフォロワー数が最も多いアカウントを組み合わせて、毎日再計算されます。"
+ language: 言語
+ status: ステータス
+ suppress: おすすめフォローに表示しない
+ suppressed: 非表示
+ title: おすすめフォロー
+ unsuppress: おすすめフォローを復元
instances:
+ back_to_all: すべて
+ back_to_limited: 制限あり
+ back_to_warning: 警告あり
by_domain: ドメイン
+ delivery:
+ all: すべて
+ clear: 配送エラーをクリア
+ restart: 配送を再開
+ stop: 配送を停止
+ title: 配送
+ unavailable: 配送不可
+ unavailable_message: 配送不可
+ warning: 警告あり
+ warning_message:
+ other: "%{count} 日配送失敗"
delivery_available: 配送可能
+ delivery_error_days: 配送エラー発生日
+ delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。"
empty: ドメインが見つかりませんでした。
known_accounts:
other: 既知のアカウント数 %{count}
@@ -483,11 +511,11 @@ ja:
relays:
add_new: リレーを追加
delete: 削除
- description_html: "連合リレーとは、登録しているサーバー間の公開トゥートを仲介するサーバーです。中小規模のサーバーが連合のコンテンツを見つけるのを助けます。これを使用しない場合、ローカルユーザーがリモートユーザーを手動でフォローする必要があります。"
+ description_html: "連合リレーとは、登録しているサーバー間の公開投稿を仲介するサーバーです。中小規模のサーバーが連合のコンテンツを見つけるのを助けます。これを使用しない場合、ローカルユーザーがリモートユーザーを手動でフォローする必要があります。"
disable: 無効化
disabled: 無効
enable: 有効化
- enable_hint: 有効にすると、リレーから全ての公開トゥートを受信するようになり、またこのサーバーの全ての公開トゥートをリレーに送信するようになります。
+ enable_hint: 有効にすると、リレーから全ての公開投稿を受信するようになり、またこのサーバーの全ての公開投稿をリレーに送信するようになります。
enabled: 有効
inbox_url: リレーURL
pending: リレーサーバーの承認待ちです
@@ -516,14 +544,14 @@ ja:
forwarded: 転送済み
forwarded_to: "%{domain} に転送されました"
mark_as_resolved: 解決済みとしてマーク
- mark_as_unresolved: 未解決として再び開く
+ mark_as_unresolved: 未解決に戻す
notes:
create: 書き込む
create_and_resolve: 書き込み、解決済みにする
- create_and_unresolve: 書き込み、未解決として開く
+ create_and_unresolve: 書き込み、未解決に戻す
delete: 削除
placeholder: どのような措置が取られたか、または関連する更新を記述してください…
- reopen: 再び開く
+ reopen: 未解決に戻す
report: 通報#%{id}
reported_account: 報告対象アカウント
reported_by: 報告者
@@ -534,13 +562,20 @@ ja:
unassign: 担当を外す
unresolved: 未解決
updated_at: 更新日時
+ rules:
+ add_new: ルールを追加
+ delete: 削除
+ description_html: たいていの人が利用規約を読んで同意したと言いますが、普通は問題が発生するまで読みません。箇条書きにして、サーバーのルールが一目で分かるようにしましょう。個々のルールは短くシンプルなものにし、多くの項目に分割しないようにしましょう。
+ edit: ルールを編集
+ empty: サーバーのルールが定義されていません。
+ title: サーバーのルール
settings:
activity_api_enabled:
- desc_html: 週ごとのローカルに投稿されたトゥート数、アクティブなユーザー数、新規登録者数
+ desc_html: 週ごとのローカルに投稿された投稿数、アクティブなユーザー数、新規登録者数
title: ユーザーアクティビティに関する統計を公開する
bootstrap_timeline_accounts:
- desc_html: 複数のユーザー名はコンマで区切ります。ローカルの公開アカウントのみ有効です。指定しない場合は管理者がデフォルトで指定されます。
- title: 新規ユーザーが自動フォローするアカウント
+ desc_html: 複数のユーザー名を指定する場合コンマで区切ります。おすすめに表示されます。
+ title: 新規ユーザーにおすすめするアカウント
contact_information:
email: ビジネスメールアドレス
username: 連絡先ユーザー名
@@ -557,9 +592,6 @@ ja:
users: ログイン済みローカルユーザーのみ許可
domain_blocks_rationale:
title: コメントを表示
- enable_bootstrap_timeline_accounts:
- desc_html: 新規ユーザーが設定したアカウントを自動的にフォローして、ホームフィードが空にならないようにする
- title: 新規ユーザーの自動フォローを有効にする
hero:
desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、標準のサムネイルが使用されます
title: ヒーローイメージ
@@ -595,7 +627,7 @@ ja:
open: 誰でも登録可
title: 新規登録
show_known_fediverse_at_about_page:
- desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開トゥートのみ表示します。
+ desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開投稿のみ表示します。
title: 公開タイムラインに連合先のコンテンツも表示する
show_staff_badge:
desc_html: ユーザーページにスタッフのバッジを表示します
@@ -613,9 +645,6 @@ ja:
desc_html: 独自のプライバシーポリシーや利用規約、その他の法的根拠を記述できます。HTMLタグが使えます
title: カスタム利用規約
site_title: サーバーの名前
- spam_check_enabled:
- desc_html: 迷惑なメッセージを繰り返し送信するアカウントを自動で通報することができます。誤検知を含む可能性があります。
- title: スパム対策を有効にする
thumbnail:
desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です
title: サーバーのサムネイル
@@ -644,15 +673,20 @@ ja:
title: メディア
no_media: メディアなし
no_status_selected: 何も選択されていないため、変更されていません
- title: トゥート一覧
+ title: 投稿一覧
with_media: メディアあり
+ system_checks:
+ database_schema_check:
+ message_html: 未実行のデータベースマイグレーションがあります。実行して正常に動作するようにしてください。
+ rules_check:
+ action: サーバーのルールを管理
+ message_html: サーバーのルールを定義していません。
+ sidekiq_process_check:
+ message_html: "%{value} キューに対応するSidekiq プロセスがありません。Sidekiq の設定を確認してください。"
tags:
accounts_today: 本日使用した人数
accounts_week: 今週使用した人数
breakdown: 直近のサーバー別使用状況
- context: 表示先
- directory: ディレクトリに使用
- in_directory: "%{count} 人がディレクトリに使用"
last_active: 最近使われた順
most_popular: 使用頻度順
most_recent: 新着順
@@ -661,7 +695,7 @@ ja:
reviewed: 審査済み
title: ハッシュタグ
trending_right_now: 現在のトレンド
- unique_uses_today: 本日 %{count} 人がトゥートに使用
+ unique_uses_today: 本日 %{count} 人が投稿に使用
unreviewed: 未審査
updated_msg: ハッシュタグ設定が更新されました
title: 管理
@@ -669,6 +703,7 @@ ja:
add_new: 追加
delete: 削除
edit_preset: プリセット警告文を編集
+ empty: まだプリセット警告文が作成されていません。
title: プリセット警告文を管理
admin_mailer:
new_pending_account:
@@ -699,14 +734,14 @@ ja:
guide_link: https://ja.crowdin.com/project/mastodon
guide_link_text: 誰でも参加することができます。
sensitive_content: 閲覧注意コンテンツ
- toot_layout: トゥートレイアウト
+ toot_layout: 投稿のレイアウト
application_mailer:
notification_preferences: メール設定の変更
salutation: "%{name} さん"
settings: 'メール設定の変更: %{link}'
view: 'リンク:'
view_profile: プロフィールを表示
- view_status: トゥートを表示
+ view_status: 投稿を表示
applications:
created: アプリが作成されました
destroyed: アプリが削除されました
@@ -811,7 +846,7 @@ ja:
email_change_html: アカウントを削除しなくてもメールアドレスを変更できます
email_contact_html: それでも届かない場合、%{email} までメールで問い合わせてください
email_reconfirmation_html: 確認のメールが届かない場合、もう一度申請できます。
- irreversible: アカウントを元に戻したり復活させることはできません
+ irreversible: 削除操作の撤回やアカウントの復活はできません
more_details_html: 詳しくはプライバシーポリシーをご覧ください。
username_available: あなたのユーザー名は再利用できるようになります
username_unavailable: あなたのユーザー名は引き続き利用できません
@@ -843,7 +878,7 @@ ja:
archive_takeout:
date: 日時
download: ダウンロード
- hint_html: "トゥートとメディアのアーカイブをリクエストできます。 データはActivityPub形式で、対応しているソフトウェアで読み込むことができます。7日毎にアーカイブをリクエストできます。"
+ hint_html: "投稿本文とメディアのアーカイブをリクエストできます。 データはActivityPub形式で、対応しているソフトウェアで読み込むことができます。7日毎にアーカイブをリクエストできます。"
in_progress: 準備中...
request: アーカイブをリクエスト
size: 容量
@@ -905,11 +940,11 @@ ja:
verification_failed: KeybaseはこのトークンをKeybaseユーザー%{kb_username}の署名として認識しませんでした。Keybaseから再試行してください。
wrong_user: "%{current}としてログインしている間%{proving}の証明を作成することはできません。%{proving}としてログインし、もう一度やり直してください。"
explanation_html: ここではKeybaseのような他のサービスのアカウントと暗号化し関連づけることができます。これによりそれらのサービス上で他の人が暗号化されたメッセージを送信したり、あなたの送信した内容があなたからのものであると信用できるようになります。
- i_am_html: I am %{username} on %{service}.
- identity: Identity
+ i_am_html: 私は %{service} の %{username} です。
+ identity: 所属
inactive: 非アクティブ
publicize_checkbox: 'そしてこれをトゥートします:'
- publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}'
+ publicize_toot: '証明されました!私は %{service} の %{username} です: %{url}'
remove: アカウントから証明書を削除
removed: アカウントから証明書を削除することに成功しました
status: 認証状態
@@ -1009,7 +1044,7 @@ ja:
other: "新しい%{count}件の通知 \U0001F418"
title: 不在の間に…
favourite:
- body: "%{name} さんにお気に入り登録された、あなたのトゥートがあります:"
+ body: "%{name} さんにお気に入り登録された、あなたの投稿があります:"
subject: "%{name} さんにお気に入りに登録されました"
title: 新たなお気に入り登録
follow:
@@ -1026,10 +1061,14 @@ ja:
body: "%{name} さんから返信がありました:"
subject: "%{name} さんに返信されました"
title: 新たな返信
+ poll:
+ subject: "%{name} さんの投票が終了しました"
reblog:
- body: "%{name} さんにブーストされた、あなたのトゥートがあります:"
+ body: "%{name} さんにブーストされた、あなたの投稿があります:"
subject: "%{name} さんにブーストされました"
title: 新たなブースト
+ status:
+ subject: "%{name} さんが投稿しました"
notifications:
email_events: メールによる通知
email_events_hint: '受信する通知を選択:'
@@ -1053,9 +1092,9 @@ ja:
setup: セットアップ
wrong_code: コードが間違っています。サーバーとデバイスの時計にずれがあるかもしれません。
pagination:
- newer: 新しいトゥート
+ newer: 新しい投稿
next: 次
- older: 以前のトゥート
+ older: 以前の投稿
prev: 前
truncate: "…"
polls:
@@ -1178,8 +1217,6 @@ ja:
relationships: フォロー・フォロワー
two_factor_authentication: 二段階認証
webauthn_authentication: セキュリティキー
- spam_check:
- spam_detected: これは自動的に作成された通報です。スパムが検出されています。
statuses:
attached:
audio:
@@ -1194,14 +1231,14 @@ ja:
disallowed_hashtags:
other: '許可されていないハッシュタグが含まれています: %{tags}'
errors:
- in_reply_not_found: あなたが返信しようとしているトゥートは存在しないようです。
+ in_reply_not_found: あなたが返信しようとしている投稿は存在しないようです。
language_detection: 自動検出
open_in_web: Webで開く
over_character_limit: 上限は %{max}文字までです
pin_errors:
- limit: 固定できるトゥート数の上限に達しました
- ownership: 他人のトゥートを固定することはできません
- private: 非公開のトゥートを固定することはできません
+ limit: 固定できる投稿数の上限に達しました
+ ownership: 他人の投稿を固定することはできません
+ private: 非公開の投稿を固定することはできません
reblog: ブーストを固定することはできません
poll:
total_people:
@@ -1216,6 +1253,7 @@ ja:
sign_in_to_participate: ログインして会話に参加
title: '%{name}: "%{quote}"'
visibilities:
+ direct: ダイレクト
private: フォロワー限定
private_long: フォロワーにのみ表示されます
public: 公開
@@ -1223,7 +1261,7 @@ ja:
unlisted: 未収載
unlisted_long: 誰でも見ることができますが、公開タイムラインには表示されません
stream_entries:
- pinned: 固定されたトゥート
+ pinned: 固定された投稿
reblogged: さんがブースト
sensitive_content: 閲覧注意
tags:
@@ -1349,11 +1387,11 @@ ja:
explanation:
disable: あなたのアカウントはログインが禁止され使用できなくなりました。しかしアカウントのデータはそのまま残っています。
sensitive: あなたのアップロードしたメディアファイルとリンク先のメディアは、閲覧注意として扱われます。
- silence: あなたのアカウントは制限されましたがそのまま使用できます。ただし既にフォローしている人はあなたのトゥートを見ることができますが、様々な公開タイムラインには表示されない場合があります。また他のユーザーは今後も手動であなたをフォローすることができます。
+ silence: あなたのアカウントは制限されましたがそのまま使用できます。ただし既にフォローしている人はあなたの投稿を見ることができますが、様々な公開タイムラインには表示されない場合があります。また他のユーザーは今後も手動であなたをフォローすることができます。
suspend: あなたのアカウントは使用できなくなりプロフィールやその他データにアクセスできなくなりました。アカウントが完全に削除されるまではログインしてデータのエクスポートをリクエストできます。証拠隠滅を防ぐため一部のデータは削除されず残ります。
get_in_touch: このメールに返信することで %{instance} のスタッフと連絡を取ることができます。
review_server_policies: サーバーのポリシーを確認
- statuses: '特に次のトゥート:'
+ statuses: '特に次の投稿:'
subject:
disable: あなたのアカウント %{acct} は凍結されました
none: "%{acct} に対する警告"
@@ -1384,11 +1422,8 @@ ja:
tips: 豆知識
title: ようこそ、%{name}!
users:
- blocked_email_provider: このメールプロバイダは許可されていません
follow_limit_reached: あなたは現在 %{limit} 人以上フォローできません
generic_access_help_html: アクセスできませんか? %{email} に問い合わせることができます。
- invalid_email: メールアドレスが無効です
- invalid_email_mx: メールアドレスが存在しないようです
invalid_otp_token: 二段階認証コードが間違っています
invalid_sign_in_token: 無効なセキュリティコードです
otp_lost_help_html: どちらも使用できない場合、%{email} に連絡を取ると解決できるかもしれません
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 523d2bdd5..80c738b26 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -33,7 +33,6 @@ ka:
pin_errors:
following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ
posts_with_replies: ტუტები და პასუხები
- reserved_username: მომხმარებელი რეზერვირებულია
roles:
admin: ადმინისტრატორი
bot: ბოტი
@@ -127,35 +126,6 @@ ka:
username: მომხმარებლის სახელი
web: ვები
action_logs:
- actions:
- assigned_to_self_report: "%{name}-მა დანიშნა რეპორტი %{target} საკუთარ თავზე"
- change_email_user: "%{name}-მა შეცვალა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
- confirm_user: "%{name}-მა დაამოწმა %{target} მომხმარებლის ელ-ფოსტის მისამართი"
- create_custom_emoji: "%{name}-მა ატვირთა ახალი ემოჯი %{target}"
- create_domain_block: "%{name}-მა დაბლოკა დომენი %{target}"
- create_email_domain_block: "%{name}-მა შავ სიაში მოაქცია დომენი %{target}"
- demote_user: "%{name}-მა დააქვეითა მომხმარებელი %{target}"
- destroy_domain_block: "%{name}-მა ბლოკი მოხსნა დომენს %{target}"
- destroy_email_domain_block: "%{name} თეთრ სიაში მოაქცია დომენი %{target}"
- destroy_status: "%{name}-მა გააუქმა სტატუსი %{target}-ზე"
- disable_2fa_user: "%{name} გათიშა მეორე ფაქტორის მოთხოვნილება მომხმარებელზე %{target}"
- disable_custom_emoji: "%{name}-მა გათისა ემოჯი %{target}"
- disable_user: "%{name}-მა გათიშა ლოგინი მომხმარებლისთვის %{target}"
- enable_custom_emoji: "%{name}-მა ჩართო ემოჯი %{target}"
- enable_user: "%{name}-მა ჩართო ლოგინი მომხმარებლისთვის %{target}"
- memorialize_account: "%{name}-მა აქცია ანგარიში %{target} მემორანდუმის გვერდად"
- promote_user: "%{name}-მა დააწინაურა მომხმარებელი %{target}"
- remove_avatar_user: "%{name}-მა გააუქმა %{target} მომხმარებლის ავატარი"
- reopen_report: "%{name}-მა ხელახლა გახსნა რეპორტი %{target}"
- reset_password_user: "%{name} გადატვირთა მომხმარებლის %{target} პაროლი"
- resolve_report: "%{name}-მა მოაგვარა %{target} მომხმარებლის რეპორტი"
- silence_account: "%{name}-მა გააჩუმა %{target} ანგარიში"
- suspend_account: "%{name} შეაჩერა %{target} ანგარიში"
- unassigned_report: "%{name}-მა მოაშორა რეპორტი %{target}"
- unsilence_account: "%{name}-მა მოაშორა გაჩუმება %{target} ანგარიშს"
- unsuspend_account: "%{name}-მა მოაშორა შეჩერება %{target} ანგარიშს"
- update_custom_emoji: "%{name}-მა განაახლა ემოჯი %{target}"
- update_status: "%{name}-მა განაახლა სტატუსი %{target}-ით"
deleted_status: "(გაუქმებული სტატუსი)"
title: აუდიტის ლოგი
custom_emojis:
@@ -783,7 +753,6 @@ ka:
tips: რჩევები
title: კეთილი იყოს თქვენი მობრძანება, %{name}!
users:
- invalid_email: ელ-ფოსტის მისამართი არაა მართებული
invalid_otp_token: არასწორი მეორე ფაქტორის კოდი
otp_lost_help_html: თუ დაკარგეთ წვდომა ორივეზე, შესაძლოა დაუკავშირდეთ %{email}-ს
seamless_external_login: შესული ხართ გარე სერვისით, აქედან გამომდინარე პაროლი და ელ-ფოსტის მისამართი არაა ხელმისაწვდომი.
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index af83d5fc6..7046fe8ec 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -7,7 +7,6 @@ kab:
active_count_after: d urmid
active_footnote: Imseqdacen yekkren s wayyur (MAU)
administered_by: 'Yettwadbel sɣur:'
- api: API
apps: Isnasen izirazen
apps_platforms: Seqdec Maṣṭudun deg iOS, Android d tɣeṛγṛin-nniḍen
browse_directory: Qelleb deg ukaram n imaɣnuten teǧǧeḍ-d gar-asen widak tebɣiḍ
@@ -63,7 +62,6 @@ kab:
other: Tijewwiqin
posts_tab_heading: Tijewwiqin
posts_with_replies: Tijewwaqin akked tririyin
- reserved_username: Isem-agi n umseqdac yettwaṭṭef yakan
roles:
admin: Anedbal
bot: Aṛubut
@@ -172,7 +170,6 @@ kab:
undo_silenced: Kkes asgugem
unsubscribe: Ur ṭafar ara
username: Isem n useqdac
- web: Web
whitelisted: Deg tebdert tamellalt
action_logs:
action_types:
@@ -187,40 +184,6 @@ kab:
reset_password_user: Ales awennez n wawal n uffir
silence_account: Sgugem amiḍan
update_domain_block: Leqqem iḥder n taɣult
- actions:
- assigned_to_self_report: "%{name} imudd aneqqis %{target} i yiman-nsen"
- change_email_user: "%{name} ibeddel imayl n umseqdac %{target}"
- confirm_user: "%{name} isentem tansa imayl n umseqdac %{target}"
- create_account_warning: "%{name} yuzen alɣu i %{target}"
- create_announcement: "%{name} yerna taselɣut tamaynut %{target}"
- create_custom_emoji: "%{name} yessuli-d imujiten imaynuten %{target}"
- create_domain_allow: "%{name} yerna taɣult %{target} ɣer tebdart tamellalt"
- create_domain_block: "%{name} yesseḥbes taɣult %{target}"
- create_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart taberkant"
- create_ip_block: "%{name} rnu alugen i IP %{target}"
- demote_user: "%{name} iṣubb-d deg usellun aseqdac %{target}"
- destroy_announcement: "%{name} yekkes taselɣut %{target}"
- destroy_custom_emoji: "%{name} ihudd imuji %{target}"
- destroy_domain_allow: "%{name} yekkes taɣult %{target} seg tebdart tamellalt"
- destroy_domain_block: "%{name} yekkes aseḥbes n taɣult %{target}"
- destroy_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart tamellalt"
- destroy_ip_block: "%{name} kkes alugen i IP %{target}"
- destroy_status: "%{name} yekkes tasuffeɣt n %{target}"
- disable_custom_emoji: "%{name} yessens imuji %{target}"
- disable_user: "%{name} yessens tuqqna i umseqdac %{target}"
- enable_custom_emoji: "%{name} yermed imuji %{target}"
- enable_user: "%{name} yermed tuqqna i umseqdac %{target}"
- memorialize_account: "%{name} yerra amiḍan n %{target} d asebter n usmekti"
- promote_user: "%{name} yerna deg usellun n useqdac %{target}"
- remove_avatar_user: "%{name} yekkes avaṭar n %{target}"
- reset_password_user: "%{name} iwennez awal uffir n useqdac %{target}"
- resolve_report: "%{name} yefra aneqqis %{target}"
- silence_account: "%{name} yesgugem amiḍan n %{target}"
- unsilence_account: "%{name} yekkes asgugem n umiḍan n %{target}"
- update_announcement: "%{name} ileqqem taselɣut %{target}"
- update_custom_emoji: "%{name} yelqem imuji %{target}"
- update_domain_block: "%{name} ileqqem iḥder n taɣult i %{target}"
- update_status: "%{name} yelqem tasuffeɣt n %{target}"
deleted_status: "(tasuffeɣt tettwakkes)"
empty: Ulac iɣmisen i yellan.
filter_by_user: Sizdeg s useqdac
@@ -416,9 +379,6 @@ kab:
title: Tisuffiγin n umiḍan
with_media: S taγwalt
tags:
- context: Asatal
- directory: Deg ukaram
- in_directory: "%{count} deg ukaram"
last_active: Armud aneggaru
most_popular: Ittwasnen aṭas
most_recent: Melmi kan
@@ -437,11 +397,9 @@ kab:
appearance:
discovery: Asnirem
localization:
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Yal yiwen·t y·tezmer a ttekki.
sensitive_content: Agbur amḥulfu
application_mailer:
- salutation: "%{name},"
view: 'Ẓaṛ:'
view_profile: Ssken-d amaɣnu
view_status: Ssken-d tasuffiɣt
@@ -461,9 +419,6 @@ kab:
logout: Ffeγ
migrate_account: Gujj γer umiḍan nniḍen
or_log_in_with: Neγ eqqen s
- providers:
- cas: CAS
- saml: SAML
register: Jerred
registration_closed: "%{instance} ur yeqbil ara imttekkiyen imaynuten"
reset_password: Wennez awal uffir
@@ -491,7 +446,6 @@ kab:
date:
formats:
default: "%d %b %Y"
- with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count}isr"
@@ -531,7 +485,6 @@ kab:
archive_takeout:
date: Azemz
size: Teγzi
- csv: CSV
lists: Tibdarin
mutes: Wid tesgugmeḍ
featured_tags:
@@ -625,11 +578,9 @@ kab:
number:
human:
decimal_units:
- format: "%n%u"
units:
billion: AṬ
million: A
- thousand: K
trillion: Am
otp_authentication:
enable: Rmed
@@ -639,7 +590,6 @@ kab:
next: Wayed
older: Aqbuṛ
prev: Win iɛeddan
- truncate: "…"
preferences:
other: Wiyaḍ
relationships:
@@ -667,37 +617,10 @@ kab:
activity: Armud aneggaru
browser: Iminig
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Iminig arusin
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
- uc_browser: UCBrowser
- weibo: Weibo
current_session: Tiγimit tamirant
description: "%{browser} s %{platform}"
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
- mac: macOS
- windows: Windows
- windows_mobile: Windows Mobile
windows_phone: Tiliγri Windows Phone
revoke: Ḥwi
title: Tiɣimiyin
@@ -743,7 +666,6 @@ kab:
show_more: Ssken-d ugar
show_thread: Ssken-d lxiḍ
sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni
- title: '%{name}: "%{quote}"'
visibilities:
private: Imeḍfaṛen kan
private_long: Ssken i ymeḍfaṛen kan
@@ -759,10 +681,6 @@ kab:
contrast: Maṣṭudun (agnil awriran)
default: Maṣṭudun (Aberkan)
mastodon-light: Maṣṭudun (Aceɛlal)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
add: Rnu
disable: Gdel
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 5f0da1888..34262650f 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -7,7 +7,6 @@ kk:
active_count_after: актив
active_footnote: Соңғы айдағы актив қолданушылар (MAU)
administered_by: 'Админ:'
- api: API
apps: Мобиль қосымшалар
apps_platforms: iOS, Android және басқа платформалардағы Mastodon қолданыңыз
browse_directory: Профильдер каталогын қажет фильтрлер арқылы қараңыз
@@ -74,7 +73,6 @@ kk:
other: Жазба
posts_tab_heading: Жазба
posts_with_replies: Жазбалар және жауаптар
- reserved_username: Мұндай логин тіркелген
roles:
admin: Админ
bot: Бот
@@ -193,39 +191,6 @@ kk:
web: Веб
whitelisted: Рұқсат тізімі
action_logs:
- actions:
- assigned_to_self_report: "%{name} шағым тастады %{target} өздері үшін"
- change_email_user: "%{name} e-mail адресін өзгертті - %{target}"
- confirm_user: "%{name} e-mail адресін құптады - %{target}"
- create_account_warning: "%{name} ескерту жіберді - %{target}"
- create_custom_emoji: "%{name} жаңа эмодзи қосты %{target}"
- create_domain_allow: "%{name} ақ тізімдегі домен %{target}"
- create_domain_block: "%{name} домен бұғаттады - %{target}"
- create_email_domain_block: "%{name} e-mail доменін қара тізімге қосты - %{target}"
- demote_user: "%{name} төмендетілген қолданушы - %{target}"
- destroy_custom_emoji: "%{name} эмодзи жойды %{target}"
- destroy_domain_allow: "%{name} домені %{target} ақ тізімнен шығарылды"
- destroy_domain_block: "%{name} бұғатталмаған домен %{target}"
- destroy_email_domain_block: "%{name} e-mail доменін ақ тізімге кіргізді %{target}"
- destroy_status: "%{name} жазбасын өшірді %{target}"
- disable_2fa_user: "%{name} қолданушы үшін екі фактор ажыратылған %{target}"
- disable_custom_emoji: "%{name} эмодзи алып тастады %{target}"
- disable_user: "%{name} қосылмаған логин %{target}"
- enable_custom_emoji: "%{name} қосылған эмодзи %{target}"
- enable_user: "%{name} қосылған логин %{target}"
- memorialize_account: "%{name} %{target} аккаунтын естеліктеріне қосты"
- promote_user: "%{name} жарнамалады %{target}"
- remove_avatar_user: "%{name} %{target} аватарын өшірді"
- reopen_report: "%{name} %{target} шағымын қайта қарады"
- reset_password_user: "%{name} %{target} құпиясөзін қалпына келтірді"
- resolve_report: "%{name} %{target} шағымын қарастырды"
- silence_account: "%{name} %{target} аккаунтын үнсіз қылды"
- suspend_account: "%{name} %{target} аккаунтын тоқтатты"
- unassigned_report: "%{name} бекітілмеген есеп %{target}"
- unsilence_account: "%{name} %{target} аккаунтын қайта қосты"
- unsuspend_account: "%{name} %{target} аккаунтын қайта қосты"
- update_custom_emoji: "%{name} эмодзи жаңартты %{target}"
- update_status: "%{name} жазбасын жаңартты %{target}"
deleted_status: "(өшірілген жазба)"
title: Аудит логы
announcements:
@@ -276,7 +241,6 @@ kk:
feature_profile_directory: Профиль каталогы
feature_registrations: Тіркелулер
feature_relay: Федерация релесі
- feature_spam_check: Анти-спам
feature_timeline_preview: Таймлайн превьюі
features: Мүмкіндіктер
hidden_service: Жасырын қызметтер федерациясы
@@ -451,8 +415,6 @@ kk:
users: Жергілікті қолданушыларға
domain_blocks_rationale:
title: Дәлелді көрсету
- enable_bootstrap_timeline_accounts:
- title: Жаңа қолданушылар жазылатын адамдарды белгілеу
hero:
desc_html: Бастапқы бетінде көрсетіледі. Кем дегенде 600x100px ұсынылады. Орнатылмаған кезде, сервердің нобайына оралады
title: Қаһарман суреті
@@ -503,9 +465,6 @@ kk:
desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML тег
title: Қолдану шарттары мен ережелер
site_title: Сервер аты
- spam_check_enabled:
- desc_html: Мастодон бірнеше рет қажетсіз хабарламаларды жіберетін есептік жазбаларды автоматты түрде жасай алады. Жалған позитивтер болуы мүмкін.
- title: Спамға қарсы автоматика
thumbnail:
desc_html: Used for previews via OpenGraph and API. 1200x630px рекоменделеді
title: Сервер суреті
@@ -540,9 +499,6 @@ kk:
accounts_today: Бүгін қолданылғандар
accounts_week: Осы аптада қолданылғандар
breakdown: Бүгінгі пайдалану көздері бойынша бөлу
- context: Контекст
- directory: Бөлім ішінде
- in_directory: "%{count} бөлім ішінде"
last_active: Соңғы белсенділік
most_popular: Ең танымал
most_recent: Ең соңғы
@@ -575,7 +531,6 @@ kk:
add_new: Алиас қосу
created_msg: Жаңа алиас сәтті жасалды. Енді сіз ескі аккаунттан көшіруді бастай аласыз.
deleted_msg: Алиасты сәтті алып тастаңыз. Осы есептік жазбадан екіншіге ауысу мүмкін болмайды.
- hint_html: If you want to move from another account to this one, here you can create an alias, which is required before you can proceed with moving followers from the old account to this one. This action by itself is harmless and reversible. The account migration is initiated from the old account.
remove: Алиас сілтемесін алып тастау
appearance:
advanced_web_interface: Кеңейтілген веб-интерфейс
@@ -587,7 +542,6 @@ kk:
toot_layout: Жазба формасы
application_mailer:
notification_preferences: Change e-mail prеferences
- salutation: "%{name},"
settings: 'Change e-mail preferеnces: %{link}'
view: 'Viеw:'
view_profile: Viеw Profile
@@ -835,26 +789,9 @@ kk:
missing_also_known_as: бұл тіркелгіге сілтеме жасамайды
move_to_self: ағымдағы шот болуы мүмкін емес
not_found: табылмады
- on_cooldown: You are on cooldown
followers_count: Көшу кезіндегі оқырмандар
- incoming_migrations: Moving from a different account
- incoming_migrations_html: To move from another account to this one, first you need to create an account alias.
- moved_msg: Your account is now redirecting to %{acct} and your followers are being moved over.
- not_redirecting: Your account is not redirecting to any other account currently.
- on_cooldown: You have recently migrated your account. This function will become available again in %{count} days.
- past_migrations: Past migrations
- proceed_with_move: Move followers
- redirecting_to: Your account is redirecting to %{acct}.
- set_redirect: Set redirect
warning:
- backreference_required: The new account must first be configured to back-reference this one
before: 'Жұмысты бастамас бұрын, осы жазбаларды мұқият оқып шығыңыз:'
- cooldown: After moving there is a cooldown period during which you will not be able to move again
- disabled_account: Your current account will not be fully usable afterwards. However, you will have access to data export as well as re-activation.
- followers: This action will move all followers from the current account to the new account
- only_redirect_html: Alternatively, you can only put up a redirect on your profile.
- other_data: No other data will be moved automatically
- redirect: Your current account's profile will be updated with a redirect notice and be excluded from searches
moderation:
title: Модерация
notification_mailer:
@@ -898,11 +835,9 @@ kk:
number:
human:
decimal_units:
- format: "%n%u"
units:
billion: В
million: М
- quadrillion: Q
thousand: К
trillion: Т
pagination:
@@ -910,7 +845,6 @@ kk:
next: Келесі
older: Ерте
prev: Алдыңғы
- truncate: "…"
polls:
errors:
already_voted: Бұл сауалнамаға қатысқансыз
@@ -1028,8 +962,6 @@ kk:
profile: Профиль
relationships: Жазылымдар және оқырмандар
two_factor_authentication: Екі-факторлы авторизация
- spam_check:
- spam_detected: Бұл автоматтандырылған есеп. Спам анықталды.
statuses:
attached:
description: 'Жүктелді: %{attached}'
@@ -1063,7 +995,6 @@ kk:
show_more: Тағы әкел
show_thread: Тақырыпты көрсет
sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз
- title: '%{name}: "%{quote}"'
visibilities:
private: Тек оқырмандарға
private_long: Тек оқырмандарға ғана көрінеді
@@ -1164,10 +1095,6 @@ kk:
contrast: Mastodon (Жоғары контраст)
default: Mastodon (Қою)
mastodon-light: Mastodon (Ашық)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
disable: Ажырату
enabled: Екі-факторлы авторизация қосылған
@@ -1219,7 +1146,6 @@ kk:
title: Ортаға қош келдің, %{name}!
users:
follow_limit_reached: Сіз %{limit} лимитінен көп адамға жазыла алмайсыз
- invalid_email: Бұл e-mail адрес қате
invalid_otp_token: Қате екі-факторлы код
otp_lost_help_html: Егер кіру жолдарын жоғалтып алсаңыз, сізге %{email} арқылы жіберіледі
seamless_external_login: Сыртқы сервис арқылы кіріпсіз, сондықтан құпиясөз және электрондық пошта параметрлері қол жетімді емес.
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 042660432..d23133198 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1,7 +1,7 @@
---
ko:
about:
- about_hashtag_html: "#%{hashtag} 해시태그가 붙은 공개 툿 입니다. 같은 연합에 속한 임의의 인스턴스에 계정을 생성하면 당신도 대화에 참여할 수 있습니다."
+ about_hashtag_html: "#%{hashtag} 해시태그가 붙은 공개 게시물입니다. 같은 연합에 속한 임의의 인스턴스에 계정을 생성하면 당신도 대화에 참여할 수 있습니다."
about_mastodon_html: 마스토돈은 오픈 소스 기반의 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 소셜 네트워크에 참가할 수 있습니다.
about_this: 이 인스턴스에 대해서
active_count_after: 활성 사용자
@@ -26,12 +26,14 @@ ko:
이것은 페더레이션을 목적으로 사용 되며 인스턴스 전체를 차단하려 하지 않는 이상 차단하지 않아야 합니다, 그 경우에는 도메인 차단을 사용하세요.
learn_more: 자세히
privacy_policy: 개인정보 정책
+ rules: 서버 규칙
+ rules_html: '아래의 글은 이 마스토돈 서버에 계정이 있다면 따라야 할 규칙의 요약입니다:'
see_whats_happening: 무슨 일이 일어나는 지 보기
server_stats: '서버 통계:'
source_code: 소스 코드
status_count_after:
- other: 툿
- status_count_before: 툿 수
+ other: 개
+ status_count_before: 게시물 수
tagline: 친구들을 팔로우 하고 새로운 사람들도 만나기
terms: 이용약관
unavailable_content: 이용 불가능한 컨텐츠
@@ -44,7 +46,7 @@ ko:
silenced_title: 침묵 된 서버들
suspended: 이 서버의 아무도 팔로우 할 수 없으며, 어떤 데이터도 처리되거나 저장 되지 않고 데이터가 교환 되지도 않습니다.
suspended_title: 금지된 서버들
- unavailable_content_html: 마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.
+ unavailable_content_html: 마스토돈은 일반적으로 별무리에 있는 어떤 서버의 유저와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.
user_count_after:
other: 명
user_count_before: 사용자 수
@@ -71,10 +73,9 @@ ko:
pin_errors:
following: 추천하려는 사람을 팔로우 하고 있어야 합니다
posts:
- other: 툿
- posts_tab_heading: 툿
- posts_with_replies: 툿과 답장
- reserved_username: 이 아이디는 예약되어 있습니다
+ other: 게시물
+ posts_tab_heading: 게시물
+ posts_with_replies: 게시물과 답장
roles:
admin: 관리자
bot: 봇
@@ -194,7 +195,7 @@ ko:
targeted_reports: 이 계정에 대한 신고
silence: 침묵
silenced: 침묵 됨
- statuses: 툿 수
+ statuses: 게시물 수
subscribe: 구독하기
suspended: 정지 됨
suspension_irreversible: 이 계정의 데이터는 복구할 수 없도록 삭제 됩니다. 계정을 정지 해제함으로서 계정을 다시 사용 가능하게 할 수 있지만 이전에 삭제한 어떤 데이터도 복구되지 않습니다.
@@ -225,6 +226,7 @@ ko:
create_domain_block: 도메인 차단 추가
create_email_domain_block: 이메일 도메인 차단 생성
create_ip_block: IP 규칙 만들기
+ create_unavailable_domain: 사용 불가능한 도메인 생성
demote_user: 사용자 강등
destroy_announcement: 공지사항 삭제
destroy_custom_emoji: 커스텀 에모지 삭제
@@ -233,6 +235,7 @@ ko:
destroy_email_domain_block: 이메일 도메인 차단 삭제
destroy_ip_block: IP 규칙 삭제
destroy_status: 게시물 삭제
+ destroy_unavailable_domain: 사용 불가능한 도메인 제거
disable_2fa_user: 2단계 인증 비활성화
disable_custom_emoji: 커스텀 에모지 비활성화
disable_user: 사용자 비활성화
@@ -256,47 +259,49 @@ ko:
update_domain_block: 도메인 차단 갱신
update_status: 게시물 게시
actions:
- assigned_to_self_report: "%{name}이 리포트 %{target}을 자신에게 할당했습니다"
- change_email_user: "%{name}이 %{target}의 이메일 주소를 변경했습니다"
- confirm_user: "%{name}이 %{target}의 이메일 주소를 컨펌했습니다"
- create_account_warning: "%{name}가 %{target}에게 경고 보냄"
- create_announcement: "%{name} 님이 새 공지 %{target}을 만들었습니다"
- create_custom_emoji: "%{name}이 새로운 에모지 %{target}를 추가했습니다"
- create_domain_allow: "%{name} 님이 %{target} 도메인을 허용리스트에 넣었습니다"
- create_domain_block: "%{name}이 도메인 %{target}를 차단했습니다"
- create_email_domain_block: "%{name}이 이메일 도메인 %{target}를 차단했습니다"
- create_ip_block: "%{name} 님이 IP 규칙 %{target}을 만들었습니다"
- demote_user: "%{name}이 %{target}을 강등했습니다"
- destroy_announcement: "%{name} 님이 공지 %{target}을 삭제했습니다"
- destroy_custom_emoji: "%{name}이 %{target} 에모지를 삭제함"
- destroy_domain_allow: "%{name} 님이 %{target} 도메인을 허용리스트에서 제거하였습니다"
- destroy_domain_block: "%{name}이 도메인 %{target}의 차단을 해제했습니다"
- destroy_email_domain_block: "%{name}이 이메일 도메인 %{target}을 허용리스트에 넣었습니다"
- destroy_ip_block: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다"
- destroy_status: "%{name}이 %{target}의 툿을 삭제했습니다"
- disable_2fa_user: "%{name}이 %{target}의 2FA를 비활성화 했습니다"
- disable_custom_emoji: "%{name}이 에모지 %{target}를 비활성화 했습니다"
- disable_user: "%{name}이 %{target}의 로그인을 비활성화 했습니다"
- enable_custom_emoji: "%{name}이 에모지 %{target}를 활성화 했습니다"
- enable_user: "%{name}이 %{target}의 로그인을 활성화 했습니다"
- memorialize_account: "%{name}이 %{target}의 계정을 메모리엄으로 전환했습니다"
- promote_user: "%{name}이 %{target}를 승급시켰습니다"
- remove_avatar_user: "%{name}이 %{target}의 아바타를 지웠습니다"
- reopen_report: "%{name}이 리포트 %{target}을 다시 열었습니다"
- reset_password_user: "%{name}이 %{target}의 암호를 초기화했습니다"
- resolve_report: "%{name}이 %{target} 신고를 처리됨으로 변경하였습니다"
- sensitive_account: "%{name} 님이 %{target}의 미디어를 민감함으로 표시했습니다"
- silence_account: "%{name}이 %{target}의 계정을 침묵시켰습니다"
- suspend_account: "%{name}이 %{target}의 계정을 정지시켰습니다"
- unassigned_report: "%{name}이 리포트 %{target}을 할당 해제했습니다"
- unsensitive_account: "%{name} 님이 %{target}의 미디어를 민감하지 않음으로 표시했습니다"
- unsilence_account: "%{name}이 %{target}에 대한 침묵을 해제했습니다"
- unsuspend_account: "%{name}이 %{target}에 대한 정지를 해제했습니다"
- update_announcement: "%{name} 님이 공지 %{target}을 갱신했습니다"
- update_custom_emoji: "%{name}이 에모지 %{target}를 업데이트 했습니다"
- update_domain_block: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다"
- update_status: "%{name}이 %{target}의 상태를 업데이트 했습니다"
- deleted_status: "(삭제됨)"
+ assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다"
+ change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다"
+ confirm_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 승인했습니다"
+ create_account_warning_html: "%{name} 님이 %{target}에게 경고를 보냈습니다"
+ create_announcement_html: "%{name} 님이 새 공지 %{target}을 만들었습니다"
+ create_custom_emoji_html: "%{name} 님이 새로운 에모지 %{target}를 업로드 했습니다"
+ create_domain_allow_html: "%{name} 님이 %{target} 도메인을 허용리스트에 넣었습니다"
+ create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다"
+ create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다"
+ create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다"
+ create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지"
+ demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다"
+ destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다"
+ destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다"
+ destroy_domain_allow_html: "%{name} 님이 %{target} 도메인과의 연합을 금지했습니다"
+ destroy_domain_block_html: "%{name} 님이 도메인 %{target}의 차단을 해제했습니다"
+ destroy_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}을 차단 해제하였습니다"
+ destroy_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 삭제하였습니다"
+ destroy_status_html: "%{name} 님이 %{target}의 게시물을 삭제했습니다"
+ destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개"
+ disable_2fa_user_html: "%{name} 님이 사용자 %{target}의 2FA를 비활성화 했습니다"
+ disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화 했습니다"
+ disable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 비활성화 했습니다"
+ enable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 활성화 했습니다"
+ enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화 했습니다"
+ memorialize_account_html: "%{name} 님이 %{target}의 계정을 기념비 페이지로 전환했습니다"
+ promote_user_html: "%{name} 님이 사용자 %{target}를 승급시켰습니다"
+ remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다"
+ reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다"
+ reset_password_user_html: "%{name} 님이 사용자 %{target}의 암호를 초기화했습니다"
+ resolve_report_html: "%{name} 님이 신고 %{target}를 처리됨으로 변경하였습니다"
+ sensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감함으로 표시했습니다"
+ silence_account_html: "%{name} 님이 %{target}의 계정을 침묵시켰습니다"
+ suspend_account_html: "%{name} 님이 %{target}의 계정을 정지시켰습니다"
+ unassigned_report_html: "%{name} 님이 신고 %{target}을 할당 해제했습니다"
+ unsensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감하지 않음으로 표시했습니다"
+ unsilence_account_html: "%{name} 님이 %{target}의 계정에 대한 침묵을 해제했습니다"
+ unsuspend_account_html: "%{name} 님이 %{target}의 계정에 대한 정지를 해제했습니다"
+ update_announcement_html: "%{name} 님이 공지사항 %{target}을 갱신했습니다"
+ update_custom_emoji_html: "%{name} 님이 에모지 %{target}를 업데이트 했습니다"
+ update_domain_block_html: "%{name} 님이 %{target}에 대한 도메인 차단을 갱신했습니다"
+ update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트 했습니다"
+ deleted_status: "(삭제된 게시물)"
empty: 로그를 찾을 수 없습니다
filter_by_action: 행동으로 거르기
filter_by_user: 유저로 거르기
@@ -310,10 +315,12 @@ ko:
new:
create: 공지사항 생성
title: 새 공지사항
+ publish: 게시
published_msg: 공지가 성공적으로 발행되었습니다!
scheduled_for: "%{time}에 예약됨"
scheduled_msg: 공지의 발행이 예약되었습니다!
title: 공지사항
+ unpublish: 게시 취소
unpublished_msg: 공지가 성공적으로 발행 취소되었습니다!
updated_msg: 공지가 성공적으로 업데이트되었습니다!
custom_emojis:
@@ -358,7 +365,6 @@ ko:
feature_profile_directory: 프로필 책자
feature_registrations: 가입
feature_relay: 연합 릴레이
- feature_spam_check: 안티 스팸
feature_timeline_preview: 타임라인 미리보기
features: 기능
hidden_service: 히든 서비스와의 연합
@@ -437,9 +443,33 @@ ko:
create: 차단 규칙 생성
title: 새 이메일 도메인 차단
title: Email 도메인 차단
+ follow_recommendations:
+ description_html: "팔로우 추천은 새 사용자들이 관심 가는 콘텐트를 빠르게 찾을 수 있도록 도와줍니다. 사용자가 개인화 된 팔로우 추천이 만들어지기 위한 충분한 상호작용을 하지 않은 경우, 이 계정들이 대신 추천 됩니다. 이들은 해당 언어에 대해 많은 관심을 갖거나 많은 로컬 팔로워를 가지고 있는 계정들을 섞어서 날마다 다시 계산 됩니다."
+ language: 할당할 언어
+ status: 게시물
+ suppress: 팔로우 추천 숨기기
+ suppressed: 숨겨짐
+ title: 팔로우 추천
+ unsuppress: 팔로우 추천 복원
instances:
+ back_to_all: 전체
+ back_to_limited: 제한됨
+ back_to_warning: 경고
by_domain: 도메인
+ delivery:
+ all: 전체
+ clear: 전달 에러 초기화
+ restart: 전달 재시작
+ stop: 전달 중지
+ title: 전달
+ unavailable: 사용불가
+ unavailable_message: 전달 불가
+ warning: 경고
+ warning_message:
+ other: 전달 실패 %{count}일
delivery_available: 전송 가능
+ delivery_error_days: 전달 에러가 난 날짜들
+ delivery_error_hint: 만약 %{count}일동안 전달이 불가능하다면, 자동으로 전달불가로 표시됩니다.
empty: 도메인이 하나도 없습니다.
known_accounts:
other: 알려진 계정 %{count}개
@@ -485,11 +515,11 @@ ko:
relays:
add_new: 릴레이 추가
delete: 삭제
- description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 툿을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 연합우주를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다."
+ description_html: "연합 릴레이는 서버들 사이에서 많은 양의 공개 게시물을 구독하고 중개하는 서버입니다. 이것은 중소 규모의 서버에서 별무리를 발견하는 데에 도움을 줄 수 있습니다, 이제 로컬 유저들이 다른 서버의 유저들을 수동으로 팔로우 하지 않아도 됩니다."
disable: 비활성화
disabled: 비활성화 됨
enable: 활성화
- enable_hint: 활성화 되면, 이 릴레이의 모든 공개 툿을 구독하고 이 서버의 공개 툿을 전송하게 됩니다.
+ enable_hint: 활성화 되면, 이 릴레이의 모든 공개 게시물을 구독하고 이 서버의 공개 툿을 전송하게 됩니다.
enabled: 활성화 됨
inbox_url: 릴레이 URL
pending: 릴레이의 승인 대기중
@@ -536,13 +566,20 @@ ko:
unassign: 할당 해제
unresolved: 미해결
updated_at: 업데이트 시각
+ rules:
+ add_new: 규칙 추가
+ delete: 삭제
+ description_html: 대부분의 경우 사람들이 이용약관을 반드시 읽고 동의하도록 하지만, 보통의 사람들은 문제가 일어나기 전까지는 읽지 않습니다. 여러분의 서버 규칙을 목록으로 정리해서 한 번에 읽기 쉽게 만드세요. 규칙 각각을 짧고 단순하게 만들고, 하나를 여러 개로 쪼개지도 마세요.
+ edit: 규칙 수정
+ empty: 아직 정의된 서버 규칙이 없습니다.
+ title: 서버 규칙
settings:
activity_api_enabled:
desc_html: 주별 로컬에 게시 된 글, 활성 사용자 및 새로운 가입자 수
title: 유저 활동에 대한 통계 발행
bootstrap_timeline_accounts:
- desc_html: 콤마로 여러 유저명을 구분. 로컬의 잠기지 않은 계정만 가능합니다. 비워 둘 경우 모든 로컬 관리자가 기본으로 사용 됩니다.
- title: 새 유저가 팔로우 할 계정들
+ desc_html: 콤마로 여러 유저명을 구분. 이 계정들은 팔로우 추천에 반드시 나타나게 됩니다
+ title: 새로운 사용자들에게 추천할 계정들
contact_information:
email: 공개할 메일 주소를 입력
username: 연락 받을 관리자 유저네임
@@ -559,9 +596,6 @@ ko:
users: 로그인 한 유저에게
domain_blocks_rationale:
title: 사유 보여주기
- enable_bootstrap_timeline_accounts:
- desc_html: 새 사용자들이 자동으로 설정 된 계정들을 팔로우 하도록 해서 그들의 홈 피드가 빈 상태로 시작하지 않도록 합니다
- title: 새 유저가 팔로우할 계정을 보여주기
hero:
desc_html: 프론트페이지에 표시 됩니다. 최소 600x100픽셀을 권장합니다. 만약 설정되지 않았다면, 서버의 썸네일이 사용 됩니다
title: 히어로 이미지
@@ -615,9 +649,6 @@ ko:
desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. HTML태그를 사용할 수 있습니다
title: 커스텀 서비스 이용 약관
site_title: 서버 이름
- spam_check_enabled:
- desc_html: 마스토돈은 반복된 메시지 등의 측정값에 따라 자동으로 계정을 침묵, 신고할 수 있습니다. 위양성(False-positive)이 존재할 수 있습니다.
- title: 안티 스팸
thumbnail:
desc_html: OpenGraph와 API의 미리보기로 사용 됩니다. 1200x630px을 권장합니다
title: 서버 썸네일
@@ -645,19 +676,24 @@ ko:
media:
title: 미디어
no_media: 미디어 없음
- no_status_selected: 아무 것도 선택 되지 않아 아무 것도 바뀌지 않았습니다
- title: 계정 툿
+ no_status_selected: 아무 게시물도 선택 되지 않아 아무 것도 바뀌지 않았습니다
+ title: 계정 게시물
with_media: 미디어 있음
+ system_checks:
+ database_schema_check:
+ message_html: 데이터베이스 마이그레이션이 대기중입니다. 응용프로그램이 예상한대로 동작할 수 있도록 마이그레이션을 실행해 주세요
+ rules_check:
+ action: 서버 규칙 관리
+ message_html: 아직 서버규칙을 정하지 않았습니다.
+ sidekiq_process_check:
+ message_html: "%{value} 큐에 대한 사이드킥 프로세스가 발견되지 않았습니다. 사이드킥 설정을 검토해주세요"
tags:
accounts_today: 오늘의 순 사용자
accounts_week: 금주의 순 사용자
breakdown: 소스별 오늘의 사용량 분석
- context: 문맥
- directory: 책자에 있음
- in_directory: 디렉토리에 %{count}개 있음
- last_active: 최근 활동
+ last_active: 최근에 사용됨
most_popular: 최고 인기
- most_recent: 최신
+ most_recent: 최근에 추가됨
name: 해시태그
review: 심사 상태
reviewed: 심사 됨
@@ -671,6 +707,7 @@ ko:
add_new: 새로 추가
delete: 삭제
edit_preset: 경고 틀 수정
+ empty: 아직 어떤 경고 틀도 정의되지 않았습니다.
title: 경고 틀 관리
admin_mailer:
new_pending_account:
@@ -701,7 +738,7 @@ ko:
guide_link: https://crowdin.com/project/mastodon
guide_link_text: 누구나 기여할 수 있습니다.
sensitive_content: 민감한 내용
- toot_layout: 툿 레이아웃
+ toot_layout: 게시물 레이아웃
application_mailer:
notification_preferences: 메일 설정 변경
salutation: "%{name} 님,"
@@ -785,7 +822,7 @@ ko:
date:
formats:
default: "%Y-%b-%d"
- with_month_name: "%Y-%B-%d"
+ with_month_name: "%Y년 %B %d일"
datetime:
distance_in_words:
about_x_hours: "%{count}시간"
@@ -845,7 +882,7 @@ ko:
archive_takeout:
date: 날짜
download: 아카이브 다운로드
- hint_html: 당신의 툿과 업로드 된 미디어의 아카이브를 요청할 수 있습니다. 내보내지는 데이터는 ActivityPub 포맷입니다. 호환 되는 모든 소프트웨어에서 읽을 수 있습니다. 7일마다 새로운 아카이브를 요청할 수 있습니다.
+ hint_html: 당신의 게시물과 업로드 된 미디어의 아카이브를 요청할 수 있습니다. 내보내지는 데이터는 ActivityPub 포맷입니다. 호환 되는 모든 소프트웨어에서 읽을 수 있습니다. 7일마다 새로운 아카이브를 요청할 수 있습니다.
in_progress: 당신의 아카이브를 컴파일 중입니다…
request: 아카이브 요청하기
size: 크기
@@ -1011,8 +1048,8 @@ ko:
other: "%{count}건의 새로운 알림 \U0001F418"
title: 당신이 없는 동안에...
favourite:
- body: "%{name} 님이 내 툿을 즐겨찾기에 등록했습니다:"
- subject: "%{name} 님이 내 툿을 즐겨찾기에 등록했습니다"
+ body: "%{name} 님이 내 게시물을 즐겨찾기에 등록했습니다:"
+ subject: "%{name} 님이 내 게시물을 즐겨찾기에 등록했습니다"
title: 새 즐겨찾기
follow:
body: "%{name} 님이 나를 팔로우 했습니다!"
@@ -1028,10 +1065,14 @@ ko:
body: "%{name} 님이 답장을 보냈습니다:"
subject: "%{name} 님이 답장을 보냈습니다"
title: 새 멘션
+ poll:
+ subject: "%{name}의 투표가 종료되었습니다"
reblog:
- body: "%{name} 님이 내 툿을 부스트 했습니다:"
- subject: "%{name} 님이 내 툿을 부스트 했습니다"
+ body: "%{name} 님이 내 게시물을 부스트 했습니다:"
+ subject: "%{name} 님이 내 게시물을 부스트 했습니다"
title: 새 부스트
+ status:
+ subject: "%{name} 님이 방금 게시물을 올렸습니다"
notifications:
email_events: 이메일 알림에 대한 이벤트
email_events_hint: '알림 받을 이벤트를 선택해주세요:'
@@ -1055,9 +1096,9 @@ ko:
setup: 설정
wrong_code: 코드가 올바르지 않습니다! 서버와 휴대전화 간의 시각이 일치하나요?
pagination:
- newer: 새로운 툿
+ newer: 최근
next: 다음
- older: 오래된 툿
+ older: 이전
prev: 이전
truncate: "…"
polls:
@@ -1106,55 +1147,55 @@ ko:
remote_interaction:
favourite:
proceed: 즐겨찾기 진행
- prompt: '이 툿을 즐겨찾기 하려고 합니다:'
+ prompt: '이 게시물을 즐겨찾기 하려고 합니다:'
reblog:
proceed: 부스트 진행
- prompt: '이 툿을 부스트 하려 합니다:'
+ prompt: '이 게시물을 부스트 하려 합니다:'
reply:
proceed: 답장 진행
- prompt: '이 툿에 답장을 하려 합니다:'
+ prompt: '이 게시물에 답장을 하려 합니다:'
scheduled_statuses:
- over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 툿 제한을 초과합니다
- over_total_limit: 예약 툿 제한 %{limit}을 초과합니다
+ over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 게시물 제한을 초과합니다
+ over_total_limit: 예약 게시물 제한 %{limit}을 초과합니다
too_soon: 예약 날짜는 미래여야 합니다
sessions:
activity: 마지막 활동
browser: 브라우저
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
+ alipay: 알리페이
+ blackberry: 블랙베리
+ chrome: 크롬
+ edge: 마이크로소프트 엣지
+ electron: 일렉트론
+ firefox: 파이어폭스
generic: 알 수 없는 브라우저
- ie: Internet Explorer
- micro_messenger: MicroMessenger
+ ie: 인터넷 익스플로러
+ micro_messenger: 마이크로메신저
nokia: Nokia S40 Ovi 브라우저
- opera: Opera
+ opera: 오페라
otter: Otter
- phantom_js: PhantomJS
+ phantom_js: 팬텀JS
qq: QQ 브라우저
- safari: Safari
+ safari: 사파리
uc_browser: UC브라우저
- weibo: Weibo
+ weibo: 웨이보
current_session: 현재 세션
description: "%{platform}의 %{browser}"
explanation: 내 마스토돈 계정에 현재 로그인 중인 웹 브라우저 목록입니다.
ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
+ adobe_air: 어도비 Air
+ android: 안드로이드
+ blackberry: 블랙베리
+ chrome_os: 크롬OS
+ firefox_os: 파이어폭스OS
ios: iOS
- linux: Linux
- mac: macOS
+ linux: 리눅스
+ mac: 맥OS
other: 알 수 없는 플랫폼
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
+ windows: 윈도우즈
+ windows_mobile: 윈도우즈 모바일
+ windows_phone: 윈도우즈 폰
revoke: 삭제
revoke_success: 세션이 성공적으로 삭제되었습니다
title: 세션
@@ -1180,8 +1221,6 @@ ko:
relationships: 팔로잉과 팔로워
two_factor_authentication: 2단계 인증
webauthn_authentication: 보안 키
- spam_check:
- spam_detected: 이것은 자동화 된 신고입니다. 스팸이 감지되었습니다.
statuses:
attached:
audio:
@@ -1201,9 +1240,9 @@ ko:
open_in_web: Web으로 열기
over_character_limit: 최대 %{max}자까지 입력할 수 있습니다
pin_errors:
- limit: 이미 너무 많은 툿을 고정했습니다
- ownership: 다른 사람의 툿은 고정될 수 없습니다
- private: 비공개 툿은 고정될 수 없습니다
+ limit: 이미 너무 많은 게시물을 고정했습니다
+ ownership: 다른 사람의 게시물은 고정될 수 없습니다
+ private: 비공개 게시물은 고정될 수 없습니다
reblog: 부스트는 고정될 수 없습니다
poll:
total_people:
@@ -1218,6 +1257,7 @@ ko:
sign_in_to_participate: 로그인 하여 이 대화에 참여하기
title: '%{name}: "%{quote}"'
visibilities:
+ direct: 다이렉트
private: 비공개
private_long: 팔로워에게만 공개됩니다
public: 공개
@@ -1225,7 +1265,7 @@ ko:
unlisted: 공개 타임라인 비공개
unlisted_long: 누구나 볼 수 있지만, 공개 타임라인에는 표시되지 않습니다
stream_entries:
- pinned: 고정된 툿
+ pinned: 고정된 게시물
reblogged: 님이 부스트 했습니다
sensitive_content: 민감한 컨텐츠
tags:
@@ -1351,7 +1391,7 @@ ko:
explanation:
disable: 당신의 계정이 동결 된 동안 당신의 계정은 유지 됩니다. 하지만 잠금이 풀릴 때까지 당신은 아무 것도 할 수 없습니다.
sensitive: 당신의 업로드 한 미디어 파일들과 링크된 미디어들은 민감함으로 취급됩니다.
- silence: 당신의 계정이 제한 된 동안엔 당신의 팔로워 이외엔 툿을 받아 볼 수 없고 공개 리스팅에서 제외 됩니다. 하지만 다른 사람들은 여전히 당신을 팔로우 가능합니다.
+ silence: 당신의 계정이 제한 된 동안엔 당신의 팔로워 이외엔 게시물을 받아 볼 수 없고 공개 리스팅에서 제외 됩니다. 하지만 다른 사람들은 여전히 당신을 팔로우 가능합니다.
suspend: 당신의 계정은 정지 되었으며, 모든 툿과 업로드 한 미디어가 서버에서 삭제 되어 되돌릴 수 없습니다.
get_in_touch: 이 메일에 대해 답장해서 %{instance}의 스태프와 연락 할 수 있습니다.
review_server_policies: 서버 정책 검토하기
@@ -1386,11 +1426,8 @@ ko:
tips: 팁
title: 환영합니다 %{name} 님!
users:
- blocked_email_provider: 허용된 이메일 제공자가 아닙니다
follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다
generic_access_help_html: 계정 로그인에 문제가 있나요? %{email} 로 도움을 요청할 수 있습니다
- invalid_email: 메일 주소가 올바르지 않습니다
- invalid_email_mx: 이메일 주소가 존재하지 않는 것 같습니다
invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다
invalid_sign_in_token: 잘못된 보안 코드
otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
index 0d76e1b97..d421b42a7 100644
--- a/config/locales/ku.yml
+++ b/config/locales/ku.yml
@@ -7,7 +7,6 @@ ku:
active_count_after: چالاک
active_footnote: بەکارهێنەرانی چالاکی مانگانە (MAU)
administered_by: 'بەڕێوەبراو لەلایەن:'
- api: API
apps: ئەپەکانی مۆبایل
apps_platforms: بەکارهێنانی ماستۆدۆن لە iOS، ئەندرۆید و سەکۆکانی تر
browse_directory: گەڕان لە ڕێبەرێکی پرۆفایل و پاڵاوتن بەپێی بەرژەوەندیەکان
@@ -77,7 +76,6 @@ ku:
other: تووتەکان
posts_tab_heading: تووتەکان
posts_with_replies: تووتەکان و وڵامەکان
- reserved_username: ناوی بەکارهێنەر پارێزراوە
roles:
admin: بەڕێوەبەر
bot: بۆت
@@ -256,46 +254,6 @@ ku:
update_announcement: بەڕۆژکردنەوەی راگەیەندراو
update_custom_emoji: بەڕۆژکردنی ئێمۆمۆجی دڵخواز
update_status: بەڕۆژکردنی دۆخ
- actions:
- assigned_to_self_report: "%{name} پێداچوونەوە بە گوزارشتی %{target} لە ئەستۆ گرتووە"
- change_email_user: "%{name} ناونیشانی ئیمەیلی بەکارهینەری %{target} گۆڕا"
- confirm_user: "%{name} ناونیشانی ئیمەیلی بەکارهینەری %{target} پەسەند کرد"
- create_account_warning: "%{name} ئاگاداریێک بۆ %{target} نارد"
- create_announcement: "%{name} ئاگاداری نوێی دروستکرد %{target}"
- create_custom_emoji: "%{name} ئیمۆجی نوێی %{target} بارکرد"
- create_domain_allow: "%{name} دۆمەینی %{target} ڕێپێدا"
- create_domain_block: "%{name} دۆمەنی %{target} بلۆککرد"
- create_email_domain_block: "%{name} دۆمەینی ئیمەیلی %{target} بلۆککرد"
- create_ip_block: "%{name} یاسای دروستکراو بۆ ئایپی %{target}"
- demote_user: "%{name} ئاستی بەکارهێنەری %{target} دابەزاند"
- destroy_announcement: "%{name} ئاگاداری %{target} سڕیەوە"
- destroy_custom_emoji: "%{name} ئیمۆجی %{target} لە ناوبرد"
- destroy_domain_allow: "%{name} دۆمەنی%{target} لە پێرستی ڕێپێدراو لابرد"
- destroy_domain_block: "%{name} بەرگیری لە دۆمەینی %{target} لابرد"
- destroy_email_domain_block: "%{name} دۆمەینی ئیمەیلی %{target} خستە پێرستی ڕێپێدراو"
- destroy_ip_block: "%{name} یاسای سڕینەوە بۆ ئایپی %{target}"
- destroy_status: "%{name} نووسراوەی %{target} سڕیەوە"
- disable_2fa_user: "%{name} دوو مەرجی فاکتەر بۆ بەکارهێنەر %{target} لە کارخست"
- disable_custom_emoji: "%{name} ئیمۆجی %{target} ناچالاک کرد"
- disable_user: "%{name} چوونەژوورەوەی بەکارهێنەری %{target} لەکارخست"
- enable_custom_emoji: "%{name} ئیمۆجی %{target} چالاک کرد"
- enable_user: "%{name} چوونەژوورەوەی بەکارهێنەری %{target} چالککرد"
- memorialize_account: "%{name} هەژمارەی بەکارهێنەری %{target} گۆڕا بە پەڕەی یادەوەری"
- promote_user: "%{name} ئاستی بەکارهێنەری %{target} بەرزکردەوە"
- remove_avatar_user: "%{name} وێنۆچکەی بەکارهێنەری %{target} سڕیەوە"
- reopen_report: "%{name} گوزارشتی %{target} دووبارە وەگڕخستەوە"
- reset_password_user: "%{name} تێپەروشەی بەکارهێنەری %{target} گەڕانەوە"
- resolve_report: "%{name} گوزارشتی %{target} دووبارە وەگڕخستەوە"
- sensitive_account: "%{name} بە %{target}'s میدیا وەک هەستیار دیاری کراوە"
- silence_account: "%{name} هەژماری %{target}'s بێدەنگ کرا"
- suspend_account: "%{name} هەژماری %{target}'ی ڕاگیرا"
- unassigned_report: "%{name} ڕاپۆرتی دیاری نەکراوی %{target}"
- unsensitive_account: "%{name} بە %{target}'s میدیا وەک هەستیار دیاری نەکراوە"
- unsilence_account: "%{name} هەژماری %{target}'s بێ دەنگ"
- unsuspend_account: "%{name} هەژماری %{target}'s هەڵنەپەسێردراو"
- update_announcement: "%{name} بەڕۆژکراوەی راگەیاندنی %{target}"
- update_custom_emoji: "%{name} ئیمۆجی %{target} نوێکرایەوە"
- update_status: "%{name} نووسراوەی %{target} بەڕۆژکرد"
deleted_status: "(نووسراوە سڕاوە)"
empty: هیچ لاگی کارنەدۆزرایەوە.
filter_by_action: فلتەر کردن بە کردار
@@ -358,7 +316,6 @@ ku:
feature_profile_directory: ڕێنیشاندەرێکی پرۆفایل
feature_registrations: تۆمارکراوەکان
feature_relay: گواستنەوەی گشتی
- feature_spam_check: دژە سپام
feature_timeline_preview: پێش نیشاندانی نووسراوەکان
features: تایبەتمەندیەکان
hidden_service: پەیوەندی نێوان ڕاژە یان خزمەتگوزاری نێننی
@@ -556,8 +513,6 @@ ku:
users: بۆ چوونە ژوورەوەی بەکارهێنەرانی ناوخۆ
domain_blocks_rationale:
title: پیشاندانی ڕێژەیی
- enable_bootstrap_timeline_accounts:
- title: چالاککردنی بەدواکەکانی گریمانەیی بۆ بەکارهێنەرە نوێکان
hero:
desc_html: نیشان درا لە پەڕەی سەرەتا. بەلایەنی کەمەوە 600x100px پێشنیارکراوە. کاتێک ڕێک نەکەویت، دەگەڕێتەوە بۆ وێنۆجکەی ڕاژە
title: وێنەی پاڵەوان
@@ -608,9 +563,6 @@ ku:
desc_html: دەتوانیت سیاسەتی تایبەتیێتی خۆت بنووسیت، مەرجەکانی خزمەتگوزاری یان یاسایی تر. دەتوانیت تاگەکانی HTML بەکاربێنیت
title: مەرجەکانی خزمەتگوزاری ئاسایی
site_title: ناوی ڕاژە
- spam_check_enabled:
- desc_html: ماستۆدۆن دەتوانێت هەژمارەکان خۆکارانە بێدەنگ یان گوزارشتیان بکا. زۆر جار بۆ ناسینی هەرزەپەیام و پەیامی نەخوازیاری دووپاتدەبێتەوە،جار و بار بە هەڵە دەردەچێت.
- title: دژە هەرزەنامە
thumbnail:
desc_html: بۆ پێشبینین بەکارهاتووە لە ڕێگەی OpenGraph وە API. ڕووناکی بینین ١٢٠٠x٦٣٠پیکسێڵ پێشنیارکراوە
title: وێنەی بچکۆلەی ڕاژە
@@ -645,9 +597,6 @@ ku:
accounts_today: بەکارهێنانی بێ هاوتای ئەمڕۆ
accounts_week: بەکارهێنەری یەکتا لەم هەفتەیە
breakdown: بەکارهێنانی ئەمڕۆ بە جوداکردنی سەرچاوە
- context: دەق
- directory: لە پێرست
- in_directory: "%{count} لە پێرست"
last_active: دوا چالاکی
most_popular: بەناوبانگترین
most_recent: تازەترین
@@ -691,13 +640,11 @@ ku:
discovery: دۆزینەوە
localization:
body: ماستۆدۆن لەلایەن خۆبەخشەوە وەردەگێڕێت.
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: هەموو کەسێک دەتوانێت بەشداری بکات.
sensitive_content: ناوەڕۆکی هەستیار
toot_layout: لۆی توت
application_mailer:
notification_preferences: گۆڕینی پەسەندکراوەکانی ئیمەیڵ
- salutation: "%{name},"
settings: 'گۆڕینی پەسەندکراوەکانی ئیمەیڵ: %{link}'
view: 'نیشاندان:'
view_profile: پرۆفایل نیشان بدە
@@ -732,9 +679,6 @@ ku:
migrate_account: گواستنەوە بۆ ئەژمێرێکی تر
migrate_account_html: ئەگەر دەتەوێت ئەم هەژمارە دووبارە ئاڕاستە بکەیت بۆ ئەژمێرێکی تر، دەتوانیت
Podètz utilizar de balisas HTML
title: Politica de confidencialitat del site
site_title: Títol del servidor
- spam_check_enabled:
- title: Anti-spam
thumbnail:
desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada
title: Miniatura del servidor
@@ -596,12 +557,13 @@ oc:
no_status_selected: Cap d’estatut pas cambiat estant que cap èra pas seleccionat
title: Estatuts del compte
with_media: Amb mèdia
+ system_checks:
+ rules_check:
+ action: Gerir las règlas servidor
+ message_html: Avètz pas definida cap de règla.
tags:
accounts_today: Utilizacions unicas uèi
accounts_week: Utilizacions unicas aquesta setmana
- context: Contèxt
- directory: A l’annuari
- in_directory: "%{count} a l’annuari"
last_active: Darrièra activitat
most_popular: Mai popularas
most_recent: Mai recentas
@@ -640,7 +602,6 @@ oc:
discovery: Descobèrta
localization:
body: Mastodon es traduch per de benevòls.
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Tot lo monde pòt contribuïr.
sensitive_content: Contengut sensible
toot_layout: Disposicion del tut
@@ -726,7 +687,6 @@ oc:
x_days: "%{count} jorns"
x_minutes: "%{count} min"
x_months: "%{count} meses"
- x_seconds: "%{count}s"
deletes:
challenge_not_passed: Las informacions qu’avètz fornidas son pas corrèctas
confirm_password: Picatz vòstre senhal actual per verificar vòstra identitat
@@ -949,12 +909,6 @@ oc:
human:
decimal_units:
format: "%n%u"
- units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
otp_authentication:
enable: Activar
setup: Parametrar
@@ -963,7 +917,6 @@ oc:
next: Seguent
older: Mai ancians
prev: Precedent
- truncate: "…"
polls:
errors:
already_voted: Avètz ja votat per aqueste sondatge
@@ -1083,8 +1036,6 @@ oc:
relationships: Abonaments e seguidors
two_factor_authentication: Autentificacion en dos temps
webauthn_authentication: Claus de seguretat
- spam_check:
- spam_detected: Aquò es un senhalament automatic. D’spam es estat detectat.
statuses:
attached:
audio:
@@ -1119,6 +1070,8 @@ oc:
other: "%{count} vòtes"
vote: Votar
show_more: Ne veire mai
+ show_newer: Veire mai recents
+ show_older: Veire mai ancians
show_thread: Mostrar lo fil
sign_in_to_participate: Inscrivètz-vos per participar a la conversacion
title: '%{name} : "%{quote}"'
@@ -1236,6 +1189,7 @@ oc:
enabled_success: L’autentificacion en dos temps es ben activada
generate_recovery_codes: Generar los còdis de recuperacion
lost_recovery_codes: Los còdi de recuperacion vos permeton d’accedir a vòstre compte se perdètz vòstre mobil. S’avètz perdut vòstres còdis de recuperacion los podètz tornar generar aquí. Los ancians còdis seràn pas mai valides.
+ methods: Metòde en dos temps
recovery_codes: Salvar los còdis de recuperacion
recovery_codes_regenerated: Los còdis de recuperacion son ben estats tornats generar
recovery_instructions_html: Se vos arriba de perdre vòstre mobil, podètz utilizar un dels còdis de recuperacion cai-jos per poder tornar accedir a vòstre compte. Gardatz los còdis en seguretat, per exemple, imprimissètz los e gardatz los amb vòstres documents importants.
@@ -1248,7 +1202,7 @@ oc:
warning:
explanation:
disable: Quand vòstre compte es gelat, las donadas d’aqueste demòran senceras, mas podètz pas realizar cap d’accion fins que siá desblocat.
- silence: Del temps que vòstre compte es limitat, solament lo monde que vos sègon veiràn vòstres tuts sus aqueste servidor, e poiriatz èsser tirat de mantunas listas publicas. Pasmens, d’autres vos pòdon sègre manualament.
+ silence: Del temps que vòstre compte es limitat, solament lo monde que vos sègon veiràn vòstres tuts sus aqueste servidor, e poiriatz èsser tirat de mantuna lista publica. Pasmens, d’autres vos pòdon sègre manualament.
suspend: Vòstre compte es suspendut e totes vòstres tuts e fichièrs enviats son estats suprimits sens retorn possible d’aqueste servidor e los de vòstres seguidors.
get_in_touch: Podètz respondre a aqueste corrièl per contactar la còla de %{instance}.
review_server_policies: Repassar las politicas del servidor
@@ -1282,7 +1236,6 @@ oc:
title: Vos desirem la benvenguda a bòrd %{name} !
users:
follow_limit_reached: Podètz pas sègre mai de %{limit} personas
- invalid_email: L’adreça de corrièl es invalida
invalid_otp_token: Còdi d’autentificacion en dos temps invalid
invalid_sign_in_token: Còdi de seguretat invalid
otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email}
diff --git a/config/locales/pa.yml b/config/locales/pa.yml
new file mode 100644
index 000000000..0fc957a99
--- /dev/null
+++ b/config/locales/pa.yml
@@ -0,0 +1,12 @@
+---
+pa:
+ errors:
+ '400': The request you submitted was invalid or malformed.
+ '403': You don't have permission to view this page.
+ '404': The page you are looking for isn't here.
+ '406': This page is not available in the requested format.
+ '410': The page you were looking for doesn't exist here anymore.
+ '422':
+ '429': Too many requests
+ '500':
+ '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 23c67267e..c215ee1ca 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -26,6 +26,8 @@ pl:
Jest używane w celu federowania i nie powinno być blokowane, chyba że chcesz zablokować całą instację, w takim przypadku użyj blokady domeny.
learn_more: Dowiedz się więcej
privacy_policy: Polityka prywatności
+ rules: Regulamin serwera
+ rules_html: 'Poniżej znajduje się podsumowanie zasad, których musisz przestrzegać, jeśli chcesz mieć konto na tym serwerze Mastodona:'
see_whats_happening: Zobacz co się dzieje
server_stats: 'Statystyki serwera:'
source_code: Kod źródłowy
@@ -86,7 +88,6 @@ pl:
other: Wpisów
posts_tab_heading: Wpisy
posts_with_replies: Wpisy z odpowiedziami
- reserved_username: Ta nazwa użytkownika jest zarezerwowana
roles:
admin: Administrator
bot: Bot
@@ -237,6 +238,7 @@ pl:
create_domain_block: Utwórz blokadę domeny
create_email_domain_block: Utwórz blokadę domeny e-mail
create_ip_block: Utwórz regułę IP
+ create_unavailable_domain: Utwórz niedostępną domenę
demote_user: Zdegraduj użytkownika
destroy_announcement: Usuń ogłoszenie
destroy_custom_emoji: Usuń niestandardowe emoji
@@ -245,6 +247,7 @@ pl:
destroy_email_domain_block: Usuń blokadę domeny e-mail
destroy_ip_block: Usuń regułę IP
destroy_status: Usuń wpis
+ destroy_unavailable_domain: Usuń niedostępną domenę
disable_2fa_user: Wyłącz 2FA
disable_custom_emoji: Wyłącz niestandardowe emoji
disable_user: Wyłącz użytkownika
@@ -268,46 +271,48 @@ pl:
update_domain_block: Zaktualizuj blokadę domeny
update_status: Aktualizuj wpis
actions:
- assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}"
- change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
- confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
- create_account_warning: "%{name} wysłał(a) ostrzeżenie do %{target}"
- create_announcement: "%{name} utworzył(a) nowe ogłoszenie %{target}"
- create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}"
- create_domain_allow: "%{name} dodał(a) na białą listę domenę %{target}"
- create_domain_block: "%{name} zablokował(a) domenę %{target}"
- create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
- create_ip_block: "%{name} stworzył dla IP %{target}"
- demote_user: "%{name} zdegradował(a) użytkownika %{target}"
- destroy_announcement: "%{name} usunął(-ęła) ogłoszenie %{target}"
- destroy_custom_emoji: "%{name} usunął(-ęła) emoji %{target}"
- destroy_domain_allow: "%{name} usunął(-ęła) domenę %{target} z białej listy"
- destroy_domain_block: "%{name} odblokował(a) domenę %{target}"
- destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy"
- destroy_ip_block: "%{name} usunął regułę dla IP %{target}"
- destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}"
- disable_2fa_user: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}"
- disable_custom_emoji: "%{name} wyłączył(a) emoji %{target}"
- disable_user: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}"
- enable_custom_emoji: "%{name} włączył(a) emoji %{target}"
- enable_user: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}"
- memorialize_account: "%{name} nadał(a) kontu %{target} status in memoriam"
- promote_user: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}"
- remove_avatar_user: "%{name} usunął(-ęła) awatar użytkownikowi %{target}"
- reopen_report: "%{name} otworzył(a) ponownie zgłoszenie %{target}"
- reset_password_user: "%{name} przywrócił(a) hasło użytkownikowi %{target}"
- resolve_report: "%{name} rozwiązał(a) zgłoszenie %{target}"
- sensitive_account: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą"
- silence_account: "%{name} wyciszył(a) konto %{target}"
- suspend_account: "%{name} zawiesił(a) konto %{target}"
- unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
- unsensitive_account: "%{name} cofnął(-ęła) oznaczenie zawartości multimedialnej %{target} jako wrażliwą"
- unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
- unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
- update_announcement: "%{name} zaktualizował(-a) ogłoszenie %{target}"
- update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}"
- update_domain_block: "%{name} zaktualizował(-a) blokadę domeny dla %{target}"
- update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}"
+ assigned_to_self_report_html: "%{name} przypisał(a) sobie zgłoszenie %{target}"
+ change_email_user_html: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
+ confirm_user_html: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
+ create_account_warning_html: "%{name} wysłał(a) ostrzeżenie do %{target}"
+ create_announcement_html: "%{name} utworzył(a) nowe ogłoszenie %{target}"
+ create_custom_emoji_html: "%{name} dodał(a) nowe emoji %{target}"
+ create_domain_allow_html: "%{name} dodał(a) na białą listę domenę %{target}"
+ create_domain_block_html: "%{name} zablokował(a) domenę %{target}"
+ create_email_domain_block_html: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
+ create_ip_block_html: "%{name} stworzył(a) regułę dla IP %{target}"
+ create_unavailable_domain_html: "%{name} przestał(a) doręczać na domenę %{target}"
+ demote_user_html: "%{name} zdegradował(a) użytkownika %{target}"
+ destroy_announcement_html: "%{name} usunął(-ęła) ogłoszenie %{target}"
+ destroy_custom_emoji_html: "%{name} usunął(-ęła) emoji %{target}"
+ destroy_domain_allow_html: "%{name} usunął(-ęła) domenę %{target} z białej listy"
+ destroy_domain_block_html: "%{name} odblokował(a) domenę %{target}"
+ destroy_email_domain_block_html: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy"
+ destroy_ip_block_html: "%{name} usunął(-ęła) regułę dla IP %{target}"
+ destroy_status_html: "%{name} usunął(-ęła) wpis użytkownika %{target}"
+ destroy_unavailable_domain_html: "%{name} wznowił(a) doręczanie do domeny %{target}"
+ disable_2fa_user_html: "%{name} wyłączył(a) uwierzytelnianie dwustopniowe użytkownikowi %{target}"
+ disable_custom_emoji_html: "%{name} wyłączył(a) emoji %{target}"
+ disable_user_html: "%{name} zablokował(a) możliwość logowania użytkownikowi %{target}"
+ enable_custom_emoji_html: "%{name} włączył(a) emoji %{target}"
+ enable_user_html: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}"
+ memorialize_account_html: "%{name} nadał(a) kontu %{target} status in memoriam"
+ promote_user_html: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}"
+ remove_avatar_user_html: "%{name} usunął(-ęła) awatar użytkownikowi %{target}"
+ reopen_report_html: "%{name} otworzył(a) ponownie zgłoszenie %{target}"
+ reset_password_user_html: "%{name} przywrócił(a) hasło użytkownikowi %{target}"
+ resolve_report_html: "%{name} rozwiązał(a) zgłoszenie %{target}"
+ sensitive_account_html: "%{name} oznaczył(a) zawartość multimedialną %{target} jako wrażliwą"
+ silence_account_html: "%{name} wyciszył(a) konto %{target}"
+ suspend_account_html: "%{name} zawiesił(a) konto %{target}"
+ unassigned_report_html: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
+ unsensitive_account_html: "%{name} cofnął(-ęła) oznaczenie zawartości multimedialnej %{target} jako wrażliwą"
+ unsilence_account_html: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
+ unsuspend_account_html: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
+ update_announcement_html: "%{name} zaktualizował(a) ogłoszenie %{target}"
+ update_custom_emoji_html: "%{name} zaktualizował(a) emoji %{target}"
+ update_domain_block_html: "%{name} zaktualizował(a) blokadę domeny dla %{target}"
+ update_status_html: "%{name} zaktualizował(a) wpis użytkownika %{target}"
deleted_status: "(usunięty wpis)"
empty: Nie znaleziono aktywności w dzienniku.
filter_by_action: Filtruj według działania
@@ -322,10 +327,12 @@ pl:
new:
create: Utwórz ogłoszenie
title: Nowe ogłoszenie
+ publish: Opublikuj
published_msg: Pomyślnie opublikowano ogłoszenie!
scheduled_for: Zaplanowano na %{time}
scheduled_msg: Zaplanowano publikację ogłoszenia!
title: Ogłoszenia
+ unpublish: Cofnij publikację
unpublished_msg: Pomyślnie wycofano publikację ogłoszenia!
updated_msg: Pomyślnie zaktualizowano ogłoszenie!
custom_emojis:
@@ -370,7 +377,6 @@ pl:
feature_profile_directory: Katalog profilów
feature_registrations: Rejestracja
feature_relay: Przekazywanie federacji
- feature_spam_check: Anty-spam
feature_timeline_preview: Podgląd osi czasu
features: Możliwości
hidden_service: Federowanie z ukrytymi usługami
@@ -450,9 +456,36 @@ pl:
create: Utwórz blokadę
title: Nowa blokada domeny e-mail
title: Blokowanie domen e-mail
+ follow_recommendations:
+ description_html: "Polecane śledzenia pomagają nowym użytkownikom szybko odnaleźć interesujące treści. Jeżeli użytkownik nie wchodził w interakcje z innymi wystarczająco często, aby powstały spersonalizowane rekomendacje, polecane są te konta. Są one obliczane każdego dnia na podstawie kombinacji kont o największej liczbie niedawnej aktywności i największej liczbie lokalnych obserwatorów dla danego języka."
+ language: Dla języka
+ status: Stan
+ suppress: Usuń polecenie śledzenia
+ suppressed: Usunięto
+ title: Polecane konta
+ unsuppress: Przywróć polecenie śledzenia konta
instances:
+ back_to_all: Wszystkie
+ back_to_limited: Ograniczone
+ back_to_warning: Ostrzeżenie
by_domain: Domena
+ delivery:
+ all: Wszystkie
+ clear: Wyczyść błędy w doręczaniu
+ restart: Uruchom ponownie doręczenie
+ stop: Zatrzymaj doręczanie
+ title: Doręczanie
+ unavailable: Niedostępne
+ unavailable_message: Doręczaniei niedostępne
+ warning: Ostrzeżenie
+ warning_message:
+ few: "%{count} dni niepowodzenia doręczenia"
+ many: "%{count} dni niepowodzenia doręczenia"
+ one: "%{count} dzień niepowodzenia doręczenia"
+ other: "%{count} dni niepowodzenia doręczenia"
delivery_available: Doręczanie jest dostępne
+ delivery_error_days: Dni błędów doręczenia
+ delivery_error_hint: Jeżeli doręczanie nie będzie możliwe przez %{count} dni, zostanie automatycznie oznaczona jako nie do doręczania.
empty: Nie znaleziono domen.
known_accounts:
few: "%{count} znane konta"
@@ -558,6 +591,13 @@ pl:
unassign: Cofnij przypisanie
unresolved: Nierozwiązane
updated_at: Zaktualizowano
+ rules:
+ add_new: Dodaj zasadę
+ delete: Usuń
+ description_html: Chociaż większość twierdzi, że przeczytała i zgadza się z warunkami korzystania z usługi, zwykle ludzie nie czytają ich, dopóki nie pojawi się problem. Ułatw użytkownikom szybkie przejrzenie zasad serwera, umieszczając je na prostej liście punktowanej. Postaraj się, aby poszczególne zasady były krótkie i proste, ale staraj się też nie dzielić ich na wiele oddzielnych elementów.
+ edit: Edytuj zasadę
+ empty: Jeszcze nie zdefiniowano zasad serwera.
+ title: Regulamin serwera
settings:
activity_api_enabled:
desc_html: Liczy publikowane lokalnie wpisy, aktywnych użytkowników i nowe rejestracje w ciągu danego tygodnia
@@ -581,9 +621,6 @@ pl:
users: Zalogowanym lokalnym użytkownikom
domain_blocks_rationale:
title: Pokaż uzasadnienia
- enable_bootstrap_timeline_accounts:
- desc_html: Niech nowi użytkownicy automatycznie śledzą ustawione konta, aby ich główna oś czasu nie był początkowo pusta
- title: Dodawaj domyślne obserwacje nowym użytkownikom
hero:
desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura serwera
title: Obraz bohatera
@@ -637,9 +674,6 @@ pl:
desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać ze znaczników HTML
title: Niestandardowe zasady użytkowania
site_title: Nazwa serwera
- spam_check_enabled:
- desc_html: Mastodon może automatycznie zgłaszać konta, które wysyłają powtarzające się niechciane wiadomości. Część zgłoszeń może być nieprawidłowa.
- title: Automatyzacja antyspamu
thumbnail:
desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli'
title: Miniatura serwera
@@ -670,13 +704,18 @@ pl:
no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany
title: Wpisy konta
with_media: Z zawartością multimedialną
+ system_checks:
+ database_schema_check:
+ message_html: Istnieją oczekujące migracje bazy danych. Uruchom je, aby upewnić się, że aplikacja działa tak, jak powinna
+ rules_check:
+ action: Zarządzaj regułami serwera
+ message_html: Nie zdefiniowano żadnych reguł serwera.
+ sidekiq_process_check:
+ message_html: Brak uruchomionego procesu Sidekiq dla kolejki(-ek) %{value}. Sprawdź konfigurację Sidekiq
tags:
accounts_today: Unikalne wykorzystania dzisiaj
accounts_week: Unikalne wykorzystania w tym tygodniu
breakdown: Podział dzisiejszego wykorzystania według źródła
- context: Kontekst
- directory: W katalogu
- in_directory: "%{count} w katalogu"
last_active: Ostatnia aktywność
most_popular: Najpopularniejsze
most_recent: Ostatnie
@@ -693,6 +732,7 @@ pl:
add_new: Dodaj nowy
delete: Usuń
edit_preset: Edytuj szablon ostrzeżenia
+ empty: Nie zdefiniowano jeszcze żadnych szablonów ostrzegawczych.
title: Zarządzaj szablonami ostrzeżeń
admin_mailer:
new_pending_account:
@@ -821,7 +861,7 @@ pl:
x_days: "%{count} dni"
x_minutes: "%{count}min"
x_months: "%{count} miesięcy"
- x_seconds: "%{count}s"
+ x_seconds: "%{count} s"
deletes:
challenge_not_passed: Wprowadzone informacje za nieprawidłowe
confirm_password: Wprowadź aktualne hasło, aby potwierdzić tożsamość
@@ -1062,10 +1102,14 @@ pl:
body: "%{name} wspomniał(a) o Tobie w:"
subject: "%{name} wspomniał(a) o Tobie"
title: Nowe wspomnienie o Tobie
+ poll:
+ subject: Ankieta %{name} zakończyła się
reblog:
body: 'Twój wpis został podbity przez %{name}:'
subject: Twój wpis został podbity przez %{name}
title: Nowe podbicie
+ status:
+ subject: "%{name} właśnie opublikował(a) wpis"
notifications:
email_events: 'Powiadamiaj e-mailem o:'
email_events_hint: 'Wybierz wydarzenia, o których chcesz otrzymywać powiadomienia:'
@@ -1164,7 +1208,7 @@ pl:
generic: nieznana przeglądarka
ie: Internet Explorer
micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
+ nokia: Przeglądarka Nokia S40 Ovi
opera: Opera
otter: Przeglądarka Otter
phantom_js: PhantomJS
@@ -1214,8 +1258,6 @@ pl:
relationships: Śledzeni i śledzący
two_factor_authentication: Uwierzytelnianie dwuetapowe
webauthn_authentication: Klucze bezpieczeństwa
- spam_check:
- spam_detected: To zgłoszenie jest automatyczne. Został wykryty spam.
statuses:
attached:
audio:
@@ -1270,6 +1312,7 @@ pl:
sign_in_to_participate: Zaloguj się, aby udzielić się w tej konwersacji
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Bezpośredni
private: Tylko dla śledzących
private_long: Widoczne tylko dla osób, które Cię śledzą
public: Publiczne
@@ -1438,11 +1481,8 @@ pl:
tips: Wskazówki
title: Witaj na pokładzie, %{name}!
users:
- blocked_email_provider: Ten dostawca e-mail jest niedozwolony
follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób
generic_access_help_html: Nie możesz uzyskać dostępu do konta? Skontaktuj się z %{email} aby uzyskać pomoc
- invalid_email: Adres e-mail jest niepoprawny
- invalid_email_mx: Ten adres e-mail wydaje się nie istnieć
invalid_otp_token: Kod uwierzytelniający jest niepoprawny
invalid_sign_in_token: Nieprawidłowy kod zabezpieczający
otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email}
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 529548225..1cec6bec3 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -26,6 +26,8 @@ pt-BR:
É usado para propósitos de federação e não deve ser bloqueado a menos que queira bloquear toda a instância, o que no caso devia usar um bloqueio de domínio.
learn_more: Saiba mais
privacy_policy: Política de Privacidade
+ rules: Regras do servidor
+ rules_html: 'Abaixo está um resumo das regras que você precisa seguir se você quer ter uma conta neste servidor do Mastodon:'
see_whats_happening: Veja o que está acontecendo
server_stats: 'Estatísticas da instância:'
source_code: Código-fonte
@@ -78,12 +80,11 @@ pt-BR:
other: Toots
posts_tab_heading: Toots
posts_with_replies: Toots e respostas
- reserved_username: Nome de usuário reservado
roles:
admin: Admin
bot: Robô
group: Grupo
- moderator: Mod
+ moderator: Moderador
unavailable: Perfil indisponível
unfollow: Deixar de seguir
admin:
@@ -138,7 +139,6 @@ pt-BR:
joined: Entrou
location:
all: Todos
- local: Local
remote: Remoto
title: Localização
login_status: Situação da conta
@@ -260,46 +260,9 @@ pt-BR:
update_domain_block: Atualizar bloqueio de domínio
update_status: Editar Status
actions:
- assigned_to_self_report: "%{name} pegou a denúncia %{target}"
- change_email_user: "%{name} alterou o endereço de e-mail do usuário %{target}"
- confirm_user: "%{name} confirmou o endereço de e-mail do usuário %{target}"
- create_account_warning: "%{name} enviou um aviso para %{target}"
- create_announcement: "%{name} criou o novo anúncio %{target}"
- create_custom_emoji: "%{name} enviou o novo emoji %{target}"
- create_domain_allow: "%{name} permitiu %{target}"
- create_domain_block: "%{name} bloqueou %{target}"
- create_email_domain_block: "%{name} adicionou o domínio de e-mail %{target} à lista negra"
- create_ip_block: "%{name} criou regra para o IP %{target}"
- demote_user: "%{name} rebaixou o usuário %{target}"
- destroy_announcement: "%{name} excluiu o anúncio %{target}"
- destroy_custom_emoji: "%{name} excluiu emoji %{target}"
- destroy_domain_allow: "%{name} bloqueou %{target}"
- destroy_domain_block: "%{name} desbloqueou %{target}"
- destroy_email_domain_block: "%{name} adicionou domínio de e-mail %{target} à lista branca"
- destroy_ip_block: "%{name} excluiu regra para o IP %{target}"
- destroy_status: "%{name} excluiu toot de %{target}"
- disable_2fa_user: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}"
- disable_custom_emoji: "%{name} desativou o emoji %{target}"
- disable_user: "%{name} desativou o acesso para o usuário %{target}"
- enable_custom_emoji: "%{name} ativou o emoji %{target}"
- enable_user: "%{name} ativou o acesso para o usuário %{target}"
- memorialize_account: "%{name} transformou a conta de %{target} em um página de memorial"
- promote_user: "%{name} promoveu o usuário %{target}"
- remove_avatar_user: "%{name} removeu a imagem de perfil de %{target}"
- reopen_report: "%{name} reabriu a denúncia %{target}"
- reset_password_user: "%{name} redefiniu a senha do usuário %{target}"
- resolve_report: "%{name} resolveu a denúncia %{target}"
- sensitive_account: "%{name} marcou a mídia de %{target} como sensível"
- silence_account: "%{name} silenciou a conta de %{target}"
- suspend_account: "%{name} baniu a conta de %{target}"
- unassigned_report: "%{name} largou a denúncia %{target}"
- unsensitive_account: "%{name} desmarcou a mídia de %{target} como sensível"
- unsilence_account: "%{name} desativou o silêncio de %{target}"
- unsuspend_account: "%{name} removeu a suspensão da conta de %{target}"
- update_announcement: "%{name} atualizou o anúncio %{target}"
- update_custom_emoji: "%{name} atualizou o emoji %{target}"
- update_domain_block: "%{name} atualizou o bloqueio de domínio para %{target}"
- update_status: "%{name} atualizou o status de %{target}"
+ create_account_warning_html: "%{name} enviou um aviso para %{target}"
+ create_domain_block_html: "%{name} bloqueou o domínio %{target}"
+ create_email_domain_block_html: "%{name} bloqueou do domínio de e-mail %{target}"
deleted_status: "(status excluído)"
empty: Nenhum registro encontrado.
filter_by_action: Filtrar por ação
@@ -314,10 +277,12 @@ pt-BR:
new:
create: Criar anúncio
title: Novo anúncio
+ publish: Publicar
published_msg: Anúncio publicado com sucesso!
scheduled_for: Agendado para %{time}
scheduled_msg: Anúncio agendado para publicação!
title: Anúncios
+ unpublish: Cancelar publicação
unpublished_msg: Anúncio despublicado com sucesso!
updated_msg: Anúncio atualizado com sucesso!
custom_emojis:
@@ -333,7 +298,6 @@ pt-BR:
disable: Desativar
disabled: Desativado
disabled_msg: Emoji desativado com sucesso
- emoji: Emoji
enable: Ativar
enabled: Ativado
enabled_msg: Emoji ativado com sucesso
@@ -362,7 +326,6 @@ pt-BR:
feature_profile_directory: Diretório de perfis
feature_registrations: Novas contas
feature_relay: Repetidor da federação
- feature_spam_check: Anti-spam
feature_timeline_preview: Prévia da linha
features: Funcionalidades
hidden_service: Federação com serviços onion
@@ -402,6 +365,7 @@ pt-BR:
silence: Silenciar
suspend: Banir
title: Novo bloqueio de domínio
+ obfuscate: Ofuscar nome de domínio
private_comment: Comentário privado
private_comment_hint: Comente sobre essa restrição ao domínio para uso interno dos moderadores.
public_comment: Comentário público
@@ -439,6 +403,7 @@ pt-BR:
title: Nova entrada de lista negra de e-mail
title: Lista de negra de e-mail
instances:
+ back_to_warning: Aviso
by_domain: Domínio
delivery_available: Envio disponível
empty: Nenhum domínio encontrado.
@@ -498,7 +463,6 @@ pt-BR:
save_and_enable: Salvar e ativar
setup: Configurar uma conexão de repetidor
signatures_not_enabled: Repetidores não funcionarão adequadamente enquanto o modo seguro ou o modo lista de permitidos estiverem ativos
- status: Status
title: Repetidores
report_notes:
created_msg: Nota de denúncia criada com sucesso!
@@ -535,11 +499,17 @@ pt-BR:
reported_by: Denunciada por
resolved: Resolvido
resolved_msg: Denúncia resolvida com sucesso!
- status: Status
title: Denúncias
unassign: Largar
unresolved: Não resolvido
updated_at: Atualizado
+ rules:
+ add_new: Adicionar regra
+ delete: Deletar
+ description_html: Embora a maioria afirme ter lido e concordado com os termos de serviço, geralmente as pessoas só leem depois de surgir um problema. Faça com que seja mais fácil ver as regras do seu servidor rapidamente fornecendo-as em uma lista. Tente manter cada regra curta e simples, mas também tente não dividi-las em muitos itens separados.
+ edit: Editar regra
+ empty: Nenhuma regra do servidor foi definida.
+ title: Regras do servidor
settings:
activity_api_enabled:
desc_html: Contagem de toots locais, usuários ativos e novos usuários semanalmente
@@ -563,8 +533,6 @@ pt-BR:
users: Para usuários locais logados
domain_blocks_rationale:
title: Mostrar motivo
- enable_bootstrap_timeline_accounts:
- title: Ativar seguidos por padrão por novas contas
hero:
desc_html: Aparece na página inicial. Recomendado ao menos 600x100px. Se não estiver definido, a miniatura da instância é usada no lugar
title: Imagem de capa
@@ -618,9 +586,6 @@ pt-BR:
desc_html: Você pode escrever a sua própria Política de Privacidade, Termos de Serviço, entre outras coisas. Você pode usar tags HTML
title: Termos de serviço personalizados
site_title: Nome da instância
- spam_check_enabled:
- desc_html: Mastodon pode denunciar automaticamente contas que enviem repetidamente toots não solicitados. Pode haver falsos positivos.
- title: Automação anti-spam
thumbnail:
desc_html: Usada para prévias via OpenGraph e API. Recomenda-se 1200x630px
title: Miniatura da instância
@@ -651,20 +616,18 @@ pt-BR:
no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado
title: Toots da conta
with_media: Com mídia
+ system_checks:
+ rules_check:
+ message_html: Você não definiu nenhuma regra de servidor.
tags:
accounts_today: Usos únicos de hoje
accounts_week: Usos únicos desta semana
breakdown: Descrição do consumo atual por fonte
- context: Contexto
- directory: No diretório
- in_directory: "%{count} no diretório"
last_active: Última atividade
most_popular: Mais populares
most_recent: Mais recentes
- name: Hashtag
review: Status da revisão
reviewed: Revisado
- title: Hashtags
trending_right_now: Em alta no momento
unique_uses_today: "%{count} tootando hoje"
unreviewed: Não revisadas
@@ -707,7 +670,6 @@ pt-BR:
toot_layout: Layout do Toot
application_mailer:
notification_preferences: Alterar preferências de e-mail
- salutation: "%{name},"
settings: 'Alterar e-mail de preferência: %{link}'
view: 'Ver:'
view_profile: Ver perfil
@@ -742,9 +704,6 @@ pt-BR:
migrate_account: Mudar-se para outra conta
migrate_account_html: Se você quer redirecionar essa conta para uma outra você pode configurar isso aqui.
or_log_in_with: Ou entre com
- providers:
- cas: CAS
- saml: SAML
register: Criar conta
registration_closed: "%{instance} não está aceitando novos membros"
resend_confirmation: Reenviar instruções de confirmação
@@ -791,15 +750,12 @@ pt-BR:
with_month_name: "%d de %b de %Y"
datetime:
distance_in_words:
- about_x_hours: "%{count}h"
about_x_months: "%{count}m"
about_x_years: "%{count}a"
almost_x_years: "%{count}a"
half_a_minute: Agora
- less_than_x_minutes: "%{count}m"
less_than_x_seconds: Agora
over_x_years: "%{count}a"
- x_days: "%{count}d"
x_minutes: "%{count}min"
x_months: "%{count}m"
x_seconds: "%{count}seg"
@@ -854,7 +810,6 @@ pt-BR:
size: Tamanho
blocks: Você bloqueou
bookmarks: Marcadores
- csv: CSV
domain_blocks: Bloqueios de domínio
lists: Listas
mutes: Você silenciou
@@ -1044,7 +999,6 @@ pt-BR:
number:
human:
decimal_units:
- format: "%n%u"
units:
billion: BI
million: MI
@@ -1064,7 +1018,6 @@ pt-BR:
next: Próximo
older: Mais antigo
prev: Anterior
- truncate: "…"
polls:
errors:
already_voted: Enquete votada
@@ -1146,18 +1099,10 @@ pt-BR:
current_session: Sessão atual
description: "%{browser} em %{platform}"
explanation: Estes são os navegadores que estão conectados com a sua conta Mastodon.
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
blackberry: BlackBerry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
mac: MacOS
other: Plataforma desconhecida
- windows: Windows
windows_mobile: Windows Mobile
windows_phone: Windows Phone
revoke: Fechar
@@ -1185,8 +1130,6 @@ pt-BR:
relationships: Seguindo e seguidores
two_factor_authentication: Autenticação de dois fatores
webauthn_authentication: Chaves de segurança
- spam_check:
- spam_detected: Esta é uma denúncia automática. Spam foi detectado.
statuses:
attached:
audio:
@@ -1227,7 +1170,6 @@ pt-BR:
show_older: Mostrar mais antigos
show_thread: Mostrar conversa
sign_in_to_participate: Entre para participar dessa conversa
- title: '%{name}: "%{quote}"'
visibilities:
private: Privado
private_long: Posta apenas para seguidores
@@ -1397,11 +1339,8 @@ pt-BR:
tips: Dicas
title: Boas vindas, %{name}!
users:
- blocked_email_provider: Este provedor de e-mail não é permitido
follow_limit_reached: Você não pode seguir mais de %{limit} pessoas
generic_access_help_html: Problemas para acessar sua conta? Você pode entrar em contato com %{email} para obter ajuda
- invalid_email: Endereço de e-mail inválido
- invalid_email_mx: O endereço de e-mail parece não existir
invalid_otp_token: Código de dois fatores inválido
invalid_sign_in_token: Cógido de segurança inválido
otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email}
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index f7b47fb10..1a903b96f 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -26,6 +26,8 @@ pt-PT:
É usada para motivos de federação e não deve ser bloqueada a não ser que que queira bloquear a instância por completo. Se for esse o caso, deverá usar o bloqueio de domínio.
learn_more: Saber mais
privacy_policy: Política de privacidade
+ rules: Regras da instância
+ rules_html: 'Abaixo está um resumo das regras que precisa seguir se pretender ter uma conta nesta instância do Mastodon:'
see_whats_happening: Veja o que está a acontecer
server_stats: 'Estatísticas da instância:'
source_code: Código fonte
@@ -78,7 +80,6 @@ pt-PT:
other: Publicações
posts_tab_heading: Publicações
posts_with_replies: Posts e Respostas
- reserved_username: Este nome de utilizadores é reservado
roles:
admin: Administrador(a)
bot: Robô
@@ -114,8 +115,8 @@ pt-PT:
confirmed: Confirmado
confirming: A confirmar
delete: Eliminar dados
- deleted: Apagada
- demote: Rebaixar
+ deleted: Eliminada
+ demote: Despromoveu
destroyed_msg: Os dados de %{username} estão agora em fila de espera para serem eliminados de imediato
disable: Desativar
disable_two_factor_authentication: Desativar 2FA
@@ -201,7 +202,7 @@ pt-PT:
statuses: Status
subscribe: Inscrever-se
suspended: Suspensa
- suspension_irreversible: Os dados desta conta foram eliminados irreversivelmente. Você pode cancelar a suspensão da conta para torná-la utilizável, mas ela não irá recuperar os dados que possuía anteriormente.
+ suspension_irreversible: Os dados desta conta foram eliminados irreversivelmente. Pode cancelar a suspensão da conta para torná-la utilizável, mas ela não irá recuperar os dados que possuía anteriormente.
suspension_reversible_hint_html: A conta foi suspensa e os dados serão totalmente eliminados em %{date}. Até lá, a conta poderá ser recuperada sem quaisquer efeitos negativos. Se deseja eliminar todos os dados desta conta imediatamente, pode fazê-lo em baixo.
time_in_queue: Aguardando na fila %{time}
title: Contas
@@ -229,14 +230,16 @@ pt-PT:
create_domain_block: Criar Bloqueio de Domínio
create_email_domain_block: Criar Bloqueio de Domínio de E-mail
create_ip_block: Criar regra de IP
+ create_unavailable_domain: Criar Domínio Indisponível
demote_user: Despromover Utilizador
- destroy_announcement: Remover Anúncio
- destroy_custom_emoji: Remover Emoji Personalizado
- destroy_domain_allow: Remover Permissão de Domínio
- destroy_domain_block: Remover Bloqueio de Domínio
- destroy_email_domain_block: Remover Bloqueio de Domínio de E-mail
+ destroy_announcement: Eliminar Anúncio
+ destroy_custom_emoji: Eliminar Emoji Personalizado
+ destroy_domain_allow: Eliminar Permissão de Domínio
+ destroy_domain_block: Eliminar Bloqueio de Domínio
+ destroy_email_domain_block: Eliminar Bloqueio de Domínio de E-mail
destroy_ip_block: Eliminar regra de IP
- destroy_status: Remover Estado
+ destroy_status: Eliminar Publicação
+ destroy_unavailable_domain: Eliminar Domínio Indisponível
disable_2fa_user: Desativar 2FA
disable_custom_emoji: Desativar Emoji Personalizado
disable_user: Desativar Utilizador
@@ -260,53 +263,55 @@ pt-PT:
update_domain_block: Atualizar Bloqueio de Domínio
update_status: Atualizar Estado
actions:
- assigned_to_self_report: "%{name} atribuiu o relatório %{target} a si próprios"
- change_email_user: "%{name} alterou o endereço de e-mail do utilizador %{target}"
- confirm_user: "%{name} confirmou o endereço de e-mail do utilizador %{target}"
- create_account_warning: "%{name} enviou um aviso para %{target}"
- create_announcement: "%{name} criou um novo anúncio %{target}"
- create_custom_emoji: "%{name} enviado emoji novo %{target}"
- create_domain_allow: "%{name} colocou o domínio %{target} na lista branca"
- create_domain_block: "%{name} bloqueou o domínio %{target}"
- create_email_domain_block: "%{name} adicionou na lista negra o domínio de correio electrónico %{target}"
- create_ip_block: "%{name} criou regra para o IP %{target}"
- demote_user: "%{name} rebaixou o utilizador %{target}"
- destroy_announcement: "%{name} excluiu o anúncio %{target}"
- destroy_custom_emoji: "%{name} destruiu o emoji %{target}"
- destroy_domain_allow: "%{name} removeu o domínio %{target} da lista branca"
- destroy_domain_block: "%{name} desbloqueou o domínio %{target}"
- destroy_email_domain_block: "%{name} retirou o domínio de e-mail %{target} da lista negra"
- destroy_ip_block: "%{name} eliminou regra para o IP %{target}"
- destroy_status: "%{name} removeu o publicação feita por %{target}"
- disable_2fa_user: "%{name} desactivou o requerimento de autenticação em dois passos para o utilizador %{target}"
- disable_custom_emoji: "%{name} desabilitou o emoji %{target}"
- disable_user: "%{name} desativou o acesso para o utilizador %{target}"
- enable_custom_emoji: "%{name} habilitou o emoji %{target}"
- enable_user: "%{name} ativou o acesso para o utilizador %{target}"
- memorialize_account: "%{name} transformou a conta de %{target} em um memorial"
- promote_user: "%{name} promoveu o utilizador %{target}"
- remove_avatar_user: "%{name} removeu a imagem de perfil de %{target}"
- reopen_report: "%{name} reabriu o relatório %{target}"
- reset_password_user: "%{name} restabeleceu a palavra-passe do utilizador %{target}"
- resolve_report: "%{name} recusou o relatório %{target}"
- sensitive_account: "%{name} marcou a media de %{target} como sensível"
- silence_account: "%{name} silenciou a conta de %{target}"
- suspend_account: "%{name} suspendeu a conta de %{target}"
- unassigned_report: "%{name} não atribuiu o relatório %{target}"
- unsensitive_account: "%{name} desmarcou a media de %{target} como sensível"
- unsilence_account: "%{name} desativou o silêncio de %{target}"
- unsuspend_account: "%{name} desativou a suspensão de %{target}"
- update_announcement: "%{name} atualizou o anúncio %{target}"
- update_custom_emoji: "%{name} atualizou o emoji %{target}"
- update_domain_block: "%{name} atualizou o bloqueio de domínio para %{target}"
- update_status: "%{name} atualizou o estado de %{target}"
- deleted_status: "(apagou a publicação)"
+ assigned_to_self_report_html: "%{name} atribuiu o relatório %{target} a si próprio"
+ change_email_user_html: "%{name} alterou o endereço de e-mail do utilizador %{target}"
+ confirm_user_html: "%{name} confirmou o endereço de e-mail do utilizador %{target}"
+ create_account_warning_html: "%{name} enviou um aviso para %{target}"
+ create_announcement_html: "%{name} criou o novo anúncio %{target}"
+ create_custom_emoji_html: "%{name} carregou o novo emoji %{target}"
+ create_domain_allow_html: "%{name} habilitou a federação com o domínio %{target}"
+ create_domain_block_html: "%{name} bloqueou o domínio %{target}"
+ create_email_domain_block_html: "%{name} bloqueou o domínio de e-mail %{target}"
+ create_ip_block_html: "%{name} criou regra para o IP %{target}"
+ create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}"
+ demote_user_html: "%{name} despromoveu o utilizador %{target}"
+ destroy_announcement_html: "%{name} eliminou o anúncio %{target}"
+ destroy_custom_emoji_html: "%{name} destruiu o emoji %{target}"
+ destroy_domain_allow_html: "%{name} desabilitou a federação com o domínio %{target}"
+ destroy_domain_block_html: "%{name} desbloqueou o domínio %{target}"
+ destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}"
+ destroy_ip_block_html: "%{name} eliminou regra para o IP %{target}"
+ destroy_status_html: "%{name} removeu a publicação de %{target}"
+ destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}"
+ disable_2fa_user_html: "%{name} desativou o requerimento de autenticação em dois passos para o utilizador %{target}"
+ disable_custom_emoji_html: "%{name} desabilitou o emoji %{target}"
+ disable_user_html: "%{name} desativou o acesso para o utilizador %{target}"
+ enable_custom_emoji_html: "%{name} habilitou o emoji %{target}"
+ enable_user_html: "%{name} ativou o acesso para o utilizador %{target}"
+ memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial"
+ promote_user_html: "%{name} promoveu o utilizador %{target}"
+ remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}"
+ reopen_report_html: "%{name} reabriu o relatório %{target}"
+ reset_password_user_html: "%{name} restabeleceu a palavra-passe do utilizador %{target}"
+ resolve_report_html: "%{name} resolveu o relatório %{target}"
+ sensitive_account_html: "%{name} marcou a media de %{target} como sensível"
+ silence_account_html: "%{name} silenciou a conta de %{target}"
+ suspend_account_html: "%{name} suspendeu a conta de %{target}"
+ unassigned_report_html: "%{name} desatribuiu o realtório %{target}"
+ unsensitive_account_html: "%{name} desmarcou a media de %{target} como sensível"
+ unsilence_account_html: "%{name} desativou o silêncio de %{target}"
+ unsuspend_account_html: "%{name} desativou a suspensão de %{target}"
+ update_announcement_html: "%{name} atualizou o anúncio %{target}"
+ update_custom_emoji_html: "%{name} atualizou o emoji %{target}"
+ update_domain_block_html: "%{name} atualizou o bloqueio de domínio para %{target}"
+ update_status_html: "%{name} atualizou o estado de %{target}"
+ deleted_status: "(publicação eliminada)"
empty: Não foram encontrados registos.
filter_by_action: Filtrar por ação
filter_by_user: Filtrar por utilizador
title: Registo de auditoria
announcements:
- destroyed_msg: Anúncio excluído com sucesso!
+ destroyed_msg: Anúncio eliminado com sucesso!
edit:
title: Editar anúncio
empty: Nenhum anúncio encontrado.
@@ -314,10 +319,12 @@ pt-PT:
new:
create: Criar anúncio
title: Novo anúncio
+ publish: Publicar
published_msg: Anúncio publicado com sucesso!
scheduled_for: Agendado para %{time}
scheduled_msg: Anúncio agendado para publicação!
title: Anúncios
+ unpublish: Anular publicação
unpublished_msg: Anúncio retirado de exibição com sucesso!
updated_msg: Anúncio atualizado com sucesso!
custom_emojis:
@@ -328,7 +335,7 @@ pt-PT:
copy_failed_msg: Não foi possível criar uma cópia local deste emoji
create_new_category: Criar nova categoria
created_msg: Emoji criado com sucesso!
- delete: Apagar
+ delete: Eliminar
destroyed_msg: Emoji destruído com sucesso!
disable: Desativar
disabled: Desativado
@@ -359,10 +366,9 @@ pt-PT:
config: Configuração
feature_deletions: Eliminações da conta
feature_invites: Links de convites
- feature_profile_directory: Directório de perfil
+ feature_profile_directory: Diretório de perfis
feature_registrations: Registos
feature_relay: Repetidor da federação
- feature_spam_check: Anti-spam
feature_timeline_preview: Pré-visualização da cronologia
features: Componentes
hidden_service: Federação com serviços escondidos
@@ -440,9 +446,34 @@ pt-PT:
create: Adicionar domínio
title: Novo bloqueio de domínio de email
title: Bloqueio de Domínio de Email
+ follow_recommendations:
+ description_html: "Recomendações de quem seguir ajudam novos utilizadores a encontrar conteúdo interessante rapidamente.. Quando um utilizador não interage com outros o suficiente para formar recomendações personalizadas, estas contas são recomendadas. Elas são recalculadas diariamente a partir de uma mistura de contas com mais atividade recente e maior número de seguidores locais para um determinado idioma."
+ language: Para o idioma
+ status: Estado
+ suppress: Suprimir recomendação de contas a seguir
+ suppressed: Suprimida
+ title: Seguir recomendações
+ unsuppress: Restaurar recomendações de contas a seguir
instances:
+ back_to_all: Todas
+ back_to_limited: Limitadas
+ back_to_warning: Aviso
by_domain: Domínio
+ delivery:
+ all: Todas
+ clear: Limpar erros de entrega
+ restart: Reiniciar entrega
+ stop: Parar entrega
+ title: Entrega
+ unavailable: Indisponível
+ unavailable_message: Entrega indisponível
+ warning: Aviso
+ warning_message:
+ one: Falhou entrega %{count} dia
+ other: Falhou entrega %{count} dias
delivery_available: Entrega disponível
+ delivery_error_days: Dias de erro de entrega
+ delivery_error_hint: Se a entrega não for possível durante %{count} dias, será automaticamente marcada como não realizável.
empty: Não foram encontrados domínios.
known_accounts:
one: "%{count} conta conhecida"
@@ -488,7 +519,7 @@ pt-PT:
title: Relações de %{acct}
relays:
add_new: Adicionar novo repetidor
- delete: Apagar
+ delete: Eliminar
description_html: Um repetidor de federação é um servidor intermediário que troca grandes volumes de publicações públicas entre instâncias que o subscrevem e publicam. Ele pode ajudar pequenas e medias instâncias a descobrir conteúdo do fediverso que, de outro modo, exigiria que os utilizadores locais seguissem manualmente outras pessoas em instâncias remotas.
disable: Desactivar
disabled: Desactivado
@@ -504,7 +535,7 @@ pt-PT:
title: Retransmissores
report_notes:
created_msg: Relatório criado com sucesso!
- destroyed_msg: Relatório apagado com sucesso!
+ destroyed_msg: Nota de relatório eliminada com sucesso!
reports:
account:
notes:
@@ -529,7 +560,7 @@ pt-PT:
create: Adicionar nota
create_and_resolve: Resolver com nota
create_and_unresolve: Reabrir com nota
- delete: Apagar
+ delete: Eliminar
placeholder: Descreve as ações que foram tomadas ou quaisquer outras atualizações relacionadas...
reopen: Reabrir relatório
report: 'Denúncia #%{id}'
@@ -542,6 +573,13 @@ pt-PT:
unassign: Não atribuir
unresolved: Por resolver
updated_at: Atualizado
+ rules:
+ add_new: Adicionar regra
+ delete: Eliminar
+ description_html: Embora a maioria afirme ter lido e concordado com os termos de serviço, geralmente as pessoas só leem depois de surgir um problema. Dê uma olhada nas regras do seu servidor fornecendo-as em uma lista de marcadores planos. Tente manter as regras individuais curtas e simples, mas tente também não dividi-las em muitos itens separados.
+ edit: Editar regra
+ empty: Nenhuma regra de instância foi ainda definida.
+ title: Regras da instância
settings:
activity_api_enabled:
desc_html: Contagem semanais de publicações locais, utilizadores activos e novos registos
@@ -565,9 +603,6 @@ pt-PT:
users: Para utilizadores locais que se encontrem autenticados
domain_blocks_rationale:
title: Mostrar motivo
- enable_bootstrap_timeline_accounts:
- desc_html: Faça com que novos utilizadores sigam automaticamente contas configuradas, para que a cronologia destes não se apresente inicialmente vazia
- title: Habilitar seguidores predefinidos para novos utilizadores
hero:
desc_html: Apresentado na primeira página. Pelo menos 600x100px recomendados. Quando não é definido, é apresentada a miniatura da instância
title: Imagem Hero
@@ -588,7 +623,7 @@ pt-PT:
desc_html: Mostrar na página inicial quando registos estão encerrados
Podes usar tags HTML
title: Mensagem de registos encerrados
deletion:
- desc_html: Permite a qualquer um apagar a conta
+ desc_html: Permitir a qualquer utilizador eliminar a sua conta
title: Permitir eliminar contas
min_invite_role:
disabled: Ninguém
@@ -621,9 +656,6 @@ pt-PT:
desc_html: Podes escrever a sua própria política de privacidade, termos de serviço, entre outras coisas. Pode utilizar etiquetas HTML
title: Termos de serviço personalizados
site_title: Título do site
- spam_check_enabled:
- desc_html: O Mastodon pode reportar automaticamente contas que enviem repetidamente mensagens não solicitadas. Poderão ocorrer alguns falso-positivos.
- title: Automação anti-spam
thumbnail:
desc_html: Usada para visualizações via OpenGraph e API. Recomenda-se 1200x630px
title: Miniatura da instância
@@ -638,15 +670,15 @@ pt-PT:
desc_html: Exibir publicamente hashtags atualmente em destaque que já tenham sido revistas anteriormente
title: Hashtags em destaque
site_uploads:
- delete: Excluir arquivo carregado
- destroyed_msg: Upload do site excluído com sucesso!
+ delete: Eliminar arquivo carregado
+ destroyed_msg: Upload do site eliminado com sucesso!
statuses:
back_to_account: Voltar para página da conta
batch:
delete: Eliminar
nsfw_off: NSFW OFF
nsfw_on: NSFW ON
- deleted: Apagado
+ deleted: Eliminado
failed_to_execute: Falhou ao executar
media:
title: Media
@@ -654,13 +686,18 @@ pt-PT:
no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado
title: Estado das contas
with_media: Com media
+ system_checks:
+ database_schema_check:
+ message_html: Existem migrações de base de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado
+ rules_check:
+ action: Gerir regras da instância
+ message_html: Não definiu nenhuma regra para a instância.
+ sidekiq_process_check:
+ message_html: Nenhum processo Sidekiq em execução para a(s) fila(s) %{value}. Reveja a configuração do seu Sidekiq
tags:
accounts_today: Usos únicos hoje
accounts_week: Usos únicos desta semana
breakdown: Descrição do consumo atual por fonte
- context: Contexto
- directory: No diretório
- in_directory: "%{count} no diretório"
last_active: Última actividade
most_popular: Mais popular
most_recent: Mais recente
@@ -675,8 +712,9 @@ pt-PT:
title: Administração
warning_presets:
add_new: Adicionar novo
- delete: Apagar
+ delete: Eliminar
edit_preset: Editar o aviso predefinido
+ empty: Ainda não definiu nenhum aviso predefinido.
title: Gerir os avisos predefinidos
admin_mailer:
new_pending_account:
@@ -692,7 +730,7 @@ pt-PT:
aliases:
add_new: Criar pseudónimo
created_msg: Criou com sucesso um novo pseudónimo. Pode agora iniciar a migração da conta antiga.
- deleted_msg: Removido o pseudónimo com sucesso. Migrar dessa conta para esta não será mais possível.
+ deleted_msg: O pseudónimo foi eliminado com sucesso. Migrar dessa conta para esta não será mais possível.
empty: Não tem pseudónimos.
hint_html: Se quiser mudar de outra conta para esta, pode criar aqui um pseudónimo, que é necessário antes de poder prosseguir com a migração de seguidores da conta antiga para esta. Esta ação por si só é inofensiva e reversível. A migração da conta é iniciada a partir da conta antiga.
remove: Desvincular pseudónimo
@@ -729,7 +767,7 @@ pt-PT:
checkbox_agreement_html: Concordo com as regras da instância e com os termos de serviço
checkbox_agreement_without_rules_html: Concordo com os termos do serviço
delete_account: Eliminar conta
- delete_account_html: Se desejas eliminar a conta, podes continua aqui. Uma confirmação será pedida.
+ delete_account_html: Se deseja eliminar a sua conta, pode continuar aqui. Uma confirmação será solicitada.
description:
prefix_invited_by_user: "@%{name} convidou-o a juntar-se a esta instância do Mastodon!"
prefix_sign_up: Inscreva-se hoje no Mastodon!
@@ -743,7 +781,7 @@ pt-PT:
login: Entrar
logout: Sair
migrate_account: Mudar para uma conta diferente
- migrate_account_html: Se desejas redirecionar esta conta para uma outra podesconfigurar isso aqui.
+ migrate_account_html: Se deseja redirecionar esta conta para uma outra pode configurar isso aqui.
or_log_in_with: Ou iniciar sessão com
providers:
cas: CAS
@@ -808,14 +846,14 @@ pt-PT:
x_seconds: "%{count} segundos"
deletes:
challenge_not_passed: A informação que introduziu não estava correta
- confirm_password: Introduz a palavra-passe atual para verificar a tua identidade
+ confirm_password: Introduza a sua palavra-passe atual para verificar a sua identidade
confirm_username: Introduza o seu nome de utilizador para confirmar o procedimento
proceed: Eliminar conta
- success_msg: A tua conta foi eliminada com sucesso
+ success_msg: A sua conta foi eliminada com sucesso
warning:
before: 'Antes de continuar, por favor leia cuidadosamente estas notas:'
caches: O conteúdo que foi armazenado em cache por outras instâncias pode persistir
- data_removal: As suas publicações e outros dados serão removidos permanentemente
+ data_removal: As suas publicações e outros dados serão eliminados permanentemente
email_change_html: Pode alterar o seu endereço de e-mail sem eliminar a sua conta
email_contact_html: Se ainda não chegou, pode enviar um e-mail a %{email} para obter ajuda
email_reconfirmation_html: Se não recebeu o e-mail de confirmação, pode pedi-lo novamente
@@ -880,7 +918,7 @@ pt-PT:
invalid_context: Inválido ou nenhum contexto fornecido
invalid_irreversible: Filtragem irreversível só funciona no contexto das notificações ou do início
index:
- delete: Apagar
+ delete: Eliminar
empty: Não tem filtros.
title: Filtros
new:
@@ -1038,10 +1076,14 @@ pt-PT:
body: 'Foste mencionado por %{name}:'
subject: "%{name} mencionou-te"
title: Nova menção
+ poll:
+ subject: Uma votação realizada por %{name} terminou
reblog:
body: 'O teu post foi partilhado por %{name}:'
subject: "%{name} partilhou o teu post"
title: Nova partilha
+ status:
+ subject: "%{name} acabou de publicar"
notifications:
email_events: Eventos para notificações por e-mail
email_events_hint: 'Selecione os eventos para os quais deseja receber notificações:'
@@ -1190,8 +1232,6 @@ pt-PT:
relationships: Seguindo e seguidores
two_factor_authentication: Autenticação em dois passos
webauthn_authentication: Chaves de segurança
- spam_check:
- spam_detected: Este é um relatório automatizado. Foi detectado spam.
statuses:
attached:
audio:
@@ -1234,6 +1274,7 @@ pt-PT:
sign_in_to_participate: Inicie a sessão para participar na conversa
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Direto
private: Mostrar apenas para seguidores
private_long: Mostrar apenas para seguidores
public: Público
@@ -1402,11 +1443,8 @@ pt-PT:
tips: Dicas
title: Bem-vindo a bordo, %{name}!
users:
- blocked_email_provider: Este provedor de e-mail não é permitido
follow_limit_reached: Não podes seguir mais do que %{limit} pessoas
generic_access_help_html: Problemas para aceder à sua conta? Pode entrar em contacto com %{email} para obter ajuda
- invalid_email: O endereço de e-mail é inválido
- invalid_email_mx: O endereço de e-mail não parece existir
invalid_otp_token: Código de autenticação inválido
invalid_sign_in_token: Cógido de segurança inválido
otp_lost_help_html: Se tu perdeste acesso a ambos, tu podes entrar em contacto com %{email}
@@ -1414,19 +1452,19 @@ pt-PT:
signed_in_as: 'Registado como:'
suspicious_sign_in_confirmation: Parece que não iniciou sessão através deste dispositivo antes, e não acede à sua conta há algum tempo. Portanto, enviámos um código de segurança para o seu endereço de e-mail para confirmar que é você.
verification:
- explanation_html: 'Tu podes comprovar que és o dono dos links nos metadados do teu perfil. Para isso, o website para o qual o link aponta tem de conter um link para o teu perfil do Mastodon. Este link tem de ter um rel="me" atributo. O conteúdo do texto não é relevante. Aqui está um exemplo:'
+ explanation_html: 'Pode comprovar que é o dono dos links nos metadados do seu perfil. Para isso, o website para o qual o link aponta tem de conter um link para o seu perfil do Mastodon. Este link tem de ter um atributo rel="me". O conteúdo do texto não é relevante. Aqui está um exemplo:'
verification: Verificação
webauthn_credentials:
add: Adicionar nova chave de segurança
create:
error: Ocorreu um problema ao adicionar sua chave de segurança. Tente novamente.
success: A sua chave de segurança foi adicionada com sucesso.
- delete: Remover
- delete_confirmation: Tem a certeza de que pretende remover esta chave de segurança?
+ delete: Eliminar
+ delete_confirmation: Tem a certeza de que pretende eliminar esta chave de segurança?
description_html: Se você ativar a autenticação com chave de segurança, para aceder à sua conta será necessário que utilize uma das suas chaves de segurança.
destroy:
error: Ocorreu um problema ao remover a sua chave de segurança. Tente novamente.
- success: A sua chave de segurança foi removida com sucesso.
+ success: A sua chave de segurança foi eliminada com sucesso.
invalid_credential: Chave de segurança inválida
nickname_hint: Introduza o apelido da sua nova chave de segurança
not_enabled: Ainda não ativou o WebAuthn
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 630bd91d6..0e2dc57af 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -7,15 +7,12 @@ ro:
active_count_after: activi
active_footnote: Utilizatori activi lunar (UAL)
administered_by: 'Administrat de:'
- api: API
apps: Aplicații mobile
apps_platforms: Folosește Mastodon de pe iOS, Android și alte platforme
browse_directory: Răsfoiți directorul de profil și filtrați după interese
browse_local_posts: Răsfoiți un flux live al postărilor publice de pe acest server
browse_public_posts: Răsfoiește un flux live de postări publice pe Mastodon
- contact: Contact
contact_missing: Nesetat
- contact_unavailable: N/A
discover_users: Descoperă utilizatori
documentation: Documentație
federation_hint_html: Cu un cont pe %{instance} vei putea urmări oameni pe orice server de Mastodon sau mai departe.
@@ -38,7 +35,6 @@ ro:
terms: Termeni de serviciu
unavailable_content: Conținut indisponibil
unavailable_content_description:
- domain: Server
reason: Motiv
rejecting_media: 'Fişierele media de pe aceste servere nu vor fi procesate sau stocate şi nici o miniatură nu va fi afişată, necesitând click manual la fişierul original:'
rejecting_media_title: Fișiere media filtrate
@@ -65,7 +61,6 @@ ro:
joined: Înscris %{date}
last_active: ultima activitate
link_verified_on: Proprietatea acestui link a fost verificată la %{date}
- media: Media
moved_html: "%{name} s-a mutat la %{new_profile_link}:"
network_hidden: Aceste informaţii nu sunt disponibile
never_active: Niciodată
@@ -80,12 +75,9 @@ ro:
other: De Postări
posts_tab_heading: Postări
posts_with_replies: Postări și răspunsuri
- reserved_username: Numele de utilizator este rezervat
roles:
- admin: Admin
bot: Robot
group: Grup
- moderator: Mod
unavailable: Profil indisponibil
unfollow: Nu mai urmării
admin:
@@ -102,7 +94,6 @@ ro:
approve: Aprobă
approve_all: Aprobă toate
are_you_sure: Ești sigur?
- avatar: Avatar
by_domain: Domeniu
change_email:
changed_msg: E-mail de cont schimbat cu succes!
@@ -131,11 +122,9 @@ ro:
header: Antet
inbox_url: URL mesaje primite
invited_by: Invitat de
- ip: IP
joined: Înscris
location:
all: Toate
- local: Local
remote: La distanţă
title: Locaţie
login_status: Stare conectare
@@ -157,8 +146,6 @@ ro:
pending: În așteptare
perform_full_suspension: Suspendate
promote: Promovează
- protocol: Protocol
- public: Public
push_subscription_expires: Abonamentul PuSH expiră
redownload: Reîmprospătează profilul
reject: Respinge
@@ -174,8 +161,6 @@ ro:
resubscribe: Resubscrie-te
role: Permisiuni
roles:
- admin: Administrator
- moderator: Moderator
staff: Personal
user: Utilizator
search: Caută
@@ -198,7 +183,6 @@ ro:
unsubscribe: Dezabonare
username: Nume
warn: Avertizează
- web: Web
whitelisted: Excluse la blocare
action_logs:
action_types:
@@ -246,13 +230,11 @@ ro:
remove: Deconectare alias
appearance:
localization:
- guide_link: https://crowdin.com/project/mastodon
guide_link_text: Toată lumea poate contribui.
sensitive_content: Conținut sensibil
toot_layout: Aspect postare
application_mailer:
notification_preferences: Modifică preferințe e-mail
- salutation: "%{name},"
settings: 'Modifică preferințe e-mail: %{link}'
view: 'Vizualizare:'
view_profile: Vizualizați profilul
@@ -284,9 +266,6 @@ ro:
migrate_account: Transfer către un alt cont
migrate_account_html: Dacă dorești să redirecționezi acest cont către un altul, poți configura asta aici.
or_log_in_with: Sau conectează-te cu
- providers:
- cas: CAS
- saml: SAML
register: Înregistrare
registration_closed: "%{instance} nu acceptă membri noi"
resend_confirmation: Retrimite instrucțiunile de confirmare
@@ -335,9 +314,7 @@ ro:
less_than_x_seconds: Chiar acum
over_x_years: "%{count}ani"
x_days: "%{count}z"
- x_minutes: "%{count}m"
x_months: "%{count}l"
- x_seconds: "%{count}s"
deletes:
challenge_not_passed: Informațiile introduse nu au fost corecte
confirm_password: Introdu parola curentă pentru a-ți verifica identitatea
@@ -522,14 +499,7 @@ ro:
activity: Ultima activitate
browser: Navigator
browsers:
- alipay: Alipay
- blackberry: Blackberry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Navigator necunoscut
- ie: Internet Explorer
settings:
account: Cont
back: Înapoi la Mastodon
@@ -543,10 +513,6 @@ ro:
few: "%{count} imagini"
one: "%{count} imagine"
other: "%{count} de imagini"
- video:
- few: "%{count} videoclipuri"
- one: "%{count} video"
- other: "%{count} de videoclipuri"
boosted_from_html: Impuls de la %{acct_link}
content_warning: 'Avertisment privind conținutul: %{warning}'
disallowed_hashtags:
@@ -576,11 +542,9 @@ ro:
show_more: Arată mai mult
show_thread: Arată discuția
sign_in_to_participate: Conectează-te pentru a participa la conversație
- title: '%{name}: "%{quote}"'
visibilities:
private: Doar urmăritorii
private_long: Arată doar urmăritorilor
- public: Public
public_long: Toată lumea poate vedea
unlisted: Nelistat
unlisted_long: Toată lumea poate vedea, dar nu este listată pe fluxurile publice
@@ -730,7 +694,6 @@ ro:
title: Bine ai venit la bord, %{name}!
users:
follow_limit_reached: Nu poți urmări mai mult de %{limit} persoane
- invalid_email: Adresa de e-mail nu este validă
invalid_otp_token: Cod doi pași nevalid
otp_lost_help_html: Dacă ai pierdut accesul la ambele, poți lua legătura cu %{email}
seamless_external_login: Sunteți autentificat prin intermediul unui serviciu extern, astfel încât parola și setările de e-mail nu sunt disponibile.
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 9895f9a55..3ce3f610c 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -26,6 +26,8 @@ ru:
Используется для целей федерации и не должен быть заблокирован, если вы не хотите заблокировать всю инстанцию, вместо этого лучше использовать доменную блокировку.
learn_more: Узнать больше
privacy_policy: Политика конфиденциальности
+ rules: Правила сервера
+ rules_html: 'Ниже приведена сводка правил, которых вам нужно придерживаться, если вы хотите иметь учётную запись на этом сервере Мастодона:'
see_whats_happening: Узнайте, что происходит вокруг
server_stats: 'Статистика сервера:'
source_code: Исходный код
@@ -86,7 +88,6 @@ ru:
other: статусов
posts_tab_heading: Посты
posts_with_replies: Посты с ответами
- reserved_username: Имя пользователя зарезервировано
roles:
admin: Администратор
bot: Бот
@@ -150,7 +151,7 @@ ru:
remote: Удаленные
title: Размещение
login_status: Статус учётной записи
- media_attachments: Файлы мультимедиа
+ media_attachments: Медиафайлы
memorialize: Сделать мемориалом
memorialized: Превращён в памятник
memorialized_msg: "%{username} успешно превращён в памятник"
@@ -198,8 +199,8 @@ ru:
search: Поиск
search_same_email_domain: Другие пользователи с тем же доменом электронной почты
search_same_ip: Другие пользователи с таким же IP
- sensitive: Деликатный
- sensitized: отмечено как деликатный контент
+ sensitive: Отметить как «деликатного содержания»
+ sensitized: отмечено как «деликатного характера»
shared_inbox_url: URL общих входящих
show:
created_reports: Жалобы, отправленные с этой учётной записи
@@ -214,7 +215,7 @@ ru:
time_in_queue: Ожидание в очереди %{time}
title: Учётные записи
unconfirmed_email: Неподтверждённый e-mail
- undo_sensitized: Снять отметку "деликатный"
+ undo_sensitized: Убрать отметку «деликатного содержания»
undo_silenced: Отменить скрытие
undo_suspension: Снять блокировку
unsilenced_msg: Ограничения с учётной записи %{username} сняты успешно
@@ -233,81 +234,85 @@ ru:
create_account_warning: Выдача предупреждения
create_announcement: Создание объявлений
create_custom_emoji: Добавление эмодзи
- create_domain_allow: Создать разрешение для домена
+ create_domain_allow: Разрешение доменов
create_domain_block: Блокировка доменов
create_email_domain_block: Блокировка e-mail доменов
- create_ip_block: Создать IP правило
+ create_ip_block: Создание правил для IP-адресов
+ create_unavailable_domain: Добавление домена в список недоступных
demote_user: Разжалование пользователей
destroy_announcement: Удаление объявлений
destroy_custom_emoji: Удаление эмодзи
- destroy_domain_allow: Удалить разрешение для домена
+ destroy_domain_allow: Отзыв разрешений для доменов
destroy_domain_block: Разблокировка доменов
destroy_email_domain_block: Разблокировка e-mail доменов
- destroy_ip_block: Удалить IP правило
+ destroy_ip_block: Удаление правил для IP-адресов
destroy_status: Удаление постов
+ destroy_unavailable_domain: Исключение доменов из списка недоступных
disable_2fa_user: Отключение 2FA
disable_custom_emoji: Отключение эмодзи
disable_user: Заморозка пользователей
enable_custom_emoji: Включение эмодзи
enable_user: Разморозка пользователей
- memorialize_account: Сделать мемориалом
+ memorialize_account: Присвоение пользователям статуса «мемориала»
promote_user: Повышение пользователей
remove_avatar_user: Удаление аватаров
reopen_report: Возобновление жалоб
reset_password_user: Сброс пароля пользователей
resolve_report: Отметка жалоб «решёнными»
- sensitive_account: Отметить все медиафайлы в вашей учётной записи как деликатные
+ sensitive_account: Присвоение пользователям отметки «деликатного содержания»
silence_account: Скрытие пользователей
suspend_account: Блокировка пользователей
unassigned_report: Снятие жалоб
- unsensitive_account: Снять отметку "деликатный" с медиафайлов вашей учётной записи
+ unsensitive_account: Снятие с пользователей отметки «деликатного содержания»
unsilence_account: Отмена скрытия пользователей
unsuspend_account: Разблокировка пользователей
update_announcement: Обновление объявлений
update_custom_emoji: Обновление эмодзи
- update_domain_block: Изменить блокировку домена
+ update_domain_block: Изменение блокировки домена
update_status: Изменение постов
actions:
- assigned_to_self_report: "%{name} назначил(а) себя для решения жалобы %{target}"
- change_email_user: "%{name} сменил(а) e-mail пользователя %{target}"
- confirm_user: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
- create_account_warning: "%{name} выдал(а) предупреждение %{target}"
- create_announcement: "%{name} создал(а) новое объявление %{target}"
- create_custom_emoji: "%{name} загрузил(а) новый эмодзи %{target}"
- create_domain_allow: "%{name} внес(ла) домен %{target} в белый список"
- create_domain_block: "%{name} заблокировал(а) домен %{target}"
- create_email_domain_block: "%{name} добавил(а) e-mail домен %{target} в чёрный список"
- create_ip_block: "%{name} создал правило для IP %{target}"
- demote_user: "%{name} разжаловал(а) пользователя %{target}"
- destroy_announcement: "%{name} удалил объявление %{target}"
- destroy_custom_emoji: "%{name} измельчил(а) эмодзи %{target} в пыль"
- destroy_domain_allow: "%{name} убрал домен %{target} из белого списка"
- destroy_domain_block: "%{name} разблокировал(а) домен %{target}"
- destroy_email_domain_block: "%{name} добавил(а) e-mail домен %{target} в белый список"
- destroy_ip_block: "%{name} удалил правило для IP %{target}"
- destroy_status: "%{name} удалил(а) пост пользователя %{target}"
- disable_2fa_user: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}"
- disable_custom_emoji: "%{name} отключил(а) эмодзи %{target}"
- disable_user: "%{name} заморозил(а) пользователя %{target}"
- enable_custom_emoji: "%{name} включил(а) эмодзи %{target}"
- enable_user: "%{name} разморозил(а) пользователя %{target}"
- memorialize_account: "%{name} перевел(а) учётную запись пользователя %{target} в режим памятника"
- promote_user: "%{name} повысил(а) пользователя %{target}"
- remove_avatar_user: "%{name} убрал(а) аватарку пользователя %{target}"
- reopen_report: "%{name} переоткрыл(а) жалобу %{target}"
- reset_password_user: "%{name} сбросил(а) пароль пользователя %{target}"
- resolve_report: "%{name} решил(а) жалобу %{target}"
- sensitive_account: "%{name} пометил медиа %{target} как деликатное"
- silence_account: "%{name} наложил(а) ограничения на видимость постов учётной записи %{target}"
- suspend_account: "%{name} заблокировал(а) учётную запись %{target}"
- unassigned_report: "%{name} сняла назначение жалобы %{target}"
- unsensitive_account: '%{name} снял отметку "деликатное" с медиа %{target}'
- unsilence_account: "%{name} снял ограничения видимости постов пользователя %{target}"
- unsuspend_account: "%{name} снял(а) блокировку с пользователя %{target}"
- update_announcement: "%{name} обновил объявление %{target}"
- update_custom_emoji: "%{name} обновил(а) эмодзи %{target}"
- update_domain_block: "%{name} обновил блокировку домена для %{target}"
- update_status: "%{name} изменил(а) пост пользователя %{target}"
+ assigned_to_self_report_html: "%{name} назначил(а) себя для решения жалобы %{target}"
+ change_email_user_html: "%{name} сменил(а) e-mail пользователя %{target}"
+ confirm_user_html: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
+ create_account_warning_html: "%{name} выдал(а) предупреждение %{target}"
+ create_announcement_html: "%{name} создал(а) новое объявление %{target}"
+ create_custom_emoji_html: "%{name} загрузил(а) новый эмодзи %{target}"
+ create_domain_allow_html: "%{name} разрешил(а) федерацию с доменом %{target}"
+ create_domain_block_html: "%{name} заблокировал(а) домен %{target}"
+ create_email_domain_block_html: "%{name} заблокировал(а) e-mail домен %{target}"
+ create_ip_block_html: "%{name} создал(а) правило для IP %{target}"
+ create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}"
+ demote_user_html: "%{name} разжаловал(а) пользователя %{target}"
+ destroy_announcement_html: "%{name} удалил(а) объявление %{target}"
+ destroy_custom_emoji_html: "%{name} удалил(а) эмодзи %{target}"
+ destroy_domain_allow_html: "%{name} запретил(а) федерацию с доменом %{target}"
+ destroy_domain_block_html: "%{name} снял(а) блокировку с домена %{target}"
+ destroy_email_domain_block_html: "%{name} снял(а) блокировку с e-mail домена %{target}"
+ destroy_ip_block_html: "%{name} удалил(а) правило для IP %{target}"
+ destroy_status_html: "%{name} удалил(а) пост пользователя %{target}"
+ destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}"
+ disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}"
+ disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}"
+ disable_user_html: "%{name} заморозил(а) пользователя %{target}"
+ enable_custom_emoji_html: "%{name} включил(а) эмодзи %{target}"
+ enable_user_html: "%{name} разморозил(а) пользователя %{target}"
+ memorialize_account_html: "%{name} перевел(а) учётную запись пользователя %{target} в статус памятника"
+ promote_user_html: "%{name} повысил(а) пользователя %{target}"
+ remove_avatar_user_html: "%{name} убрал(а) аватарку пользователя %{target}"
+ reopen_report_html: "%{name} повторно открыл(а) жалобу %{target}"
+ reset_password_user_html: "%{name} сбросил(а) пароль пользователя %{target}"
+ resolve_report_html: "%{name} решил(а) жалобу %{target}"
+ sensitive_account_html: "%{name} установил(а) отметку файлов %{target} как «деликатного характера»"
+ silence_account_html: "%{name} наложил(а) ограничения на видимость постов пользователя %{target}"
+ suspend_account_html: "%{name} заблокировал(а) учётную запись %{target}"
+ unassigned_report_html: "%{name} снял(а) назначение жалобы %{target}"
+ unsensitive_account_html: "%{name} снял(а) отметку файлов %{target} как «деликатного характера»"
+ unsilence_account_html: "%{name} снял(а) ограничения видимости постов пользователя %{target}"
+ unsuspend_account_html: "%{name} снял(а) блокировку с пользователя %{target}"
+ update_announcement_html: "%{name} обновил(а) объявление %{target}"
+ update_custom_emoji_html: "%{name} обновил(а) эмодзи %{target}"
+ update_domain_block_html: "%{name} обновил(а) блокировку домена для %{target}"
+ update_status_html: "%{name} изменил(а) пост пользователя %{target}"
deleted_status: "(удалённый пост)"
empty: Журнал пуст.
filter_by_action: Фильтр по действию
@@ -322,10 +327,12 @@ ru:
new:
create: Создать объявление
title: Новое объявление
+ publish: Опубликовать
published_msg: Объявление опубликовано.
scheduled_for: Запланировано на %{time}
scheduled_msg: Объявление добавлено в очередь публикации.
title: Объявления
+ unpublish: Отменить публикацию
unpublished_msg: Объявление скрыто.
updated_msg: Объявление обновлено.
custom_emojis:
@@ -370,7 +377,6 @@ ru:
feature_profile_directory: Каталог профилей
feature_registrations: Регистрация
feature_relay: Ретрансляторы
- feature_spam_check: Анти-спам
feature_timeline_preview: Предпросмотр ленты
features: Возможности
hidden_service: Федерация со скрытыми сервисами
@@ -415,6 +421,8 @@ ru:
silence: Скрытие
suspend: Блокировка
title: Новая блокировка e-mail домена
+ obfuscate: Скрыть доменное имя
+ obfuscate_hint: Частично скрыть доменное имя в списке, если включена публикация списка ограничений домена
private_comment: Приватный комментарий
private_comment_hint: Комментарий к доменной блокировке для внутреннего использования модераторами.
public_comment: Публичный комментарий
@@ -453,9 +461,36 @@ ru:
create: Создать блокировку
title: Новая блокировка по домену
title: Блокировка e-mail доменов
+ follow_recommendations:
+ description_html: "Следуйте рекомендациям, чтобы помочь новым пользователям быстро находить интересный контент. Если пользователь не взаимодействовал с другими в достаточной степени, чтобы сформировать персонализированные рекомендации, вместо этого рекомендуется использовать эти учетные записи. Они пересчитываются на ежедневной основе на основе комбинации аккаунтов с наибольшим количеством недавних взаимодействий и наибольшим количеством местных подписчиков для данного языка."
+ language: Для языка
+ status: Статус
+ suppress: Скрыть рекомендацию
+ suppressed: Скрыта
+ title: Рекомендации подписок
+ unsuppress: Восстановить рекомендацию
instances:
+ back_to_all: Все узлы
+ back_to_limited: Все ограниченные узлы
+ back_to_warning: Все узлы требующие внимания
by_domain: Домен
+ delivery:
+ all: Все
+ clear: Очистить ошибки доставки
+ restart: Перезапустить доставку
+ stop: Остановить доставку
+ title: По доступности
+ unavailable: Недоступные
+ unavailable_message: Доставка невозможна
+ warning: Требующие внимания
+ warning_message:
+ few: Доставка невозможна %{count} дня
+ many: Доставка невозможна %{count} дней
+ one: Доставка невозможна %{count} день
+ other: Доставка невозможна %{count} дня
delivery_available: Доставка возможна
+ delivery_error_days: Дней ошибок доставки
+ delivery_error_hint: Если доставка доставка не удастся в течение %{count} дней, он будет автоматически отмечен недоступным для доставки.
empty: Домены не найдены.
known_accounts:
few: "%{count} известные учётные записи"
@@ -561,6 +596,13 @@ ru:
unassign: Снять назначение
unresolved: Нерешённые
updated_at: Обновлена
+ rules:
+ add_new: Добавить правило
+ delete: Удалить
+ description_html: Хотя большинство утверждает, что прочитали и согласны с условиями обслуживания, обычно люди не читают их до тех пор, пока не возникнет проблема. Упростите просмотр правил вашего сервера с первого взгляда, предоставив их в виде простого маркированного списка. Старайтесь, чтобы отдельные правила были краткими и простыми, но старайтесь не разбивать их на множество отдельных элементов.
+ edit: Редактировать правило
+ empty: Правила сервера еще не определены.
+ title: Правила сервера
settings:
activity_api_enabled:
desc_html: Подсчёт количества локальных постов, активных пользователей и новых регистраций на еженедельной основе
@@ -584,8 +626,6 @@ ru:
users: Залогиненным локальным пользователям
domain_blocks_rationale:
title: Показать обоснование
- enable_bootstrap_timeline_accounts:
- title: Включить подписки по умолчанию для новых пользователей
hero:
desc_html: Отображается на главной странице. Рекомендуется разрешение не менее 600х100px. Если не установлено, используется изображение узла
title: Баннер узла
@@ -596,8 +636,8 @@ ru:
desc_html: Домены, которые были замечены этим узлом среди всей федерации
title: Публикация списка обнаруженных узлов
preview_sensitive_media:
- desc_html: Предпросмотр для ссылок будет отображать миниатюры даже для содержимого, помеченного как деликатное
- title: Показывать деликатные медиафайлы в превью OpenGraph
+ desc_html: Предпросмотр для ссылок будет показывать миниатюры даже для содержимого, помеченного как «деликатного характера»
+ title: Показывать медиафайлы «деликатного характера» в превью OpenGraph
profile_directory:
desc_html: Позволять находить пользователей
title: Включить каталог профилей
@@ -639,9 +679,6 @@ ru:
desc_html: Вы можете добавить сюда собственную политику конфиденциальности, пользовательское соглашение и другие документы. Можно использовать теги HTML
title: Условия использования
site_title: Название сайта
- spam_check_enabled:
- desc_html: Мастодон может автоматически сообщать об учётных записях, отправляющих повторяющиеся нежелательные сообщения. Возможны ложные срабатывания.
- title: Анти-спам
thumbnail:
desc_html: Используется для предпросмотра с помощью OpenGraph и API. Рекомендуется разрешение 1200x630px
title: Картинка узла
@@ -662,8 +699,8 @@ ru:
back_to_account: Назад к учётной записи
batch:
delete: Удалить
- nsfw_off: Снять отметку «деликатного»
- nsfw_on: Отметить как «деликатное»
+ nsfw_off: Снять отметку «деликатного характера»
+ nsfw_on: Отметить как «деликатного характера»
deleted: Удалено
failed_to_execute: Не удалось выполнить
media:
@@ -672,13 +709,18 @@ ru:
no_status_selected: Ничего не изменилось, так как ни один пост не был выделен
title: Посты пользователя
with_media: С файлами
+ system_checks:
+ database_schema_check:
+ message_html: Есть отложенные миграции базы данных. Запустите их, чтобы убедиться, что приложение работает должным образом
+ rules_check:
+ action: Управление правилами сервера
+ message_html: Вы не определили правила сервера.
+ sidekiq_process_check:
+ message_html: Ни один Sidekiq не запущен для %{value} очереди(-ей). Пожалуйста, просмотрите настройки Sidekiq
tags:
accounts_today: Уникальных использований за сегодня
accounts_week: Уникальных использований за эту неделю
breakdown: Разбивка сегодняшнего использования по источникам
- context: Контекст
- directory: В каталоге
- in_directory: "%{count} в каталоге"
last_active: Последняя активность
most_popular: Самые популярные
most_recent: Последние
@@ -695,6 +737,7 @@ ru:
add_new: Добавить
delete: Удалить
edit_preset: Удалить шаблон предупреждения
+ empty: Вы еще не определили пресеты предупреждений.
title: Управление шаблонами предупреждений
admin_mailer:
new_pending_account:
@@ -716,7 +759,7 @@ ru:
remove: Отвязать псевдоним
appearance:
advanced_web_interface: Многоколоночный интерфейс
- advanced_web_interface_hint: 'Если вы хотите использовать всю ширину экрана, расширенный веб-интерфейс позволяет настроить множество различных столбцов, чтобы увидеть столько информации, сколько вы хотите: главную ленту, уведомления, глобальную ленту, любое количество списков и хэштегов.'
+ advanced_web_interface_hint: 'Если вы хотите использовать всю ширину экрана, многоколоночный веб-интерфейс позволяет настроить множество различных столбцов и видеть столько информации, сколько вы захотите: главную ленту, уведомления, глобальную ленту, неограниченное количество списков и хэштегов.'
animations_and_accessibility: Анимации и доступность
confirmation_dialogs: Окна подтверждений
discovery: Обзор
@@ -724,7 +767,7 @@ ru:
body: Mastodon переводится добровольцами.
guide_link: https://sasha-sorokin.gitlab.io/mastodon-ru/
guide_link_text: Каждый может внести свой вклад.
- sensitive_content: Деликатное содержимое
+ sensitive_content: Содержимое деликатного характера
toot_layout: Структура постов
application_mailer:
notification_preferences: Настроить уведомления можно здесь
@@ -944,6 +987,8 @@ ru:
status: Статус
view_proof: Посмотреть подтверждение
imports:
+ errors:
+ over_rows_processing_limit: содержит более %{count} строк
modes:
merge: Объединить
merge_long: Сохранить имеющиеся данные и добавить новые.
@@ -1062,10 +1107,14 @@ ru:
body: 'Вас упомянул(а) %{name} в:'
subject: "%{name} упомянул(а) вас"
title: Новое упоминание
+ poll:
+ subject: Опрос %{name} завершился
reblog:
body: 'Ваш пост был продвинут %{name}:'
subject: "%{name} продвинул(а) ваш пост"
title: Новое продвижение
+ status:
+ subject: "%{name} только что запостил(а)"
notifications:
email_events: События для e-mail уведомлений
email_events_hint: 'Выберите события, для которых вы хотели бы получать уведомления:'
@@ -1082,11 +1131,11 @@ ru:
trillion: трлн
otp_authentication:
code_hint: Для подтверждения введите код, сгенерированный приложением-аутентификатором
- description_html: Если вы включите двухфакторную аутентификацию с помощью приложения-аутентификатора, Вход в систему потребует от вас наличия вашего телефона, который будет генерировать токены для входа в систему.
+ description_html: Подключив двуфакторную авторизацию, для входа в свою учётную запись вам будет необходим смартфон и приложение-аутентификатор на нём, которое будет генерировать специальные временные коды. Без этих кодов войти в учётную запись не получиться, даже если все данные верны, что существенно увеличивает безопасность вашей учётной записи.
enable: Включить
- instructions_html: "Отсканируйте этот QR-код в Google Authenticator или аналогичном приложении TOTP на вашем телефоне. С этого момента приложение будет генерировать токены, которые вам придется вводить при входе."
- manual_instructions: 'Если вы не можете отсканировать QR-код и ввести его вручную, то вот секретный текст:'
- setup: Создан
+ instructions_html: "Отсканируйте этот QR-код с помощью приложения-аутентификатора, такого как Google Authenticator, Яндекс.Ключ или andOTP. После сканирования и добавления, приложение начнёт генерировать коды, которые потребуется вводить для завершения входа в учётную запись."
+ manual_instructions: 'Если отсканировать QR-код не получается или не представляется возможным, вы можете ввести ключ настройки вручную:'
+ setup: Настроить
wrong_code: Введенный код недействителен! Время сервера и время устройства правильно?
pagination:
newer: Новее
@@ -1174,7 +1223,7 @@ ru:
weibo: Weibo
current_session: Текущая сессия
description: "%{browser} на %{platform}"
- explanation: Здесь отображаются все веб-браузеры, в которых выполнен вход в вашу учётную запись. Авторизованные приложения отображаются в другой секции.
+ explanation: Здесь отображаются все браузеры, с которых выполнен вход в вашу учётную запись. Авторизованные приложения находятся в секции «Приложения».
ip: IP
platforms:
adobe_air: Adobe Air
@@ -1214,8 +1263,6 @@ ru:
relationships: Подписки и подписчики
two_factor_authentication: Подтверждение входа
webauthn_authentication: Ключи безопасности
- spam_check:
- spam_detected: Это автоматический отчет. Обнаружен спам.
statuses:
attached:
audio:
@@ -1270,6 +1317,7 @@ ru:
sign_in_to_participate: Войдите, чтобы принять участие в дискуссии
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Адресованный
private: Для подписчиков
private_long: Показывать только подписчикам
public: Для всех
@@ -1279,7 +1327,7 @@ ru:
stream_entries:
pinned: Закреплённый пост
reblogged: продвинул(а)
- sensitive_content: Деликатное содержимое
+ sensitive_content: Содержимое деликатного характера
tags:
does_not_match_previous_name: не совпадает с предыдущим именем
terms:
@@ -1382,7 +1430,7 @@ ru:
otp: Приложение для проверки подлинности
recovery_codes: Коды восстановления
recovery_codes_regenerated: Коды восстановления успешно сгенерированы
- recovery_instructions_html: 'Пожалуйста, сохраните коды ниже в надёжном месте: они понадобятся, чтобы войти в учётную запись, если вы потеряете доступ к своему смартфону. Вы можете вручную переписать их, распечатать и спрятать среди важных документов или, например, в любимой книжке. Каждый код действителен один раз.'
+ recovery_instructions_html: 'Пожалуйста, сохраните коды ниже в надёжном месте: они понадобятся, чтобы войти в учётную запись, если вы потеряете доступ к своему смартфону. Вы можете вручную переписать их, распечатать и спрятать среди важных документов или, например, в любимой книжке. Каждый код действителен только один раз.'
webauthn: Ключи безопасности
user_mailer:
backup_ready:
@@ -1398,7 +1446,7 @@ ru:
warning:
explanation:
disable: Пока ваша учётная запись заморожена, ваши данные остаются нетронутыми, но вы не можете производить никаких действий до разблокировки.
- sensitive: Ваши загруженные медиа-файлы и связанные с ними медиа будут рассматриваться как деликатные.
+ sensitive: Все загружаемые и прикреплённые вами медиафайлы будут расцениваться как «деликатного характера».
silence: Пока действуют данные ограничения, публикуемые вами посты будут видеть исключительно люди, которые на вас уже подписаны на этом узле, вы также можете быть исключены из различных публичных лент. Несмотря на это, остальные пользователи по-прежнему могут подписаться на вас, чтобы читать новые посты.
suspend: Ваша учётная запись заблокирована и все ваши посты и загруженные медиафайлы безвозвратно удалены с этого сервера и других серверов, где у вас были подписчики.
get_in_touch: Вы можете ответить на это письмо, чтобы связаться с сотрудниками %{instance}.
@@ -1407,13 +1455,13 @@ ru:
subject:
disable: Ваша учётная запись %{acct} заморожена
none: "%{acct} вынесено предупреждение"
- sensitive: Ваша учётная запись %{acct} помечена как деликатная
+ sensitive: Ваша учётная запись %{acct} была отмечена как «деликатного содержания»
silence: На учётную запись %{acct} наложены ограничения
suspend: Ваша учётная запись %{acct} была заблокирована
title:
disable: Учётная запись заморожена
none: Предупреждение
- sensitive: Ваш медиафайл был отмечен как деликатный
+ sensitive: Ваши медиафайлы отмечены как «деликатного характера»
silence: На учётную запись наложены ограничения
suspend: Учётная запись заблокирована
welcome:
@@ -1434,11 +1482,8 @@ ru:
tips: Советы
title: Добро пожаловать на борт, %{name}!
users:
- blocked_email_provider: Этот почтовый провайдер не разрешен
follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек
generic_access_help_html: Не можете войти в свою учётную запись? Свяжитесь с %{email} для помощи
- invalid_email: Введенный e-mail неверен
- invalid_email_mx: Адрес электронной почты не существует
invalid_otp_token: Введен неверный код двухфакторной аутентификации
invalid_sign_in_token: Неверный код безопасности
otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email}
@@ -1447,7 +1492,7 @@ ru:
suspicious_sign_in_confirmation: Похоже, вы раньше не входили с этого устройства, и давно не осуществляли вход, поэтому мы отправили вам код безопасности на почту, чтобы подтвердить, что это действительно вы.
verification:
explanation_html: 'Владение ссылками в профиле можно подтвердить. Для этого на указанном сайте должна содержаться ссылка на ваш профиль Mastodon, а у самой ссылки должен быть атрибут rel="me". Что внутри ссылки — значения не имеет. Вот вам пример ссылки:'
- verification: Подтверждение
+ verification: Верификация ссылок
webauthn_credentials:
add: Добавить новый ключ безопасности
create:
diff --git a/config/locales/sc.yml b/config/locales/sc.yml
index 626c7671c..18142cb49 100644
--- a/config/locales/sc.yml
+++ b/config/locales/sc.yml
@@ -2,50 +2,52 @@
sc:
about:
about_hashtag_html: Custos sunt tuts pùblicos etichetados cun #%{hashtag}. Bi podes intrare in cuntatu si tenes unu contu in cale si siat logu de su fediversu.
- about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disignu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!'
+ about_mastodon_html: 'Sa rete sotziale de su benidore: sena publitzidade, sena vigilàntzia corporativa, disinnu èticu e detzentralizatzione! Sias mere de is datos tuos cun Mastodon!'
about_this: Informatziones
active_count_after: ativu
- active_footnote: Utentes Ativos Mensiles (UAM)
+ active_footnote: Utentes cun atividade mensile (UAM)
administered_by: 'Amministradu dae:'
- api: "*API"
+ api: API
apps: Aplicatziones mòbiles
apps_platforms: Imprea Mastodon dae iOS, Android e àteras prataformas
- browse_directory: Nàviga su diretòriu de profilos e filtra segundu interessos
- browse_local_posts: Nàviga unu flussu in direta de messàgios pùblicos de custu serbidore
- browse_public_posts: Nàviga unu flussu in direta de messàgios pùblicos in Mastodon
+ browse_directory: Nàviga in su diretòriu de profilos e filtra segundu interessos
+ browse_local_posts: Nàviga in unu flussu in direta de messàgios pùblicos de custu serbidore
+ browse_public_posts: Nàviga in unu flussu in direta de messàgios pùblicos in Mastodon
contact: Cuntatu
- contact_missing: No impostadu
+ contact_missing: No cunfiguradu
contact_unavailable: No a disponimentu
discover_users: Iscoberi utentes
documentation: Documentatzione
federation_hint_html: Cun unu contu in %{instance} as a pòdere sighire persones in cale si siat serbidore de Mastodon o de su fediversu.
get_apps: Proa un'aplicatzione mòbile
- hosted_on: Mastodon acasagiadu in %{domain}
- instance_actor_flash: 'Custu contu est un''atore virtuale impreadu pro rapresentare su serbidore matessi, no est un''utente individuale. Benit impreadu pro punnas de federatzione e non lu dias dèpere blocare si non cheres blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu.
+ hosted_on: Mastodon allogiadu in %{domain}
+ instance_actor_flash: 'Custu contu est un''atore virtuale impreadu pro rapresentare su pròpiu serbidore, no est un''utente individuale. Benit impreadu pro punnas de federatzione e no ddu dias dèpere blocare si non boles blocare su domìniu intreu, e in cussu casu dias dèpere impreare unu blocu de domìniu.
-'
+ '
learn_more: Àteras informatziones
privacy_policy: Polìtica de riservadesa
+ rules: Règulas de su serbidore
+ rules_html: 'Depes sighire is règulas imbenientes si boles tènnere unu contu in custu serbidore de Mastodon:'
see_whats_happening: Càstia su chi est acontessende
server_stats: 'Istatìsticas de su serbidore:'
- source_code: Còdighe mitza
+ source_code: Còdighe de orìgine
status_count_after:
one: istadu
other: istados
- status_count_before: Autores de
- tagline: Sighi is amigos tuos e iscoberi·nde de noos
+ status_count_before: Atributzione de
+ tagline: Sighi is amistades tuas e iscoberi·nde àteras
terms: Cunditziones de su servìtziu
unavailable_content: Serbidores moderados
unavailable_content_description:
domain: Serbidore
reason: Resone
- rejecting_media: 'Is documentos multimediales de custos serbidores no at a èssere protzessadu o sarvadu e peruna miniadura at a èssere ammustradas, ca tenent bisòngiu de un''incarcu manuale in su documentu originale:'
- rejecting_media_title: Mèdios filtrados
+ rejecting_media: 'Is documentos multimediales de custos serbidores no ant a èssere protzessados o sarvados e peruna miniadura at a èssere ammustrada, ca tenent bisòngiu de unu clic manuale in su documentu originale:'
+ rejecting_media_title: Cuntenutos multimediales filtrados
silenced: 'Is messàgios dae custos serbidores ant a èssere cuados in is lìnias de tempus e is arresonadas pùblicas, e no at a èssere generada peruna notìfica dae is interatziones de is utentes, francu chi nde sias sighende:'
silenced_title: Serbidores a sa muda
suspended: 'Perunu datu de custos serbidores at a èssere protzessadu, immagasinadu o cuncambiadu; est impossìbile duncas cale si siat interatzione o comunicatzione cun is utentes de custos serbidores:'
suspended_title: Serbidores suspèndidos
- unavailable_content_html: Mastodon ti permitit de bìdere su cuntenutu de utentes de cale si siat àteru serbidore de su fediversu. Custas sunt etzetziones chi fatas in custu serbidore particulare.
+ unavailable_content_html: Mastodon ti permitit de bìdere su cuntenutu de utentes de cale si siat àteru serbidore de su fediversu. Custas sunt etzetziones fatas in custu serbidore ispetzìficu.
user_count_after:
one: utente
other: utentes
@@ -60,12 +62,13 @@ sc:
one: Sighidura
other: Sighiduras
following: Sighende
+ instance_actor_flash: Custu contu est un'atore virtuale chi costumaiat a rapresentare su serbidore etotu e nono unu cale si siat utente individuale. Est impreadu pro finalidades de sa federatzione e non si depet suspèndere.
joined: At aderidu su %{date}
last_active: ùrtima atividade
link_verified_on: Sa propiedade de custu ligàmene est istada controllada su %{date}
media: Elementos multimediales
moved_html: "%{name} est istadu trasferidu a %{new_profile_link}:"
- network_hidden: Custa informatzione no a disponimentu
+ network_hidden: Custa informatzione no est a disponimentu
never_active: Mai
nothing_here: Nudda inoghe.
people_followed_by: Gente sighida dae %{name}
@@ -77,12 +80,11 @@ sc:
other: Tuts
posts_tab_heading: Tuts
posts_with_replies: Tuts e rispostas
- reserved_username: Custu nòmine de utente est giai impreadu
roles:
admin: Admin
bot: Bot
group: Grupu
- moderator: Moderadore
+ moderator: Moderatzione
unavailable: Su profilu no est a disponimentu
unfollow: Non sigas prus
admin:
@@ -106,7 +108,7 @@ sc:
changed_msg: As cambiadu s'indiritzu eletrònicu.
current_email: Indiritzu eletrònicu atuale
label: Muda s'indiritzu eletrònicu
- new_email: Indiritzu de eletrònicu nou
+ new_email: Indiritzu eletrònicu nou
submit: Muda s'indiritzu eletrònicu
title: Muda s'indiritzu eletrònicu de %{username}
confirm: Cunfirma
@@ -131,6 +133,7 @@ sc:
follows: Sighende
header: Intestatzione
inbox_url: URL de intrada
+ invite_request_text: Resones pro aderire
invited_by: Invitu dae
ip: IP
joined: At aderidu
@@ -143,7 +146,7 @@ sc:
media_attachments: Allegados multimediales
memorialize: Cunverte in memoriam
memorialized: Memorializadu
- memorialized_msg: As trasformadu %{username} in unu contu de ammentu
+ memorialized_msg: As trasformadu %{username} in unu contu de regordu
moderation:
active: Ativu
all: Totus
@@ -164,13 +167,13 @@ sc:
public: Pùblicu
push_subscription_expires: Sa sutiscritzione PuSH iscadit
redownload: Atualiza su profilu
- redownloaded_msg: Su profilu de %{username} est istadu agiornadu dae s'orìgine
+ redownloaded_msg: Su profilu de %{username} est istadu atualizadu dae s'orìgine
reject: Refuda
reject_all: Refuda totu
rejected_msg: Sa dimanda de registru de %{username} est istada refudada
remove_avatar: Boga immàgine de profilu
remove_header: Boga s'intestatzione
- removed_avatar_msg: S'immàgine de d'àvatar de %{username} est istada bogada
+ removed_avatar_msg: S'immàgine de profilu de %{username} est istada bogada
removed_header_msg: S'immàgine de intestatzione de %{username} est istada bogada
resend_confirmation:
already_confirmed: Custa persone est giai cunfirmada
@@ -181,8 +184,8 @@ sc:
resubscribe: Torra a sutascrìere
role: Permissos
roles:
- admin: Admin
- moderator: Mod
+ admin: Amministratzione
+ moderator: Moderatzione
staff: Personale
user: Utente
search: Chirca
@@ -240,13 +243,13 @@ sc:
disable_user: Disativa utente
enable_custom_emoji: Ativa s'emoji personalizadu
enable_user: Ativa utente
- memorialize_account: Regorda su contu
+ memorialize_account: Torra in unu contu de regordu
promote_user: Promove utente
remove_avatar_user: Cantzella immàgine de profilu
reopen_report: Torra a abèrrere s'informe
reset_password_user: Reseta sa crae
resolve_report: Isorve s'informe
- sensitive_account: Marca sos cuntenutos multimediales in su contu tuo comente sensìbile
+ sensitive_account: Marca is cuntenutos multimediales in su contu tuo comente sensìbiles
silence_account: Pone custu contu a sa muda
suspend_account: Suspende custu contu
unassigned_report: Boga s'assignatzione de custu informe
@@ -255,47 +258,49 @@ sc:
unsuspend_account: Boga custu contu de is contos suspèndidos
update_announcement: Atualiza s'annùntziu
update_custom_emoji: Atualiza s'emoji personalizadu
+ update_domain_block: Atualiza blocu de domìniu
update_status: Atualiza s'istadu
actions:
- assigned_to_self_report: "%{name} s'est auto-assignadu s'informe %{target}"
- change_email_user: "%{name} at mudadu s'indiritzu de posta eletrònica de s'utente %{target}"
- confirm_user: "%{name} at cunfirmadu s'indiritzu de posta eletrònica de s'utente %{target}"
- create_account_warning: "%{name} at imbiadu un'avisu a %{target}"
- create_announcement: "%{name} at creadu un'annùntziu nou %{target}"
- create_custom_emoji: "%{name} at carrigadu un'emoji nou%{target}"
- create_domain_allow: "%{name} at permìtidu sa federatzione cun su domìniu %{target}"
- create_domain_block: "%{name} at blocadu su domìniu %{target}"
- create_email_domain_block: "%{name} at blocadu su domìniu de posta eletrònica %{target}"
- create_ip_block: "%{name} at creadu una règula pro s'IP %{target}"
- demote_user: "%{name} at degradadu s'utente %{target}"
- destroy_announcement: "%{name} at cantzelladu s'annùntziu %{target}"
- destroy_custom_emoji: "%{name} at cantzelladu s'emoji %{target}"
- destroy_domain_allow: "%{name} no at permìtidu sa federatzione cun su domìniu %{target}"
- destroy_domain_block: "%{name} at isblocadu su domìniu %{target}"
- destroy_email_domain_block: "%{name} at isblocadu su domìniu de posta eletrònica %{target}"
- destroy_ip_block: "%{name} at cantzelladu sa règula pro s'IP %{target}"
- destroy_status: "%{name} at eliminadu s'istadu de %{target}"
- disable_2fa_user: "%{name} at disativadu su rechisitu de duos fatores pro s'utente %{target}"
- disable_custom_emoji: "%{name} at disativadu s'emoji %{target}"
- disable_user: "%{name} at disativadu s'atzessu pro s'utente %{target}"
- enable_custom_emoji: "%{name} at ativadu s'emoji %{target}"
- enable_user: "%{name} at ativadu s'atzessu pro s'utente %{target}"
- memorialize_account: "%{name} at cunvertidu su contu %{target} in una pàgina in memoriam"
- promote_user: "%{name} at promòvidu s'utente %{target}"
- remove_avatar_user: "%{name} at cantzelladu s'immàgine de profilu de %{target}"
- reopen_report: "%{name} at torradu a abèrrere s'informe %{target}"
- reset_password_user: "%{name} at restadu sa crae de s'utente %{target}"
- resolve_report: "%{name} at isòrvidu s'informe %{target}"
- sensitive_account: "%{name} at marcadu s'elementu multimediale de %{target} comente sensìbile"
- silence_account: "%{name} at postu su contu de %{target} a sa muda"
- suspend_account: "%{name} at suspèndidu su contu de %{target}"
- unassigned_report: "%{name} at bogadu s'assignatzione de s'informe %{target}"
- unsensitive_account: '%{name} at bogadu sa marcadura "sensìbile" a s''elementu multimediale de %{target}'
- unsilence_account: "%{name} at postu su contu de %{target} a sa muda"
- unsuspend_account: "%{name} at bogadu sa suspensione de su contu de %{target}"
- update_announcement: "%{name} at atualizadu s'annùntziu %{target}"
- update_custom_emoji: "%{name} at atualizadu s'emoji %{target}"
- update_status: "%{name} at atualizadu s'istadu de %{target}"
+ assigned_to_self_report_html: "%{name} s'est auto-assignadu s'informe %{target}"
+ change_email_user_html: "%{name} at mudadu s'indiritzu de posta eletrònica de s'utente %{target}"
+ confirm_user_html: "%{name} at cunfirmadu s'indiritzu de posta eletrònica de s'utente %{target}"
+ create_account_warning_html: "%{name} at imbiadu un'avisu a %{target}"
+ create_announcement_html: "%{name} at creadu un'annùntziu nou %{target}"
+ create_custom_emoji_html: "%{name} at carrigadu un'emoji nou %{target}"
+ create_domain_allow_html: "%{name} at permìtidu sa federatzione cun su domìniu %{target}"
+ create_domain_block_html: "%{name} at blocadu su domìniu %{target}"
+ create_email_domain_block_html: "%{name} at blocadu su domìniu de posta eletrònica %{target}"
+ create_ip_block_html: "%{name} at creadu una règula pro s'IP %{target}"
+ demote_user_html: "%{name} at degradadu s'utente %{target}"
+ destroy_announcement_html: "%{name} at cantzelladu s'annùntziu %{target}"
+ destroy_custom_emoji_html: "%{name} at cantzelladu s'emoji %{target}"
+ destroy_domain_allow_html: "%{name} no at permìtidu sa federatzione cun su domìniu %{target}"
+ destroy_domain_block_html: "%{name} at isblocadu su domìniu %{target}"
+ destroy_email_domain_block_html: "%{name} at isblocadu su domìniu de posta eletrònica %{target}"
+ destroy_ip_block_html: "%{name} at cantzelladu sa règula pro s'IP %{target}"
+ destroy_status_html: "%{name} at eliminadu sa publicatzione de %{target}"
+ disable_2fa_user_html: "%{name} at disativadu su rechisitu de duos fatores pro s'utente %{target}"
+ disable_custom_emoji_html: "%{name} at disativadu s'emoji %{target}"
+ disable_user_html: "%{name} at disativadu s'atzessu pro s'utente %{target}"
+ enable_custom_emoji_html: "%{name} at ativadu s'emoji %{target}"
+ enable_user_html: "%{name} at ativadu s'atzessu pro s'utente %{target}"
+ memorialize_account_html: "%{name} at cunvertidu su contu %{target} in una pàgina in memoriam"
+ promote_user_html: "%{name} at promòvidu s'utente %{target}"
+ remove_avatar_user_html: "%{name} at cantzelladu s'immàgine de profilu de %{target}"
+ reopen_report_html: "%{name} at torradu a abèrrere s'informe %{target}"
+ reset_password_user_html: "%{name} at resetadu sa crae de s'utente %{target}"
+ resolve_report_html: "%{name} at isòrvidu s'informe %{target}"
+ sensitive_account_html: "%{name} at marcadu s'elementu multimediale de %{target} comente sensìbile"
+ silence_account_html: "%{name} at postu su contu de %{target} a sa muda"
+ suspend_account_html: "%{name} at suspèndidu su contu de %{target}"
+ unassigned_report_html: "%{name} at bogadu s'assignatzione de s'informe %{target}"
+ unsensitive_account_html: '%{name} at bogadu sa marcadura "sensìbile" a s''elementu multimediale de %{target}'
+ unsilence_account_html: "%{name} at ativadu is notìficas pro su contu de %{target}"
+ unsuspend_account_html: "%{name} at bogadu sa suspensione de su contu de %{target}"
+ update_announcement_html: "%{name} at atualizadu s'annùntziu %{target}"
+ update_custom_emoji_html: "%{name} at atualizadu s'emoji %{target}"
+ update_domain_block_html: "%{name} at atualizadu su blocu de domìniu pro %{target}"
+ update_status_html: "%{name} at atualizadu sa publicatzione de %{target}"
deleted_status: "(istadu cantzelladu)"
empty: Perunu registru agatadu.
filter_by_action: Filtra pro atzione
@@ -310,10 +315,12 @@ sc:
new:
create: Crea un'annùntziu
title: Annùntziu nou
+ publish: Pùblica
published_msg: As publicadu s'annùntziu.
scheduled_for: Programmadu pro %{time}
scheduled_msg: As programmadu s'annùntziu pro èssere publicadu!
title: Annùntzios
+ unpublish: Annulla sa publicatzione
unpublished_msg: As ritiradu s'annùntziu!
updated_msg: As atualizadu s'annùntziu.
custom_emojis:
@@ -327,7 +334,7 @@ sc:
delete: Cantzella
destroyed_msg: As cantzelladu s'emoji.
disable: Disativa
- disabled: Disativu
+ disabled: Disativadu
disabled_msg: As disativadu s'emoji
emoji: Emoji
enable: Ativa
@@ -339,7 +346,7 @@ sc:
new:
title: Agiunghe emoji personalizadu nou
not_permitted: Non tenes su permissu de fàghere custa atzione
- overwrite: Subraiscrie
+ overwrite: Subrascrie
shortcode: Incurtzadura
shortcode_hint: Mìnimu 2 caràteres, isceti caràteres alfanumèricos e tratigheddos bàscios
title: Emojis personalizados
@@ -356,9 +363,8 @@ sc:
feature_deletions: Eliminatzione de contos
feature_invites: Ligàmenes de invitu
feature_profile_directory: Diretòriu de profilos
- feature_registrations: Registradas
+ feature_registrations: Registros
feature_relay: Ripetidore de federatzione
- feature_spam_check: Anti-àliga
feature_timeline_preview: Pre-visualizatzione de sa lìnia de tempus
features: Caraterìsticas
hidden_service: Federatzione cun servìtzios cuados
@@ -393,17 +399,19 @@ sc:
create: Crea unu blocu
hint: Su blocu de domìniu no at a impedire sa creatzione de contos noos in sa base de datos, ma ant a èssere aplicados in manera retroativa mètodos de moderatzione ispetzìficos subra custos contos.
severity:
- desc_html: "A sa muda at a pònnere is messàgios de custos contos comente invisìbiles a sa gente chi no ddi siat sighende. Sa suspensione at a cantzellare totu su cuntenutu de su contu, elementos multimediales e datos de profilu. Imprea Perunu si boles isceti refudare is archìvios multimediales."
+ desc_html: "A sa muda at a pònnere is messàgios de custos contos comente invisìbiles a sa gente chi no ddos siat sighende. Sa suspensione at a cantzellare totu su cuntenutu de su contu, elementos multimediales e datos de profilu. Imprea Perunu si boles isceti refudare is archìvios multimediales."
noop: Perunu
silence: A sa muda
- suspend: Suspèndidu
+ suspend: Suspensione
title: Blocu de domìniu nou
+ obfuscate: Cua su nòmine de domìniu
+ obfuscate_hint: Cua una parte de su nòmine de domìniu in sa lista si sa visualizatzione de sa lista de domìnios limitados est ativa
private_comment: Cummentu privadu
- private_comment_hint: Lassa unu cummentu a subra de custa limitatzione de domìniu pro impreu internu de s'iscuadra de moderatzione.
+ private_comment_hint: Lassa unu cummentu subra de custa limitatzione de domìniu pro impreu internu de s'iscuadra de moderatzione.
public_comment: Cummentu pùblicu
- public_comment_hint: Lassa unu cummentu pro su pùblicu generale a subra de custa limitatzione de su domìniu, si sa publicatzione de sa lista de limitatziones de domìniu est abilitada.
- reject_media: Refuda documentos multimediales
- reject_media_hint: Cantzellat documentos multimediales sarvados in locale e refudat iscarrigamentos in su benidore. Non rilevante pro is suspensiones
+ public_comment_hint: Lassa unu cummentu pro su pùblicu generale subra de custa limitatzione de su domìniu, si sa publicatzione de sa lista de limitatziones de domìniu est abilitada.
+ reject_media: Refuda elementos multimediales
+ reject_media_hint: Cantzellat elementos multimediales sarvados in locale e refudat iscarrigamentos in su benidore. Non rilevante pro is suspensiones
reject_reports: Refuda informes
reject_reports_hint: Iscarta informes chi benint de custu domìniu. Non rilevante pro is suspensiones
rejecting_media: refudende documentos multimediales
@@ -423,7 +431,7 @@ sc:
undo: Iscontza su blocu de domìniu
view: Bide su blocu de domìniu
email_domain_blocks:
- add_new: Agiunghe noa
+ add_new: Agiunghe nou
created_msg: Domìniu de posta eletrònica blocadu
delete: Cantzella
destroyed_msg: Domìniu de posta eletrònica isblocadu
@@ -434,9 +442,18 @@ sc:
create: Agiunghe unu domìniu
title: Bloca su domìniu de posta eletrònica nou
title: Domìnios de posta eletrònica blocados
+ follow_recommendations:
+ description_html: "Is cussìgios de sighiduras agiudant a is persones noas a agatare deretu cuntenutu interessante. Si una persone at interagidu cun pagu gente e non podet retzire cussìgios de sighiduras personalizados, custos contos ant a èssere ammustrados. Ant a èssere torrados a carculare dae un'ammisturu de contos cun is pertzentuales de cumpromissu prus artos e su nùmeru prus artu de sighiduras pro un'idioma ispetzìficu."
+ language: Pro idioma
+ status: Istadu
+ suppress: Cantzella su cussìgiu de sighidura
+ suppressed: Cantzelladu
+ title: Cussìgios de sighidura
+ unsuppress: Recùpera su cussìgiu de sighidura
instances:
by_domain: Domìniu
delivery_available: Sa cunsigna est a disponimentu
+ empty: Perunu domìniu agatadu.
known_accounts:
one: "%{count} contu connòschidu"
other: "%{count} contos connòschidos"
@@ -462,7 +479,7 @@ sc:
title: Invitos
ip_blocks:
add_new: Crea una règula
- created_msg: As agiuntu una règula IP noa
+ created_msg: Règula IP noa agiunta
delete: Cantzella
expires_in:
'1209600': 2 chidas
@@ -484,7 +501,7 @@ sc:
delete: Cantzella
description_html: Unu ripetidore de federatzione est unu serbidore intermediàriu chi cuncàmbiat volùmenes mannos de tuts pùblicos intre serbidores chi si connetent e bi pùblicant. Podet agiudare a serbidores minores e medianos a iscobèrrere cuntenutu de su fediversu, in manera chi is utentes locales non tèngiant bisòngiu de sighire a manu àtera gente de serbidores remotos.
disable: Disativa
- disabled: Disativu
+ disabled: Disativadu
enable: Ativa
enable_hint: Si abilitadu, su serbidore tuo at a èssere sutascritu a totu is tuts pùblicos de custu ripetidore e bi at a cumintzare a imbiare totu is tuts pùblicos de custu serbidore.
enabled: Ativadu
@@ -513,7 +530,9 @@ sc:
by_target_domain: Domìniu de su contu signaladu
comment:
none: Perunu
- created_at: Signaladu
+ created_at: Sinnaladu
+ forwarded: Torradu a imbiare
+ forwarded_to: Torradu a imbiare a %{domain}
mark_as_resolved: Marca comente a isòrvidu
mark_as_unresolved: Marcare comente a non isòrvidu
notes:
@@ -524,8 +543,8 @@ sc:
placeholder: Descrie is atziones chi as pigadu o cale si siat àtera atualizatzione de importu...
reopen: Torra a abèrrere s'informe
report: 'Informe #%{id}'
- reported_account: Contu signaladu
- reported_by: Signaladu dae
+ reported_account: Contu sinnaladu
+ reported_by: Sinnaladu dae
resolved: Isòrvidu
resolved_msg: Informe isòrvidu.
status: Istadu
@@ -533,13 +552,20 @@ sc:
unassign: Boga s'assignatzione
unresolved: No isòrvidu
updated_at: Atualizadu
+ rules:
+ add_new: Agiunghe règula
+ delete: Cantzella
+ description_html: Mancari su prus nàrgiant chi ant letu e atzetadu is cunditziones de su servìtziu, a su sòlitu is persones non ddu leghent fintzas a cando no essint a campu problemas. Faghe chi siat prus simpre a lèghere is règulas de su serbidore cun un'ograda disponende·ddas isceti in un'elencu puntadu. Chirca de mantènnere onni règula curtza e simpre, ma chirca fintzas de non ddas partzire in medas elementos ispartzinados.
+ edit: Modìfica sa règula
+ empty: Peruna règula de serbidore definida ancora.
+ title: Règulas de su serbidore
settings:
activity_api_enabled:
desc_html: Nùmeru de tuts publicados in locale, utentes ativos e registros noos in perìodos chidajolos
title: Pùblica istatìsticas agregadas subra s'atividade de s'utente
bootstrap_timeline_accounts:
- desc_html: Imprea vìrgulas intre is nòmines de utente. Isceti is contos locales e isblocados ant a funtzionare. Su valore predefinidu cando est bòidu est totu is admins locales.
- title: Sighidura predefinida pro persones noas
+ desc_html: Imprea vìrgulas intre is nòmines de utente. Isceti is contos locales e isblocados ant a funtzionare. Su valore predefinidu cando est bòidu est totu is admins locales
+ title: Cussìgia custos contos a is persones noas
contact_information:
email: Indiritzu eletrònicu de impresa
username: Nòmine de utente de su cuntatu
@@ -556,8 +582,6 @@ sc:
users: Pro utentes locales in lìnia
domain_blocks_rationale:
title: Ammustra sa resone
- enable_bootstrap_timeline_accounts:
- title: Ativa s sighiduras predefinidas pro is persones noas
hero:
desc_html: Ammustradu in sa pàgina printzipale. Cussigiadu a su mancu 600x100px. Si no est cunfiguradu, at a èssere ammustradu cussu de su serbidore
title: Immàgine de eroe
@@ -566,12 +590,12 @@ sc:
title: Immàgine de su personàgiu
peers_api_enabled:
desc_html: Is nòmines de domìniu chi custu serbidore at agatadu in su fediversu
- title: Pùblica sa lista de serbidores iscobertos
+ title: Pùblica sa lista de serbidores iscobertos in s'API
preview_sensitive_media:
- desc_html: Is antiprimas de ligòngios de àteros sitos web ant a ammustrare una miniadura mancari is mèdios de comunicatzione siant marcados comente a sensìbiles
- title: Ammustra mèdios sensìbiles in sas previsualizatziones de OpenGraph
+ desc_html: Is previsualizatziones de ligòngios de àteros sitos web ant a ammustrare una miniadura fintzas cando is elementos multimediales siant marcados comente a sensìbiles
+ title: Ammustra elementos multimediales sensìbiles in is previsualizatziones de OpenGraph
profile_directory:
- desc_html: Permite a is persone de èssere iscobertas
+ desc_html: Permite a is persones de èssere iscobertas
title: Ativa diretòriu de profilos
registrations:
closed_message:
@@ -581,8 +605,11 @@ sc:
desc_html: Permite a chie si siat de cantzellare su contu suo
title: Aberi s'eliminatzione de su contu
min_invite_role:
- disabled: Perunu
+ disabled: Nemos
title: Permite invitos de
+ require_invite_text:
+ desc_html: Cando is registratziones rechedent s'aprovatzione manuale, faghe chi a incarcare su butone "Pro ite ti boles iscrìere?" siat obligatòriu e no a praghere
+ title: Rechede a is persones noas chi iscriant una resone prima de aderire
registrations_mode:
modes:
approved: Aprovatzione rechesta pro si registrare
@@ -596,7 +623,7 @@ sc:
desc_html: Ammustra un'insigna de personale in sa pàgina de utente
title: Ammustra insigna de personale
site_description:
- desc_html: Paràgrafu de introdutzione a s'API. Descrie ite rendet ispatziale custu serbidore de Mastodon e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>.
+ desc_html: Paràgrafu de introdutzione a s'API. Descrie pro ite custu serbidore de Mastodon siat ispetziale e cale si siat àtera cosa de importu. Podes impreare etichetas HTML, mescamente <a> e <em>.
title: Descritzione de su serbidore
site_description_extended:
desc_html: Unu logu adatu pro publicare su còdighe de cumportamentu, règulas, diretivas e àteras caraterìsticas ispetzìficas de su serbidore tuo. Podes impreare etichetas HTML
@@ -605,12 +632,9 @@ sc:
desc_html: Ammustradu in sa barra laterale e in is meta-etichetas. Descrie ite est Mastodon e pro ite custu serbidore est ispetziale in unu paràgrafu.
title: Descritzione curtza de su serbidore
site_terms:
- desc_html: Podes iscriere sa tua normativa de riservadesa pròpia, cunditziones de servìtziu e àteras normas legales. Podes impreare etichetas HTML
- title: Termes de su servìtziu personalizados
+ desc_html: Podes iscrìere sa normativa de riservadesa tua, cunditziones de servìtziu e àteras normas legales. Podes impreare etichetas HTML
+ title: Cunditziones de su servìtziu personalizadas
site_title: Nòmine de su serbidore
- spam_check_enabled:
- desc_html: Mastodon podet signalare in automàticu contos chi imbiant messàgios non rechestos in manera repetitiva. Bi podent èssere falsos positivos.
- title: Automatzione anti-spam
thumbnail:
desc_html: Impreadu pro otènnere pre-visualizatziones pro mèdiu de OpenGraph e API. Cussigiadu 1200x630px
title: Miniadura de su serbidore
@@ -641,13 +665,18 @@ sc:
no_status_selected: Perunu istadu est istadu mudadu dae chi non nd'as seletzionadu
title: Istados de su contu
with_media: Cun elementos multimediales
+ system_checks:
+ database_schema_check:
+ message_html: Ddoe at tràmudas de base de datos in suspesu. Pone·ddas in esecutzione pro ti assegurare chi s'aplicatzione funtzionet comente si tocat
+ rules_check:
+ action: Gesti is règulas de su serbidore
+ message_html: No as cunfiguradu peruna règula de su serbidore.
+ sidekiq_process_check:
+ message_html: Perunu protzessu Sidekiq est in esecutzione pro sa coa(s) %{value}. Revisiona is cunfiguratziones de Sidekiq
tags:
accounts_today: Impreos ùnicos atuales
accounts_week: Impreos ùnicos de custa chida
breakdown: Detàllios de s'impreu atuale pro orìgine
- context: Cuntestu
- directory: In su diretòriu
- in_directory: "%{count} in su diretòriu"
last_active: Ùrtima atividade
most_popular: Prus populares
most_recent: Prus reghentes
@@ -664,17 +693,18 @@ sc:
add_new: Agiunghe noa
delete: Cantzella
edit_preset: Modìfica s'avisu predefinidu
+ empty: No as cunfiguradu ancora perunu avisu predefinidu.
title: Gesti is cunfiguratziones predefinidas de is avisos
admin_mailer:
new_pending_account:
body: Is detàllios de su contu nou sunt a suta. Podes aprovare o refudare custa rechesta.
subject: Contu nou de revisionare in %{instance} (%{username})
new_report:
- body: "%{reporter} at signaladu %{target}"
- body_remote: Calicunu de su domìniu %{domain} at signaladu %{target}
+ body: "%{reporter} at sinnaladu %{target}"
+ body_remote: Una persone de su domìniu %{domain} at sinnaladu %{target}
subject: Informe nou pro %{instance} (#%{id})
new_trending_tag:
- body: 'S''eticheta #%{name} est in tendèntzia oe, ma non est istada revisionada in passadu. No at a èssere ammustrada in pùblicu francu chi ddu permitas; si sarvas formulàriu sena ddu modificare no ddu as a bìdere mai prus.'
+ body: 'S''eticheta #%{name} est in tendèntzia oe, ma no est istada revisionada in passadu. No at a èssere ammustrada in pùblicu francu chi ddu permitas; si sarvas su formulàriu sena ddu modificare, no ddu as a bìdere mai prus.'
subject: Eticheta noa de revisionare in %{instance} (#%{name})
aliases:
add_new: Crea unu nomìngiu
@@ -685,7 +715,7 @@ sc:
remove: Disconnete su nomìngiu
appearance:
advanced_web_interface: Interfache web avantzada
- advanced_web_interface_hint: 'Si impreare totu sa largària de s''ischermu, s''interfache web avantzada ti permitit de cunfigurare diversas colunnas pro bìdere meda prus informatzione in contemporànea: printzipale, notìficas, lìnia de tempus federada e cale si siat nùmeru de listas e etichetas.'
+ advanced_web_interface_hint: 'Si boles impreare totu sa largària de s''ischermu, s''interfache web avantzada ti permitit de cunfigurare diversas colunnas pro bìdere meda prus informatzione in contemporànea: printzipale, notìficas, lìnia de tempus federada e cale si siat nùmeru de listas e etichetas.'
animations_and_accessibility: Animatziones e atzessibilidade
confirmation_dialogs: Diàlogos de cunfirmatzione
discovery: Iscoberta
@@ -750,8 +780,8 @@ sc:
confirming: Isetende chi sa posta eletrònica siat cumpletada.
functional: Su contu tuo est operativu.
pending: Sa dimanda tua est in protzessu de revisione dae su personale nostru. Podet serbire unu pagu de tempus. As a retzire unu messàgiu eletrònicu si sa dimanda est aprovada.
- redirecting_to: Su contu tuo est inativu ca in die de oe est torrende a indiritzare a %{acct}.
- too_fast: Mòdulu imbiadu tropu a lestru, torra a proare.
+ redirecting_to: Su contu tuo est inativu pro ite in die de oe est torrende a indiritzare a %{acct}.
+ too_fast: Formulàriu imbiadu tropu a lestru, torra a proare.
trouble_logging_in: Tenes problemas de atzessu?
use_security_key: Imprea una crae de seguresa
authorize_follow:
@@ -760,12 +790,12 @@ sc:
error: Faddina in sa chirca de su contu remotu
follow: Sighi
follow_request: 'As imbiadu una dimanda de sighidura a:'
- following: 'Fatu! Immoe ses sighende:'
+ following: 'Fatu! Immoe ses sighende a:'
post_follow:
close: O, podes serrare custa ventana.
return: Ammustra su profilu de custa persone
web: Bae a su situ web
- title: Sighi %{acct}
+ title: Sighi a %{acct}
challenge:
confirm: Sighi
hint_html: "Cussìgiu: No t'amus a torrare a dimandare sa crae in s'ora imbeniente."
@@ -777,8 +807,8 @@ sc:
invalid_signature: no est una firma Ed25519 vàlida
date:
formats:
- default: "%d %b %Y"
- with_month_name: "%d %B %Y"
+ default: "%d %b, %Y"
+ with_month_name: "%d %B, %Y"
datetime:
distance_in_words:
about_x_hours: "%{count} o"
@@ -823,7 +853,7 @@ sc:
'406': Custa pàgina no est a disponimentu in su formadu chi as pregontadu.
'410': Sa pàgina chi ses chirchende no esistet prus.
'422':
- content: Faddina in sa verìfica de seguresa. Ses blochende is boboettos?
+ content: Faddina in sa verìfica de seguresa. Ses blochende is testimòngios?
title: Faddina in sa verìfica de seguresa
'429': Tropu rechestas
'500':
@@ -853,7 +883,7 @@ sc:
add_new: Agiunghe noa
errors:
limit: As giai evidentziadu sa cantidade màssima de etichetas
- hint_html: "Ite sunt is etichetas in evidèntzia? Sunt ammustradas in evidèntzia in su profilu pùblicu tuo e permitint a sa gente de navigare is messàgios pùblicos tuos in cussas etichetas ispetzìficas. Sunt un'aina perfeta pro tènnere unu registru de òperas creativas o progetos longos."
+ hint_html: "Ite sunt is etichetas in evidèntzia? Sunt ammustradas in evidèntzia in su profilu pùblicu tuo e permitint a sa gente de navigare is messàgios pùblicos tuos in cussas etichetas ispetzìficas. Sunt unu traste perfetu pro tènnere unu registru de òperas creativas o progetos longos."
filters:
contexts:
account: Profilos
@@ -900,26 +930,28 @@ sc:
invalid_token: Is còdighes de autorizatzione de Keybase sunt hash de firmas e depent tènnere 66 caràteres esadetzimales
verification_failed: Keybase non reconnoschet custu còdighe de autorizatzione che a firma de s'utente de Keybase %{kb_username}. Torra·bi a proare dae Keybase.
wrong_user: Impossìbile creare una proa pro %{proving} cando as fatu s'atzessu che a %{current}. Intra che a %{proving} e torra·bi a proare.
- explanation_html: Inoghe podes collegare critograficamente is àteras identidades tuas dae àteras prataformas, che a Keybase. Custu permitit a àteras persones de t'imbiare messàgios tzifrados in cussas prataformas e de tènnere sa seguresa chi sos cuntenutos chi lis mandas benit dae tene.
+ explanation_html: Inoghe podes collegare critograficamente is àteras identidades tuas dae àteras prataformas, che a Keybase. Custu permitit a àteras persones de t'imbiare messàgios tzifrados in cussas prataformas e de tènnere sa seguresa chi is cuntenutos chi ddis ses imbiende benint dae tene.
i_am_html: So %{username} in %{service}.
identity: Identidade
inactive: Inativu
- publicize_checkbox: 'E imbiat custu tut:'
+ publicize_checkbox: 'E imbia custu tut:'
publicize_toot: 'Verificadu! So %{username} in %{service}: %{url}'
remove: Boga sa proa dae su contu
removed: Proa bogada dae su contu
status: Istadu de verìfica
- view_proof: Bìdere sa proa
+ view_proof: Ammustra sa proa
imports:
+ errors:
+ over_rows_processing_limit: cuntenet prus de %{count} filas
modes:
merge: Uni
merge_long: Mantene is registros chi esistint e agiunghe·nde àteros
- overwrite: Subraiscrie
+ overwrite: Subrascrie
overwrite_long: Sostitui is registros atuales cun cussos noos
preface: Podes importare datos chi as esportadu dae unu àteru serbidore, che a sa lista de sa gente chi ses sighende o blochende.
success: Datos carrigados; ant a èssere protzessados luego
types:
- blocking: Lista de blocados
+ blocking: Lista de blocos
bookmarks: Sinnalibros
domain_blocking: Lista domìnios blocados
following: Lista de sighiduras
@@ -943,7 +975,7 @@ sc:
one: 1 impreu
other: "%{count} impreos"
max_uses_prompt: Sena lìmite
- prompt: Gènera e cumpartzi ligàmenes cun àteras persones pro dare atzessu a custu serbidore
+ prompt: Gènera e cumpartzi ligàmenes cun àteras persones pro donare atzessu a custu serbidore
table:
expires_at: Iscadit
uses: Impreos
@@ -963,7 +995,7 @@ sc:
cancelled_msg: Indiritzamentu annulladu.
errors:
already_moved: est su pròpiu contu a su chi as giai tramudadu
- missing_also_known_as: no est unu nomìngiu de custu countu
+ missing_also_known_as: no est unu nomìngiu de custu contu
move_to_self: non podet èssere su contu atuale
not_found: no agatadu
on_cooldown: Ses in perìodu de pàusa intre una tràmuda e s'àtera
@@ -990,9 +1022,9 @@ sc:
moderation:
title: Moderatzione
move_handler:
- carry_blocks_over_text: Custu utente s'est tramudadu dae %{acct}, chi as blocadu.
- carry_mutes_over_text: Custu utente s'est tramudadu dae %{acct}, chi as impostadu a sa muda.
- copy_account_note_text: 'Custu utente s''est tramudadu dae %{acct}, custas sunt sas notas antepostas tuas chi li pertocant:'
+ carry_blocks_over_text: Custa persone s'est tramudada dae %{acct}, chi as blocadu.
+ carry_mutes_over_text: Custa persone s'est tramudada dae %{acct}, chi as postu a sa muda.
+ copy_account_note_text: 'Custa persone s''est tramudada dae %{acct}, custas sunt is notas antepostas tuas chi ddi pertocant:'
notification_mailer:
digest:
action: Ammustra totu is notìficas
@@ -1022,11 +1054,15 @@ sc:
action: Risponde
body: "%{name} t'at mentovadu in:"
subject: "%{name} t'at mentovadu"
- title: Mentovu nou
+ title: Mèntovu nou
+ poll:
+ subject: Su sondàgiu de %{name} est acabadu
reblog:
body: "%{name} at cumpartzidu s'istadu tuo:"
subject: "%{name} at cumpartzidu s'istadu tuo"
title: Cumpartzidura noa
+ status:
+ subject: "%{name} at publicadu cosa"
notifications:
email_events: Eventos pro notìficas cun posta eletrònica
email_events_hint: 'Seletziona eventos pro is chi boles retzire notìficas:'
@@ -1042,13 +1078,13 @@ sc:
thousand: m
trillion: Bln
otp_authentication:
- code_hint: Inserta·nche su còdighe generadu dae s'aplicatzione di autenticatzione pro cunfirmare
+ code_hint: Inserta·nche su còdighe generadu dae s'aplicatzione de autenticatzione pro cunfirmare
description_html: Si as a abilitare s'autenticatzione in duas fases impreende un'aplicatzione de autenticatzione, pro s'intrada as a dèpere tènnere in fatu su telèfonu tuo, chi at a ingendrare getones pro ti fàghere intrare.
enable: Ativa
- instructions_html: "Iscansi custu còdighe QR in s'autenticadore de Google o in un'aplicatzione TOTP simigiante in su telèfonu tuo. Dae como a in antis, cuss'aplicatzione at a ingendrare getones chi as a dèpere insertare pro pòdere fàghere s'atzessu."
- manual_instructions: 'Si non podet iscansire su còdighe QR e tenes bisòngiu de dd''insertare manualmente, inoghe ddoe est su còdighe segretu in testu craru:'
+ instructions_html: "Iscansiona custu còdighe QR in s'autenticadore de Google o in un'àtera aplicatzione TOTP in su telèfonu tuo. Dae immoe, cussa aplicatzione at a ingendrare getones chi as a dèpere insertare pro pòdere fàghere s'atzessu."
+ manual_instructions: 'Si non podes iscansionare su còdighe QR e tenes bisòngiu de ddu insertare a manu, inoghe ddoe est su còdighe segretu in testu craru:'
setup: Cunfigura
- wrong_code: Su còdighe insertadu no est vàlidu! S'ora de su serbidore e de su dispositivu sunt curretas?
+ wrong_code: Su còdighe insertadu no est vàlidu. S'ora de su serbidore e de su dispositivu sunt curretas?
pagination:
newer: Prus reghente
next: Sighi
@@ -1172,11 +1208,9 @@ sc:
notifications: Notìficas
preferences: Preferèntzias
profile: Profilu
- relationships: Persones chi sighis e chi ti sighint
+ relationships: Gente chi sighis e sighiduras
two_factor_authentication: Autenticatzione de duos fatores
webauthn_authentication: Craes de seguresa
- spam_check:
- spam_detected: Custu est un'informe automàticu. Àliga rilevada.
statuses:
attached:
audio:
@@ -1196,7 +1230,7 @@ sc:
other: 'cuntenet is etichetas non permìtidas: %{tags}'
errors:
in_reply_not_found: Ses chirchende de rispòndere a unu tut chi no esistit prus.
- language_detection: Rileva sa limba in automàticu
+ language_detection: Rileva s'idioma in automàticu
open_in_web: Aberi in sa web
over_character_limit: lìmite de caràteres de %{max} superadu
pin_errors:
@@ -1216,9 +1250,10 @@ sc:
show_newer: Ammustra is prus noos
show_older: Ammustra is prus betzos
show_thread: Ammustra su tema
- sign_in_to_participate: Cumintzat sa sessione pro partetzipare in s'arresonada
+ sign_in_to_participate: Identìfica·ti pro partetzipare in s'arresonada
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Deretu
private: Isceti pro chie ti sighit
private_long: Ammustra isceti a chie ti sighit
public: Pùblicu
@@ -1238,20 +1273,20 @@ sc:
Pro ite cosas impreamus is informatziones tuas?
-
-
@@ -1259,7 +1294,7 @@ sc:
Comente amparamus is informatziones tuas?
-
@@ -1280,35 +1315,35 @@ sc:
Impreamus is testimòngios?
-
- Rivelamus carchi informatzione a tertzas partes?
+ Rivelamus calicuna informatzione a tertzas partes?
- Impreu de custu situ dae arte de pitzinnos
+ Impreu de custu situ dae parte de minores
Modìficas a sa polìtica de riservadesa nostra
- rel="me". Su testu cuntenutu in su ligòngiu no est de importu. Custu est un''esèmpiu:'
verification: Verìfica
webauthn_credentials:
add: Agiunghe una crae de seguresa noa
create:
- error: Ddoe est istadu unu problema cun s'agiunta de sa crae de seguresa tua. Torra a proare.
+ error: Ddoe at àpidu unu problema cun s'agiunta de sa crae de seguresa tua. Torra a proare.
success: Sa crae de seguresa tua est istada agiunta.
delete: Cantzella
delete_confirmation: Seguru chi boles cantzellare custa crae de seguresa?
description_html: Si permites s'autenticatzione cun crae de seguresa, as a tènnere bisòngiu de impreare una de is craes de seguresa tuas pro ti identificare.
destroy:
- error: Ddoe est istadu unu problema cun sa cantzelladura de sa crae de seguresa tua. Torra a proare.
+ error: Ddoe at àpidu unu problema cun sa cantzelladura de sa crae de seguresa tua. Torra a proare.
success: Sa crae de seguresa tua est istada cantzellada.
invalid_credential: Crae de seguresa non vàlida
nickname_hint: Inserta su nomìngiu de sa crae de seguresa tua noa
diff --git a/config/locales/si.yml b/config/locales/si.yml
new file mode 100644
index 000000000..568a148dd
--- /dev/null
+++ b/config/locales/si.yml
@@ -0,0 +1,235 @@
+---
+si:
+ about:
+ about_this: පිලිබඳව
+ active_count_after: සක්රීයයි
+ api: යෙ.ක්ර. මු. (API)
+ apps: ජංගම යෙදුම්
+ learn_more: තව දැනගන්න
+ privacy_policy: රහස්යතා ප්රතිපත්තිය
+ rules: සේවාදායකයේ නීති
+ status_count_after:
+ one: තත්වය
+ other: තත්වයන්
+ terms: සේවාවේ කොන්දේසි
+ unavailable_content_description:
+ domain: සේවාදායකය
+ reason: හේතුව
+ suspended_title: අත්හිටවූ සේවාදායකයන්
+ user_count_after:
+ one: පරිශීලක
+ other: පරිශීලකයින්
+ accounts:
+ media: මාධ්යය
+ roles:
+ admin: පරිපාලක
+ bot: ස්වයං ක්රමලේඛය
+ group: සමූහය
+ admin:
+ accounts:
+ are_you_sure: ඔබට විශ්වාසද?
+ by_domain: වසම
+ change_email:
+ current_email: වත්මන් වි-තැපෑල
+ label: වි-තැපෑල වෙනස් කරන්න
+ new_email: නව විද්යුත් තැපෑල
+ submit: වි-තැපෑල වෙනස් කරන්න
+ title: "%{username} සඳහා වි-තැපෑල වෙනස් කරන්න"
+ confirm: සනාථ කරන්න
+ confirmed: සනාථ කර ඇත
+ confirming: සනාථ කරමින්
+ domain: වසම
+ edit: සංස්කරණය
+ email: විද්යුත් තැපෑල
+ email_status: වි-තැපෑලෙහි තත්වය
+ enabled: සබල කර ඇත
+ ip: අ.ජා. කෙ. (IP)
+ location:
+ all: සියල්ල
+ local: ස්ථානීය
+ remote: දුරස්ථ
+ title: ස්ථානය
+ login_status: පිවිසීමේ තත්වය
+ media_attachments: මාධ්ය ඇමුණුම්
+ moderation:
+ active: සක්රීයයි
+ all: සියල්ල
+ suspended: අත්හිටුවන ලදි
+ perform_full_suspension: අත්හිටුවන්න
+ protocol: කෙටුම්පත
+ reject: ප්රතික්ෂේප
+ role: අවසරයන්
+ roles:
+ admin: පරිපාලක
+ staff: කාර්ය මණ්ඩලය
+ user: පරිශීලක
+ search: සොයන්න
+ sensitive: සංවේදී
+ silence: සීමාව
+ statuses: තත්වයන්
+ suspended: අත්හිටුවන ලදි
+ title: ගිණුම්
+ web: වියමන
+ action_logs:
+ action_types:
+ create_ip_block: අ.ජා. කෙ. (IP) නීතියක් සාදන්න
+ enable_user: පරිශීලක සබල කරන්න
+ announcements:
+ live: සජීවී
+ new:
+ create: නිවේදනය සාදන්න
+ title: නව නිවේදනය
+ published_msg: නිවේදනය සාර්ථකව ප්රකාශයට පත් කරන ලදි!
+ title: නිවේදන
+ custom_emojis:
+ by_domain: වසම
+ copy: පිටපත්
+ create_new_category: නව ප්රවර්ගයක් සාදන්න
+ list: ලැයිස්තුව
+ upload: උඩුගත කරන්න
+ dashboard:
+ features: විශේෂාංග
+ open_reports: වාර්තා විවෘත කරන්න
+ software: මෘදුකාංගය
+ title: උපකරණ පුවරුව
+ domain_blocks:
+ domain: වසම
+ new:
+ severity:
+ suspend: අත්හිටුවන්න
+ private_comment: පුද්ගලික අදහස
+ public_comment: ප්රසිද්ධ අදහස
+ reject_reports: වාර්තා ප්රතික්ෂේප කරන්න
+ rejecting_media: මාධ්ය වාර්තා ප්රතික්ෂේප කරමින්
+ rejecting_reports: වාර්තා ප්රතික්ෂේප කරමින්
+ severity:
+ suspend: අත්හිටුවන ලදි
+ show:
+ undo: පෙරසේ
+ email_domain_blocks:
+ domain: වසම
+ new:
+ create: වසම එකතු කරන්න
+ title: අවහිර කළ වි-තැපැල් වසම්
+ instances:
+ by_domain: වසම
+ moderation:
+ all: සියල්ල
+ private_comment: පුද්ගලික අදහස
+ public_comment: ප්රසිද්ධ අදහස
+ ip_blocks:
+ title: අ.ජා. කෙ. (IP) නීති
+ relays:
+ disable: අබල කරන්න
+ enable: සබල කරන්න
+ enabled: සබල කර ඇත
+ status: තත්වය
+ reports:
+ are_you_sure: ඔබට විශ්වාසද?
+ by_target_domain: වාර්තා කළ ගිණුමෙහි වසම
+ notes:
+ create: සටහන එකතු කරන්න
+ report: "@%{id} වාර්තා කරන්න"
+ reported_account: වාර්තා කළ ගිණුම
+ status: තත්වය
+ title: වාර්තා
+ settings:
+ site_title: සේවාදායකයේ නම
+ statuses:
+ media:
+ title: මාධ්යය
+ application_mailer:
+ salutation: "%{name},"
+ auth:
+ change_password: මුර පදය
+ login: පිවිසෙන්න
+ logout: නික්මෙන්න
+ status:
+ account_status: ගිණුමේ තත්වය
+ authorize_follow:
+ post_follow:
+ web: වියමන ට යන්න
+ date:
+ formats:
+ default: "%b %d, %Y"
+ with_month_name: "%B %d, %Y"
+ datetime:
+ distance_in_words:
+ less_than_x_seconds: මේ දැන්
+ errors:
+ '400': The request you submitted was invalid or malformed.
+ '403': You don't have permission to view this page.
+ '404': The page you are looking for isn't here.
+ '406': This page is not available in the requested format.
+ '410': The page you were looking for doesn't exist here anymore.
+ '422':
+ '429': Too many requests
+ '500':
+ '503': The page could not be served due to a temporary server failure.
+ exports:
+ archive_takeout:
+ date: දිනය
+ size: ප්රමාණය
+ lists: ලැයිස්තු
+ storage: මාධ්ය ගබඩාව
+ filters:
+ contexts:
+ account: පැතිකඩයන්
+ notifications: දැනුම්දීම්
+ edit:
+ title: පෙරහන සංස්කරණය
+ index:
+ title: පෙරහන්
+ new:
+ title: නව පෙරහනක් එකතු කරන්න
+ footer:
+ developers: සංවර්ධකයින්
+ more: තව…
+ resources: සම්පත්
+ identity_proofs:
+ identity: අනන්යතාව
+ imports:
+ upload: උඩුගත කරන්න
+ invites:
+ expires_in:
+ '1800': විනාඩි 30
+ '21600': හෝරා 6
+ '3600': හෝරා 1
+ '43200': හෝරා 12
+ '604800': සති 1
+ '86400': දින 1
+ sessions:
+ browser: අතිරික්සුව
+ browsers:
+ alipay: අලිපේ
+ blackberry: බ්ලැක්බෙරි
+ chrome: ක්රෝම්
+ edge: මයික්රොසොෆ්ට් එඩ්ගේ
+ electron: ඉලෙක්ට්රෝන්
+ firefox: ෆයර්ෆොක්ස්
+ generic: නොදන්නා අතිරික්සුවකි
+ ie: ඉන්ටර්නෙට් එක්ස්ප්ලෝරර්
+ micro_messenger: මයික්රොමැසෙන්ජර්
+ opera: ඔපෙරා
+ otter: ඔටර්
+ safari: සෆාරි
+ weibo: වෙයිබො
+ ip: අ.ජා. කෙ. (IP)
+ platforms:
+ adobe_air: ඇඩෝබි එයාර්
+ android: ඇන්ඩ්රොයිඩ්
+ blackberry: බ්ලැක්බෙරි
+ chrome_os: ක්රෝම් ඕඑස්
+ firefox_os: ෆයර්ෆොක්ස් ඕඑස්
+ ios: අයිඕඑස්
+ linux: ලිනක්ස්
+ mac: මැක්ඕඑස්
+ windows: වින්ඩෝස්
+ windows_mobile: වින්ඩෝස් මොබයිල්
+ windows_phone: වින්ඩෝස් පෝන්
+ settings:
+ account: ගිණුම
+ account_settings: ගිණුමේ සැකසුම්
+ two_factor_authentication:
+ edit: සංස්කරණය
+ webauthn: ආරක්ෂිත යතුරු
diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml
new file mode 100644
index 000000000..252f9fd5a
--- /dev/null
+++ b/config/locales/simple_form.af.yml
@@ -0,0 +1 @@
+af:
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 63f122b78..e02e87fcb 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -12,7 +12,14 @@ ar:
admin_account_action:
include_statuses: سيرى المستخدم أي مِن التبويقات تسببت في إجراء الإشراف أو التحذير
send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه
+ text_html: اختياري، يمكنك استخدام بناء التبويق. يمكنك إضافة إعدادات تحذير مسبقة لتوفير الوقت
type_html: اختر ما تود إجراؤه على %{acct}
+ types:
+ disable: منع المستخدم من استخدام حسابه، ولكن لا تَقم بحذف أو إخفاء محتواه.
+ none: استخدم هذه لإرسال تحذير للمستخدم، دون تشغيل أو إثارة أي إجراء آخر.
+ sensitive: إجبار جميع مرفقات الوسائط لهذا المستخدم على أن تكون حساسة.
+ silence: منع المستخدم من أن يكون قادراً على النشر للعامة، وإخفاء مشاركاته وإشعاراته من الذين لا يُتابعِونه.
+ suspend: منع أي تفاعل من أو إلى هذا الحساب، وحذف محتوياته، يمكن الرجوع عن هذا القرار في غضون 30 يوماً.
warning_preset_id: اختياري. يمكنك إضافة نص مخصص إلى نهاية النموذج
announcement:
all_day: إن أختير، سيتم عرض تواريخ النطاق الزمني فقط
@@ -53,6 +60,9 @@ ar:
whole_word: إذا كانت الكلمة أو العبارة مكونة من أرقام وحروف فقط سوف يتم تطبيقها فقط عند مطابقة الكلمة ككل
domain_allow:
domain: سيكون بإمكان هذا النطاق جلب البيانات من هذا الخادم ومعالجة وتخزين البيانات الواردة منه
+ email_domain_block:
+ domain: يمكن لهذا أن يكون اسم النطاق الذي يظهر في عنوان البريد الإلكتروني، سجل MX الذي يُقرر هذا النطاق إليه، أو IP الخادم الذي يقرره سجل MX. وسيتم التحقق من ذلك عند تسجيل المستخدم وسيتم رفض التسجيل.
+ with_dns_records: سوف تُبذل محاولة لحل سجلات DNS الخاصة بالنطاق المعني، كما ستُمنع النتائج
featured_tag:
name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:'
form_challenge:
@@ -61,8 +71,19 @@ ar:
data: ملف CSV تم تصديره مِن خادوم ماستدون آخر
invite_request:
text: هذا سوف يساعدنا في مراجعة تطبيقك
+ ip_block:
+ comment: اختياري. تذكر لماذا قمت بإضافة هذا القانون.
+ expires_in: عناوين الـIP هي مَورد محدود، يتم في بعض الأحيان مشاركتها وغالباً ما يتم تغير ملكيتها، لهذا السبب، لا يُنصح بحظر الـIP إلى أجل غير مسمى.
+ ip: أدخل عنوان IPv4 أو IPv6. يمكنك حظر نطاقات كاملة باستخدام بناء الـCIDR. كن حذراً على أن لا تَحظر نفسك!
+ severities:
+ no_access: حظر الوصول إلى جميع المصادر
+ sign_up_requires_approval: التسجيلات الجديدة سوف تتطلب موافقتك
+ severity: اختر ما سيحدث مع الطلبات من هذا الـIP
+ rule:
+ text: صِف قانون أو شرط للمستخدمين على هذا الخادم. حاول أن تُبقيه قصير وبسيط
sessions:
otp: 'قم بإدخال رمز المصادقة بخطوتين الذي قام بتوليده تطبيق جهازك أو استخدم أحد رموز النفاذ الاحتياطية:'
+ webauthn: إذا كان مفتاح USB فتأكد من إدخاله، وإذا لزم الأمر، اضعط عليه.
tag:
name: يمكنك فقط تغيير غلاف الحروف ، على سبيل المثال ، لجعلها أكثر قابلية للقراءة
user:
@@ -87,6 +108,7 @@ ar:
types:
disable: تعطيل
none: لا تفعل شيئا
+ sensitive: حساس
silence: كتم
suspend: علِق
warning_preset_id: استخدم نموذج تنبيه
@@ -112,6 +134,7 @@ ar:
expires_in: تنتهي مدة صلاحيته بعد
fields: البيانات الوصفية للصفحة التعريفية
header: الرأسية
+ honeypot: "%{label} (لا تملئ)"
inbox_url: عنوان رابط صندوق المُرَحِّل
irreversible: إسقاط بدلا من إخفائها
locale: لغة الواجهة
@@ -131,6 +154,7 @@ ar:
setting_default_privacy: خصوصية المنشور
setting_default_sensitive: اعتبر الوسائط دائما كمحتوى حساس
setting_delete_modal: إظهار مربع حوار للتأكيد قبل حذف أي تبويق
+ setting_disable_swiping: تعطيل حركات التمرير
setting_display_media: عرض الوسائط
setting_display_media_default: افتراضي
setting_display_media_hide_all: إخفاء الكل
@@ -152,6 +176,8 @@ ar:
username: اسم المستخدم
username_or_email: اسم المستخدم أو كلمة السر
whole_word: الكلمة كاملة
+ email_domain_block:
+ with_dns_records: تضمين سجلات MX و عناوين IP للنطاق
featured_tag:
name: الوسم
interactions:
@@ -163,7 +189,12 @@ ar:
invite_request:
text: لماذا ترغب في الانضمام؟
ip_block:
+ comment: تعليق
ip: عنوان IP
+ severities:
+ no_access: حظر الوصول
+ sign_up_requires_approval: حد التسجيلات
+ severity: قانون
notification_emails:
digest: إرسال ملخصات عبر البريد الإلكتروني
favourite: ابعث بريداً إلكترونيًا عندما يُعجَب أحدهم بمنشورك
@@ -174,6 +205,8 @@ ar:
reblog: ابعث بريداً إلكترونيًا عندما يقوم أحدهم بترقية منشورك
report: إرسال رسالة إلكترونية عند تلقّي إبلاغ جديد
trending_tag: ابعث رسالة إلكترونية إن كان هناك وسم متداوَل بحاجة إلى مراجعة
+ rule:
+ text: قانون
tag:
listable: اسمح لهذا الوسم بالظهور في البحث وفي دليل الصفحات التعريفية
name: الوسم
@@ -184,4 +217,7 @@ ar:
required:
mark: "*"
text: مطلوب
+ title:
+ sessions:
+ webauthn: استخدم أحد مفاتيح الأمان الخاصة بك لتسجيل الدخول
'yes': نعم
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index 1a62eb76b..332f55079 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -37,7 +37,6 @@ ast:
announcement:
text: Anunciu
defaults:
- avatar: Avatar
bot: Esta cuenta ye d'un robó
chosen_languages: Peñera de llingües
confirm_new_password: Confirmación de la contraseña nueva
@@ -96,6 +95,5 @@ ast:
'no': Non
recommended: Aconséyase
required:
- mark: "*"
text: ríquese
'yes': Sí
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index 9991bed3d..2a23ea057 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -9,6 +9,18 @@ bg:
imports:
data: CSV файл, експортиран от друга инстанция на Mastodon
labels:
+ account:
+ fields:
+ value: Съдържание
+ account_warning_preset:
+ title: Заглавие
+ admin_account_action:
+ type: Действие
+ types:
+ disable: Замразяване
+ sensitive: Деликатно
+ silence: Ограничение
+ suspend: Спиране
defaults:
avatar: Аватар
confirm_new_password: Потвърди новата парола
diff --git a/config/locales/simple_form.br.yml b/config/locales/simple_form.br.yml
index 4cbc173bd..8dd933869 100644
--- a/config/locales/simple_form.br.yml
+++ b/config/locales/simple_form.br.yml
@@ -29,6 +29,4 @@ br:
tag:
name: Ger-klik
'no': Ket
- required:
- mark: "*"
'yes': Ya
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index b3692f5ba..9e647dafe 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -14,6 +14,12 @@ ca:
send_email_notification: L'usuari rebrà una explicació del que ha passat amb el seu compte
text_html: Opcional. Pots utilitzar tota la sintaxi. Pots afegir configuracions predefinides d'avís per a estalviar temps
type_html: Tria què fer amb %{acct}
+ types:
+ disable: Evita que l'usuari faci ús del seu compte però no li esborra o amaga els seus continguts.
+ none: Fes servir això per a enviar un avís al usuari sense desencadenar cap altre acció.
+ sensitive: Obliga a marcar tots els fitxers multi mèdia adjunts com a sensibles.
+ silence: Evita que l'usuari sigui capaç de publicar amb visibilitat publica, amaga els tuts i notificacions de usuaris que no el segueixen.
+ suspend: Evita qualsevol interacció de o a aquest compte i esborra els seus continguts. Reversible en un termini de 30 dies.
warning_preset_id: Opcional. Encara pots afegir text personalitzat al final de la configuració predefinida
announcement:
all_day: Si es marca, només es mostraran les dates de l'interval de temps
@@ -73,6 +79,8 @@ ca:
no_access: Bloqueja l’accés a tots els recursos
sign_up_requires_approval: Els nous registres requeriran la teva aprovació
severity: Tria què passarà amb les sol·licituds des d’aquesta IP
+ rule:
+ text: Descriu una norma o requeriment pels usuaris d'aquest servidor. Intenta fer-la curta i senzilla
sessions:
otp: 'Introdueix el codi de dos factors generat per el teu telèfon o utilitza un dels teus codis de recuperació:'
webauthn: Si és una clau USB assegurat de que està inserida i, si és necessari, toca-ho.
@@ -112,7 +120,6 @@ ca:
text: Anunci
defaults:
autofollow: Convida a seguir el teu compte
- avatar: Avatar
bot: Aquest compte és un bot
chosen_languages: Filtrar llengües
confirm_new_password: Confirma la contrasenya nova
@@ -182,7 +189,6 @@ ca:
text: Per què vols unir-te?
ip_block:
comment: Comentari
- ip: IP
severities:
no_access: Bloquejar l’accés
sign_up_requires_approval: Limitar els registres
@@ -197,15 +203,15 @@ ca:
reblog: Envia un correu electrònic si algú comparteix el teu estat
report: Envia un correu electrònic quan s'enviï un nou informe
trending_tag: Envia un correu quan una etiqueta sense revisar està en tendència
+ rule:
+ text: Norma
tag:
listable: Permet que aquesta etiqueta aparegui en les cerques i en el directori de perfils
name: Etiqueta
trendable: Permet que aquesta etiqueta aparegui en les tendències
usable: Permet als tuts emprar aquesta etiqueta
- 'no': 'No'
recommended: Recomanat
required:
- mark: "*"
text: necessari
title:
sessions:
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index 1d41066d1..b326f3f55 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -73,6 +73,8 @@ co:
no_access: Bluccà l'accessu à tutte e risorse
sign_up_requires_approval: E nove dumande d'arregistramente necessitaranu a vostr'appruvazione
severity: Sceglie ciò chì si passerà cù e richieste di quest'IP
+ rule:
+ text: Discrizzione di una regula o esigenza per l'utilizatori di stu servore. Pruvate di guardalla corta è simplice
sessions:
otp: 'Entrate u codice d’identificazione à dui fattori nant’à u vostru telefuninu, o unu di i vostri codici di ricuperazione:'
webauthn: S'ella hè una chjave USB assicuratevi di brancalla è, s'ellu c'hè unu, appughjà nant'à u buttone.
@@ -197,6 +199,8 @@ co:
reblog: Mandà un’e-mail quandu qualch’unu sparte i mo statuti
report: Mandà un'e-mail quandu c'hè un novu signalamentu
trending_tag: Mandà un'e-mail quandu un hashtag micca verificatu hè in e tendenze
+ rule:
+ text: Regula
tag:
listable: Auturizà stu hashtag à esse vistu nant'à l'annuariu di i prufili
name: Hashtag
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index d03636247..8403f2c16 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -7,47 +7,53 @@ cs:
account_migration:
acct: Zadejte svůj účet, na který se chcete přesunout, ve formátu přezdívka@doména
account_warning_preset:
- text: Můžete používat syntaxi tootů, jako například URL, hashtagy a zmínky
+ text: Můžete použít syntax příspěvku, jako jsou URL, hashtagy nebo zmínky
title: Nepovinné. Není viditelné pro příjemce
admin_account_action:
- include_statuses: Uživatel uvidí, které tooty způsobily moderátorskou akci nebo varování
+ include_statuses: Uživatel uvidí, které příspěvky způsobily moderátorskou akci nebo varování
send_email_notification: Uživatel obdrží vysvětlení toho, co se stalo s jeho účtem
- text_html: Volitelné. Můžete používat syntaxi tootů. Pro ušetření času si můžete přidat předlohy pro varování
+ text_html: Volitelné. Můžete používat syntax příspěvků. Pro ušetření času můžete přidat předlohy varování
type_html: Vyberte, co chcete s účtem %{acct} udělat
+ types:
+ disable: Zabránit uživateli používat svůj účet, ale nemazat ani neskrývat jejich obsah.
+ none: Toto použijte pro zaslání varování uživateli, bez vyvolání jakékoliv další akce.
+ sensitive: Vynutit označení všech mediálních příloh tohoto uživatele jako citlivých.
+ silence: Zamezit uživateli odesílat příspěvky s veřejnou viditelností, schovat jejich příspěvky a notifikace před lidmi, kteří je nesledují.
+ suspend: Zamezit jakékoliv interakci z nebo do tohoto účtu a smazat jeho obsah. Vratné do 30 dnů.
warning_preset_id: Volitelné. Na konec předlohy můžete stále vložit vlastní text
announcement:
all_day: Po vybrání budou zobrazeny jenom dny z časového období
- ends_at: Volitelné. Zveřejněné oznámení bude v uvedený čas skryto.
+ ends_at: Volitelné. Zveřejněné oznámení bude v uvedený čas skryto
scheduled_at: Pro okamžité zveřejnění ponechte prázdné
starts_at: Volitelné. Jen pokud je oznámení vázáno na konkrétní časové období
- text: Můžete použít stejnou syntax jako pro tooty. Myslete ale na to, že oznámení zabere uživatelům na obrazovce nějaký prostor.
+ text: Můžete použít syntax příspěvků. Mějte prosím na paměti, kolik prostoru oznámení zabere na obrazovce uživatele
defaults:
autofollow: Lidé, kteří se zaregistrují na základě pozvánky, vás budou automaticky sledovat
avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
- bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován
+ bot: Signalizovat ostatním, že účet převážně vykonává automatizované akce a nemusí být monitorován
context: Jeden či více kontextů, ve kterých má být filtr uplatněn
current_password: Z bezpečnostních důvodů prosím zadejte heslo současného účtu
current_username: Potvrďte prosím tuto akci zadáním uživatelského jména aktuálního účtu
digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdrželi osobní zprávy
- discoverable: Adresář profilů je další způsob, jak se může váš účet dostat k širšímu publiku
+ discoverable: Umožnit, aby mohli váš účet objevit neznámí lidé pomocí doporučení a dalších funkcí
email: Bude vám poslán potvrzovací e-mail
fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka
header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít
- irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn
+ irreversible: Filtrované příspěvky nenávratně zmizí, i pokud bude filtr později odstraněn
locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push
- locked: Vyžaduje, abyste ručně schvaloval/a sledující
+ locked: Kontrolujte, kdo vás může sledovat pomocí schvalování žádostí o sledování
password: Použijte alespoň 8 znaků
- phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
+ phrase: Shoda bude nalezena bez ohledu na velikost písmen v textu příspěvku či varování o obsahu
scopes: Která API bude aplikaci povoleno používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě.
- setting_aggregate_reblogs: Nezobrazovat nové boosty pro tooty, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty)
+ setting_aggregate_reblogs: Nezobrazovat nové boosty pro příspěvky, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty)
setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím
setting_display_media_default: Skrývat média označená jako citlivá
- setting_display_media_hide_all: Vždy skrývat všechna média
- setting_display_media_show_all: Vždy zobrazovat média označená jako citlivá
- setting_hide_network: Koho sledujete a kdo sleduje vás nebude zobrazeno na vašem profilu
- setting_noindex: Ovlivňuje váš veřejný profil a stránky tootů
- setting_show_application: Aplikace, kterou používáte k psaní tootů, bude zobrazena v detailním zobrazení vašich tootů
+ setting_display_media_hide_all: Vždy skrývat média
+ setting_display_media_show_all: Vždy zobrazovat média
+ setting_hide_network: Koho sledujete a kdo sleduje vás bude na vašem profilu skryto
+ setting_noindex: Ovlivňuje váš veřejný profil a stránky příspěvků
+ setting_show_application: Aplikace, kterou používáte k odeslání příspěvků, bude zobrazena jejich detailním zobrazení
setting_use_blurhash: Gradienty jsou založeny na barvách skryté grafiky, ale zakrývají jakékoliv detaily
setting_use_pending_items: Aktualizovat časovou osu až po kliknutím namísto automatického rolování kanálu
username: Vaše uživatelské jméno bude na serveru %{domain} unikátní
@@ -56,7 +62,7 @@ cs:
domain: Tato doména bude moci stahovat data z tohoto serveru a příchozí data z ní budou zpracována a uložena
email_domain_block:
domain: Toto může být název domény v e-mailové adresy, její MX záznam nebo IP adresa odpovídající MX záznamu. Při registraci uživatele dojde k jejich kontrole a registrace bude zamítnuta.
- with_dns_records: Dojde k pokusu o zjištění DNS záznamů dané domény a výsledek bude rovněž přidán do seznamu
+ with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány
featured_tag:
name: 'Nejspíš budete chtít použít jeden z těchto:'
form_challenge:
@@ -65,12 +71,23 @@ cs:
data: Soubor CSV exportovaný z jiného serveru Mastodon
invite_request:
text: To nám pomůže posoudit vaši žádost
+ ip_block:
+ comment: Nepovinné. Poznamenejte si, proč jste přidali toto pravidlo.
+ expires_in: IP adresy jsou omezeným zdrojem, občas jsou sdílené a často mění majitele. Proto se jejich časově neomezené blokování nedoporučuje.
+ ip: Zadejte IPv4 nebo IPv6 adresu. Můžete blokovat celé rozsahy použitím CIDR notace. Dejte pozor, ať neodříznete přístup sami sobě!
+ severities:
+ no_access: Blokovat přístup ke všem zdrojům
+ sign_up_requires_approval: Nové registrace budou vyžadovat schválení
+ severity: Zvolte, jak naložit s požadavky z dané IP
+ rule:
+ text: Popište pravidlo nebo požadavek uživatelům tohoto serveru. Snažte se ho držet krátký a jednoduchý
sessions:
otp: 'Zadejte kód pro dvoufázové ověření vygenerovaný vaší mobilní aplikací, nebo použijte jeden z vašich záložních kódů:'
+ webauthn: Pokud jde o USB klíč, vložte jej a případně se dotkněte jeho tlačítka.
tag:
name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti
user:
- chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze tooty ve zvolených jazycích
+ chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích
labels:
account:
fields:
@@ -84,13 +101,14 @@ cs:
text: Text předlohy
title: Nadpis
admin_account_action:
- include_statuses: Zahrnout v e-mailu nahlášené tooty
+ include_statuses: Zahrnout v e-mailu nahlášené příspěvky
send_email_notification: Informovat uživatele e-mailem
text: Vlastní varování
type: Akce
types:
disable: Deaktivovat přihlašování
none: Nic nedělat
+ sensitive: Citlivý
silence: Ztišit
suspend: Pozastavit účet a nenávratně smazat jeho data
warning_preset_id: Použít předlohu pro varování
@@ -110,16 +128,17 @@ cs:
context: Kontexty filtrů
current_password: Současné heslo
data: Data
- discoverable: Zveřejnit tento účet v adresáři
+ discoverable: Navrhovat účet ostatním
display_name: Zobrazované jméno
email: E-mailová adresa
expires_in: Vypršet za
fields: Metadata profilu
header: Záhlaví
+ honeypot: "%{label} (nevyplňovat)"
inbox_url: URL příchozí schránky mostu
irreversible: Zahodit místo skrytí
locale: Jazyk rozhraní
- locked: Uzamknout účet
+ locked: Vynutit žádosti o sledování
max_uses: Maximální počet použití
new_password: Nové heslo
note: O vás
@@ -130,24 +149,25 @@ cs:
setting_aggregate_reblogs: Seskupovat boosty v časových osách
setting_auto_play_gif: Automaticky přehrávat animace GIF
setting_boost_modal: Před boostnutím zobrazovat potvrzovací okno
- setting_crop_images: Ořezávat obrázky v nerozbalených tootech na velikost 16x9
+ setting_crop_images: Ořezávat obrázky v nerozbalených příspěvcích na 16x9
setting_default_language: Jazyk příspěvků
setting_default_privacy: Soukromí příspěvků
setting_default_sensitive: Vždy označovat média jako citlivá
- setting_delete_modal: Před smazáním tootu zobrazovat potvrzovací okno
+ setting_delete_modal: Před smazáním příspěvku zobrazovat potvrzovací dialog
+ setting_disable_swiping: Vypnout gesta přejetí prsty
setting_display_media: Zobrazování médií
setting_display_media_default: Výchozí
setting_display_media_hide_all: Skrýt vše
setting_display_media_show_all: Zobrazit vše
- setting_expand_spoilers: Vždy rozbalit tooty označené varováními o obsahu
+ setting_expand_spoilers: Vždy rozbalit příspěvky označené varováními o obsahu
setting_hide_network: Skrýt mou síť
setting_noindex: Neindexovat svůj profil vyhledávači
setting_reduce_motion: Omezit pohyb v animacích
- setting_show_application: Zobrazit aplikaci používanou k psaní tootů
+ setting_show_application: Odhalit aplikaci použitou k odeslání příspěvků
setting_system_font_ui: Použít výchozí písmo systému
setting_theme: Vzhled stránky
- setting_trends: Zobrazit dnešní trendy
- setting_unfollow_modal: Ppřed zrušením sledování zobrazovat potvrzovací okno
+ setting_trends: Zobrazit dnes populární hashtagy
+ setting_unfollow_modal: Před zrušením sledování zobrazovat potvrzovací okno
setting_use_blurhash: Zobrazit pro skrytá média barevné gradienty
setting_use_pending_items: Pomalý režim
severity: Vážnost
@@ -168,24 +188,36 @@ cs:
comment: Komentář
invite_request:
text: Proč se chcete připojit?
+ ip_block:
+ comment: Komentář
+ ip: IP
+ severities:
+ no_access: Blokovat přístup
+ sign_up_requires_approval: Omezit registrace
+ severity: Pravidlo
notification_emails:
digest: Posílat e-maily s přehledem
- favourite: Poslat e-mail, když si někdo oblíbí váš toot
- follow: Poslat e-mail, když vás někdo začne sledovat
- follow_request: Poslat e-mail, když vás někdo požádá o sledování
- mention: Poslat e-mail, když vás někdo zmíní
- pending_account: Poslat e-mail, když je třeba posoudit nový účet
- reblog: Poslat e-mail, když někdo boostne váš toot
- report: Poslat e-mail, je-li nahlášeno něco nového
- trending_tag: Poslat e-mail, když se neschválený hashtag stane populárním
+ favourite: Někdo si oblíbil váš příspěvek
+ follow: Někdo vás začal sledovat
+ follow_request: Někdo požádal o možnost vás sledovat
+ mention: Někdo vás zmínil
+ pending_account: Je třeba posoudit nový účet
+ reblog: Někdo boostnul váš příspěvek
+ report: Je odesláno nové hlášení
+ trending_tag: Neposouzený hashtag je populární
+ rule:
+ text: Pravidlo
tag:
- listable: Povolit tento hashtag ve výsledcích vyhledávání a v adresáři profilů
+ listable: Povolit zobrazení tohoto hashtagu ve vyhledávání a návrzích
name: Hashtag
- trendable: Povolit tento hashtag v trendech
- usable: Povolit používat tento hashtag v tootech
+ trendable: Povolit zobrazení tohoto hashtagu mezi populárními
+ usable: Povolit používat tento hashtag v příspěvcích
'no': Ne
recommended: Doporučeno
required:
mark: "*"
text: vyžadováno
+ title:
+ sessions:
+ webauthn: K přihlášení použijte jeden z Vašich bezpečnostních klíčů
'yes': Ano
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index cb3f75c1a..6d7b01746 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -74,7 +74,6 @@ cy:
labels:
account:
fields:
- name: Label
value: Cynnwys
account_alias:
acct: Enw'r hen gyfrif
@@ -109,7 +108,6 @@ cy:
confirm_password: Cadarnhau cyfrinair
context: Hidlo cyd-destunau
current_password: Cyfrinair presennol
- data: Data
discoverable: Rhestrwch y cyfrif hwn ar y cyfeiriadur
display_name: Enw arddangos
email: Cyfeiriad e-bost
@@ -186,6 +184,5 @@ cy:
'no': Na
recommended: Argymhellwyd
required:
- mark: "*"
text: gofynnol
'yes': Ie
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 1c16c8e37..93c57ee85 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -2,132 +2,187 @@
da:
simple_form:
hints:
+ account_alias:
+ acct: Angiv brugernavn@domain for den konto, hvorfra du vil flytte
+ account_migration:
+ acct: Angiv brugernavn@domain for den konto, hvortil du vil flytte
account_warning_preset:
+ text: Du kan bruge indlægssyntaks, såsom URL'er, hashtags og omtaler
title: Valgfri. Ikke synlig for modtageren
admin_account_action:
- type_html: Vælg hvad du vil gøre med %{acct}
+ include_statuses: Brugeren vil se, hvilke indlæg, som har forårsaget modereringen/advarslen
+ send_email_notification: Brugeren modtager en forklaring på, hvad der skete med deres konto
+ text_html: Valgfri. Du kan bruge indlægssyntaks. Du kan tilføje advarsler for a spare tid
+ type_html: Vælg, hvad du vil gøre med %{acct}
+ types:
+ disable: Forhindre brugeren i at bruge sin konto, men slet eller skjul ikke vedkommendes indhold.
+ none: Brug dette til at sende en advarsel til brugeren uden at udløse nogen anden handling.
+ sensitive: Gennemtving sensitivmarkering af alle denne brugers medievedhæftninger.
+ silence: Forhindre brugeren i at kunne skrive offentligt synlige indlæg, skjule deres indlæg og notifikationer fra personer, som ikke følger dem.
+ suspend: Forhindre enhver interaktion fra eller til denne konto og slet dens indhold. Reversibelt inden for 30 dage.
+ warning_preset_id: Valgfri. Du kan stadig tilføje tilpasset tekst til slutningen af forvalgene
+ announcement:
+ all_day: Hvis markeret, vil kun datoerne for tidsintervallet blive vist
+ ends_at: Valgfri. En bekendtgørelse vil automatisk blive afpubliceret på dette tidspunkt
+ scheduled_at: Lad stå tomt for straks at publicere bekendtgørelsen
+ starts_at: Valgfri. Såfremt din bekendtgørelse er knyttet til et bestemt tidsinterval
+ text: Du kan bruge markup-formattering i indlæg. Vær opmærksom på den plads, som en bekendtgørelse vil fylde på brugerens skærm
defaults:
- autofollow: Folk der har oprettet sig gennem invitationen vil automatisk følge dig
- avatar: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
- bot: Denne konto udfører hovedsageligt automatiserede handlinger og bliver muligvis ikke overvåget
- context: En eller flere sammenhænge hvor filteret skal være gældende
- current_username: For at bekræfte, angiv venligst brugernavnet på den aktuelle konto
- digest: Sendes kun efter en lang periode med inaktivitet og kun hvis du har modtaget nogle personlige beskeder i dit fravær
- email: Du vil få tilsendt en bekræftelses e-mail
- fields: Du kan have op til 4 ting vist som en tabel på din profil
- header: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
- inbox_url: Kopiere linket fra forsiden af den relay som du ønsker at bruge
- irreversible: Filtrerede trut vil forsvinde fulstændigt, selv hvis filteret senere skulle blive fjernet
- locale: Sproget på interfacet, emails og push beskeder
- locked: Kræver, at du godkender følgere manuelt
+ autofollow: Personer, som har tilmeldt sig via invitationen, vil automatisk følge dig
+ avatar: PNG, GIF eller JPG. Maks. %{size}. Auto-nedskaleres til %{dimensions}px
+ bot: Signalér til andre, at denne konto primært udfører automatiserede handlinger og muligvis ikke monitoreres
+ context: En eller flere kontekster, hvor filteret skal være gældende
+ current_password: Angiv af sikkerhedsårsager adgangskoden til den aktuelle konto
+ current_username: For at bekræfte, angiv brugernavnet for den aktuelle konto
+ digest: Sendes kun efter en lang inaktivitetsperiode, og kun hvis du har modtaget personlige beskeder i dit fravær
+ discoverable: Tillad din konto at blive fundet af fremmede via anbefalinger og øvrige funktioner
+ email: Du tilsendes en bekræftelsese-mail
+ fields: Du kan have op til 4 elementer vist som en tabel på din profil
+ header: PNG, GIF eller JPG. Maks. %{size}. Auto-nedskaleres til %{dimensions}px
+ inbox_url: Kopiér URL'en fra forsiden af den videreformidler, du ønsker at bruge
+ irreversible: Filtrerede indlæg forsvinder helt, selv hvis filteret senere fjernes
+ locale: Brugerfladesprog, e-mails og push-notifikationer
+ locked: Godkend manuelt følgeanmodninger for at styre, hvem der følger dig
password: Brug mindst 8 tegn
- phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut
- scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående.
- setting_display_media_default: Skjul medier markeret som følsomt
- setting_display_media_hide_all: Skjul altid alle medier
+ phrase: Matches uanset majuskel-/minuskel-brug i teksten eller indholdsadvarsel på et indlæg
+ scopes: Hvilke API'er applikationen vil få adgang til. Vælges en højniveaudstrækning, vil granuleringsvalg være unødvendige.
+ setting_aggregate_reblogs: Vis ikke nye boosts for indlæg boostet for nylig (påvirker kun nyligt modtagne boosts)
+ setting_default_sensitive: Sensitive medier er som standard skjult og kan afsløres med et klik
+ setting_display_media_default: Skjul medier markeret som sensitive
+ setting_display_media_hide_all: Skjul altid medier
setting_display_media_show_all: Vis altid medier
- setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil
- setting_noindex: Påvirker din offentlige profil og status sider
+ setting_hide_network: Hvem du følger, og hvem som følger dig, skjules på din profil
+ setting_noindex: Påvirker din offentlige profil og statussider
+ setting_show_application: Applikation, hvormed du skrive indlæg, vil fremgå i den detaljerede visning af dine indlæg
+ setting_use_blurhash: Gradienter er baseret på de skjulte grafikelementers farver, men slører alle detaljer
+ setting_use_pending_items: Klik for at vise tidslinjeopdateringer i stedet auto-feedrulning
username: Dit brugernavn vil være unikt på %{domain}
- whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
+ whole_word: Når nøgleordet/-udtrykket er rent alfanumerisk, bruges det kun, såfremt det matcher hele ordet
+ domain_allow:
+ domain: Dette domæne vil kunne hente data, og dermed behandle og gemme indgående data, fra denne server
+ email_domain_block:
+ domain: Dette kan være det domænenavn, der vises i e-mailadressen, MX-posten domænet opløser til eller IP'en på den server, som MX-posten opløser til. Disse tjekkes ved brugertilmelding, og tilmeldingen afvises.
+ with_dns_records: Et forsøg på at løse det givne domænes DNS-poster foretages og resultaterne blokeres ligeledes
featured_tag:
- name: 'Du kunne måske tænke dig at bruge en af følgende:'
+ name: 'Du vil formentlig ønske at bruge en af flg.:'
form_challenge:
- current_password: Du indtræder et sikkert område
+ current_password: Du bevæger dig ind på et sikkert område
imports:
- data: CSV fil eksporteret fra en anden Mastodon server
+ data: CSV-fil eksporteret fra anden Mastodon-server
invite_request:
text: Dette vil hjælpe os med at gennemgå din ansøgning
ip_block:
- comment: Valgfri. Husk hvorfor du har tilføjet denne regel.
+ comment: Valgfri. Husk, hvorfor du tilføjede denne regel.
+ expires_in: IP-adresser er en begrænset ressource, de deles undertiden og skifter ofte hænder. Af denne grund anbefales ubegrænsede IP-blokke ikke.
+ ip: Angiv en IPv4- eller IPv6-adresse. Du kan blokere hele intervaller vha. CIDR-syntaksen. Vær forsigtig med ikke at låse dig ude!
severities:
- no_access: Bloker for adgangen til alle ressourcer
+ no_access: Blokér adgang til alle ressourcer
sign_up_requires_approval: Nye tilmeldinger kræver din godkendelse
+ severity: Vælg, hvad der vil ske med anmodninger fra denne IP
+ rule:
+ text: Beskriv på en kort og enkel form en regel/krav for brugere på denne server
sessions:
- otp: 'Indtast to-faktor koden der generes af appen af appen på din telefon eller brug en af din genoprettelses koder:'
+ otp: 'Angiv tofaktorkoden generet af appen på din mobil eller brug en af dine genoprettelses koder:'
+ webauthn: Er det en USB-nøgle, så sørg for at isætte den og, om nødvendigt, åbne den manuelt.
+ tag:
+ name: Du kan kun ændre bogstavtyperne for eksempelvis at gøre det mere læsbart
user:
- chosen_languages: Når markeret, vil kun trut i de valgte sprog blive vist på offentlige tidslinjer
+ chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer
labels:
account:
fields:
name: Etiket
value: Indhold
+ account_alias:
+ acct: Kaldenavn på den gamle konto
+ account_migration:
+ acct: Kaldenavn på den nye konto
account_warning_preset:
+ text: Tilpasset tekst
title: Titel
admin_account_action:
- include_statuses: Inkluder rapporteret toot i email
- send_email_notification: Underret brugeren per email
+ include_statuses: Inkludér anmeldte indlæg i e-mailen
+ send_email_notification: Advisér brugeren pr. e-mail
text: Tilpasset advarsel
type: Handling
types:
- disable: Deaktiver
- none: Gør intet
- silence: Silence
- suspend: Suspendér og slet kontodata uopretteligt
- warning_preset_id: Brug en forudindstillet advarsel
+ disable: Frys
+ none: Send en advarsel
+ sensitive: Sensitive
+ silence: Begrænsning
+ suspend: Suspendér
+ warning_preset_id: Brug en forvalgsadvarsel
announcement:
- all_day: Heldags begivenhed
+ all_day: Heldagsbegivenhed
+ ends_at: Slut på begivenhed
scheduled_at: Planlæg offentliggørelse
+ starts_at: Start af begivenhed
text: Bekendtgørelse
defaults:
- autofollow: Inviter til at følge din konto
+ autofollow: Invitér til at følge din konto
avatar: Profilbillede
- bot: Dette er en robot konto
- chosen_languages: Filtrer sprog
- confirm_new_password: Bekræft din nye adgangskode
+ bot: Dette er en bot-konto
+ chosen_languages: Filtrér sprog
+ confirm_new_password: Bekræft ny adgangskode
confirm_password: Bekræft adgangskode
- context: Filtrer sammenhænge
- current_password: Nuværende adgangskode
+ context: Filtrér kontekster
+ current_password: Aktuel adgangskode
data: Data
- discoverable: Vis denne konto i oversigten
+ discoverable: Foreslå konto til andre
display_name: Visningsnavn
- email: E-mail adresse
- expires_in: Udløber efter
- fields: Profil metadata
+ email: E-mailadresse
+ expires_in: Udløb efter
+ fields: Profilmetadata
header: Overskrift
- inbox_url: Link til relay indbakken
- irreversible: Ignorer istedet for at skjule
- locale: Sprog på interface
- locked: Lås konto
- max_uses: Højeste antal benyttelser
+ honeypot: "%{label} (udfyld ikke)"
+ inbox_url: URL til videreformidlingsindbakken
+ irreversible: Fjern istedet for skjul
+ locale: Grænsefladesprog
+ locked: Kræv følgeanmodninger
+ max_uses: Maks. antal afbenyttelser
new_password: Ny adgangskode
note: Biografi
- otp_attempt: To-faktor kode
+ otp_attempt: Tofaktorkode
password: Adgangskode
- phrase: Nøgleord eller sætning
+ phrase: Nøgleord/-sætning
setting_advanced_layout: Aktivér avanceret webgrænseflade
- setting_auto_play_gif: Afspil automatisk animerede GIFs
- setting_boost_modal: Vis bekræftelses dialog før du fremhæver
+ setting_aggregate_reblogs: Gruppér boosts på tidslinjer
+ setting_auto_play_gif: Autoafspil animerede GIF'er
+ setting_boost_modal: Vis bekræftelsesdialog inden boosting
+ setting_crop_images: Beskær billeder i ikke-ekspanderede indlæg til 16x9
setting_default_language: Sprog for opslag
- setting_default_privacy: Privatliv
- setting_default_sensitive: Marker altid medier som værende følsomt
- setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
- setting_display_media: Visning af medier
+ setting_default_privacy: Fortrolighed for opslag
+ setting_default_sensitive: Markér altid medier som sensitive
+ setting_delete_modal: Vis bekræftelsesdialog før et indlæg slettes
+ setting_disable_swiping: Deaktivér strygebevægelser
+ setting_display_media: Medivisning
setting_display_media_default: Standard
setting_display_media_hide_all: Skjul alle
setting_display_media_show_all: Vis alle
- setting_expand_spoilers: Udvid altid trut der er markeret med indholdsadvarsler
- setting_hide_network: Skjul dit netværk
- setting_noindex: Frameld dig søgemaskiners indeksering
- setting_reduce_motion: Reducer animationers bevægelse
- setting_system_font_ui: Brug systemets standard font
- setting_theme: Tema for side
+ setting_expand_spoilers: Ekspandér altid indlæg markeret med indholdsadvarsler
+ setting_hide_network: Skjul din sociale graf
+ setting_noindex: Fravælg søgemaskineindeksering
+ setting_reduce_motion: Reducér animationsbevægelse
+ setting_show_application: Viser applikation, der bruges til at sende indlæg
+ setting_system_font_ui: Brug systemets standardskrifttype
+ setting_theme: Webstedstema
setting_trends: Vis dagens tendenser
- setting_unfollow_modal: Vis bekræftelses dialog før du stopper med at følge nogen
+ setting_unfollow_modal: Vis bekræftelsesdialog før ophør med at følge nogen
+ setting_use_blurhash: Vis farverige gradienter for skjulte medier
setting_use_pending_items: Langsom tilstand
- severity: Omfang
+ severity: Alvorlighed
sign_in_token_attempt: Sikkerhedskode
type: Importtype
username: Brugernavn
- username_or_email: Brugernavn eller Email
+ username_or_email: Brugernavn eller e-mail
whole_word: Helt ord
email_domain_block:
- with_dns_records: Inkluder MX-optegnelser og IP'er for domænet
+ with_dns_records: Inkludér domænets MX-poster og IP'er
featured_tag:
name: Hashtag
interactions:
- must_be_follower: Bloker notifikationer fra folk der ikke følger dig
- must_be_following: Bloker notifikationer fra folk du ikke følger
+ must_be_follower: Blokér notifikationer fra ikke-følgere
+ must_be_following: Blokér notifikationer fra folk du ikke følger
must_be_following_dm: Bloker direkte beskeder fra folk du ikke følger
invite:
comment: Kommentar
@@ -137,30 +192,32 @@ da:
comment: Kommentar
ip: IP
severities:
- no_access: Bloker adgang
+ no_access: Blokér adgang
sign_up_requires_approval: Begræns tilmeldinger
severity: Regel
notification_emails:
- digest: Send sammendrag via emails
- favourite: Send email når nogen favoriserer din status
- follow: Send e-mail når nogen følger dig
- follow_request: Send email når nogen anmoder om at følge dig
- mention: Send e-mail når nogen nævner dig
- pending_account: Send en email når en ny konto skal gennemgås
- reblog: Send e-mail når nogen fremhæver din status
- report: Send email når en ny anmeldelse bliver indsendt
- trending_tag: Send en email når et ikke-gennemset hashtag trender
+ digest: Send resumé e-mails
+ favourite: Nogen gav dig favoritstatus
+ follow: Nogen begyndte at følge dig
+ follow_request: Nogen anmodede om at følge dig
+ mention: Nogen nævnte dig
+ pending_account: Ny konto kræver gennemgang
+ reblog: Nogen boostede din status
+ report: Ny anmeldelse er indsendt
+ trending_tag: Et ikke-gennemgået hashtag trender
+ rule:
+ text: Regel
tag:
- listable: Tillad at dette hashtag vises i søgninger og i bruger oversigten
+ listable: Tillad visning af dette hashtag i søgninger og på profilmappen
name: Hashtag
- trendable: Tillad at dette hashtag vises under trends
- usable: Tillad toots at benytte dette hashtag
+ trendable: Tillad visning af dette hashtag under trends
+ usable: Tillad indlæg at benytte dette hashtag
'no': Nej
recommended: Anbefalet
required:
mark: "*"
- text: påkrævet
+ text: krævet
title:
sessions:
- webauthn: Log på ved brug af en af dine sikkerhedskoder
+ webauthn: Brug en af dine sikkerhedskoder til indlogning
'yes': Ja
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 711dbf5c6..562ba19cd 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -14,6 +14,12 @@ de:
send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist
text_html: Optional. Du kannst Beitragssyntax nutzen. Du kannst Warnungsvorlagen benutzen um Zeit zu sparen
type_html: Wähle aus, was du mit %{acct} machen möchtest
+ types:
+ disable: Den Benutzer daran hindern, sein Konto zu verwenden, aber seinen Inhalt nicht löschen oder ausblenden.
+ none: Verwende dies, um eine Warnung an den Benutzer zu senden, ohne eine andere Aktion auszulösen.
+ sensitive: Erzwinge, dass alle Medienanhänge des Benutzers als NSFW markiert werden.
+ silence: Verhindern, dass der Benutzer in der Lage ist, mit der öffentlichen Sichtbarkeit zu posten und seine Beiträge und Benachrichtigungen von Personen zu verstecken, die ihm nicht folgen.
+ suspend: Verhindert jegliche Interaktion von oder zu diesem Konto und löscht dessen Inhalt. Kann innerhalb von 30 Tagen rückgängig gemacht werden.
warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen
announcement:
all_day: Wenn aktiviert werden nur die Daten des Zeitraums angezeigt
@@ -73,6 +79,8 @@ de:
no_access: Zugriff auf alle Ressourcen blockieren
sign_up_requires_approval: Neue Anmeldungen erfordern deine Zustimmung
severity: Wähle aus, was mit Anfragen aus dieser IP passiert
+ rule:
+ text: Beschreibe eine Regel oder Anforderung für Benutzer auf diesem Server. Versuche es kurz und einfach zu halten
sessions:
otp: 'Gib die Zwei-Faktor-Authentifizierung von deinem Telefon ein oder benutze einen deiner Wiederherstellungscodes:'
webauthn: Wenn es sich um einen USB-Schlüssel handelt, stelle sicher, dass du ihn einsteckst und ihn antippst.
@@ -197,6 +205,8 @@ de:
reblog: E-Mail senden, wenn jemand meinen Beitrag teilt
report: E-Mail senden, wenn ein neuer Bericht vorliegt
trending_tag: E-Mail senden, wenn ein ausstehender Hashtag angesagt ist
+ rule:
+ text: Regel
tag:
listable: Erlaube diesem Hashtag im Profilverzeichnis zu erscheinen
name: Hashtag
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index d4c8a2da6..375bf6527 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -14,6 +14,12 @@ el:
send_email_notification: Ο χρήστης θα λάβει μια εξήγηση του τι συνέβη με τον λογαριασμό του
text_html: Προαιρετικό. Μπορείς να χρησιμοποιήσεις συντακτικό ενός τουτ. Μπορείς να ορίσεις προκαθορισμένες προειδοποιήσεις για να γλυτώσεις χρόνο
type_html: Διάλεξε τι θα κανείς με τον %{acct}
+ types:
+ disable: Αποτρέψτε το χρήστη από τη χρήση του λογαριασμού του, αλλά όχι διαγραφή ή απόκρυψη των περιεχομένων του.
+ none: Χρησιμοποιήστε αυτό για να στείλετε μια προειδοποίηση στον χρήστη, χωρίς να ενεργοποιήσετε οποιαδήποτε άλλη ενέργεια.
+ sensitive: Εξαναγκάστε όλα τα συνημμένα πολυμέσα αυτού του χρήστη να επισημαίνονται ως ευαίσθητα.
+ silence: Αποτρέψτε στο χρήστη να μπορεί να δημοσιεύει δημόσια, να αποκρύπτει τις δημοσιεύσεις και τις ειδοποιήσεις του από άτομα που δεν τις ακολουθούν.
+ suspend: Αποτρέψτε οποιαδήποτε αλληλεπίδραση από ή προς αυτόν τον λογαριασμό και διαγράψτε τα περιεχόμενά του. Αναστρέψιμη εντός 30 ημερών.
warning_preset_id: Προαιρετικό. Μπορείς να προσθέσεις επιπλέον κείμενο μετά το προκαθορισμένο κείμενο
announcement:
all_day: Όταν είναι επιλεγμένο, θα εμφανίζονται μόνο οι ημερομηνίες εντός της χρονικής διάρκειας
@@ -67,10 +73,14 @@ el:
text: Αυτό θα μας βοηθήσει να επιθεωρήσουμε την αίτησή σου
ip_block:
comment: Προαιρετικό. Θυμηθείτε γιατί προσθέσατε αυτόν τον κανόνα.
+ expires_in: Οι διευθύνσεις IP είναι ένας πεπερασμένος πόρος, μερικές φορές μοιράζονται και συχνά αλλάζουν χέρια. Για το λόγο αυτό, δεν συνιστώνται αόριστοι αποκλεισμοί διευθύνσεων IP.
+ ip: Εισάγετε μια διεύθυνση IPv4 ή IPv6. Μπορείτε να αποκλείσετε ολόκληρο το εύρος χρησιμοποιώντας τη σύνταξη CIDR. Προσέξτε να μην κλειδώσετε τον εαυτό σας!
severities:
no_access: Αποκλεισμός πρόσβασης σε όλους τους πόρους
sign_up_requires_approval: Νέες εγγραφές θα απαιτούν την έγκριση σας
severity: Επιλέξτε τι θα γίνεται με αιτήσεις από αυτήν την διεύθυνση IP
+ rule:
+ text: Περιγράψτε έναν κανόνα ή μια απαίτηση για τους χρήστες σε αυτόν τον διακομιστή. Προσπαθήστε να τον κρατήσετε σύντομο και απλό
sessions:
otp: 'Βάλε τον κωδικό δυο παραγόντων (2FA) από την εφαρμογή του τηλεφώνου σου ή χρησιμοποίησε κάποιον από τους κωδικούς ανάκτησης σου:'
webauthn: Αν πρόκειται για ένα κλειδί USB βεβαιωθείτε ότι είναι συνδεδεμένο και αν απαιτείται πατήστε το ελαφρά.
@@ -180,7 +190,7 @@ el:
text: Γιατί θέλεις να συμμετάσχεις;
ip_block:
comment: Σχόλιο
- ip: IP
+ ip: Διεύθυνση IP
severities:
no_access: Αποκλεισμός πρόσβασης
sign_up_requires_approval: Περιορισμός εγγραφών
@@ -195,6 +205,8 @@ el:
reblog: Αποστολή email όταν κάποιος προωθεί τη δημοσίευση σου
report: Αποστολή email όταν υποβάλλεται νέα καταγγελία
trending_tag: Αποστολή email όταν μια μη-εγκεκριμένη ετικέτα γίνεται δημοφιλής
+ rule:
+ text: Κανόνας
tag:
listable: Εμφάνιση αυτής της ετικέτας στο δημόσιο κατάλογο
name: Ετικέτα
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 20c916560..bf864748c 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -7,47 +7,54 @@ en:
account_migration:
acct: Specify the username@domain of the account you want to move to
account_warning_preset:
- text: You can use toot syntax, such as URLs, hashtags and mentions
+ text: You can use post syntax, such as URLs, hashtags and mentions
title: Optional. Not visible to the recipient
admin_account_action:
- include_statuses: The user will see which toots have caused the moderation action or warning
+ include_statuses: The user will see which posts have caused the moderation action or warning
send_email_notification: The user will receive an explanation of what happened with their account
- text_html: Optional. You can use toot syntax. You can add warning presets to save time
+ text_html: Optional. You can use post syntax. You can add warning presets to save time
type_html: Choose what to do with %{acct}
+ types:
+ disable: Prevent the user from using their account, but do not delete or hide their contents.
+ none: Use this to send a warning to the user, without triggering any other action.
+ sensitive: Force all this user's media attachments to be flagged as sensitive.
+ silence: Prevent the user from being able to post with public visibility, hide their posts and notifications from people not following them.
+ suspend: Prevent any interaction from or to this account and delete its contents. Revertible within 30 days.
warning_preset_id: Optional. You can still add custom text to end of the preset
announcement:
all_day: When checked, only the dates of the time range will be displayed
ends_at: Optional. Announcement will be automatically unpublished at this time
scheduled_at: Leave blank to publish the announcement immediately
starts_at: Optional. In case your announcement is bound to a specific time range
- text: You can use toot syntax. Please be mindful of the space the announcement will take up on the user's screen
+ text: You can use post syntax. Please be mindful of the space the announcement will take up on the user's screen
defaults:
autofollow: People who sign up through the invite will automatically follow you
avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
- bot: This account mainly performs automated actions and might not be monitored
+ bot: Signal to others that the account mainly performs automated actions and might not be monitored
context: One or multiple contexts where the filter should apply
current_password: For security purposes please enter the password of the current account
current_username: To confirm, please enter the username of the current account
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
- discoverable: The profile directory is another way by which your account can reach a wider audience
+ discoverable: Allow your account to be discovered by strangers through recommendations, profile directory and other features
+ discoverable_no_directory: Allow your account to be discovered by strangers through recommendations and other features
email: You will be sent a confirmation e-mail
fields: You can have up to 4 items displayed as a table on your profile
header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
inbox_url: Copy the URL from the frontpage of the relay you want to use
- irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
+ irreversible: Filtered posts will disappear irreversibly, even if filter is later removed
locale: The language of the user interface, e-mails and push notifications
- locked: Requires you to manually approve followers
+ locked: Manually control who can follow you by approving follow requests
password: Use at least 8 characters
- phrase: Will be matched regardless of casing in text or content warning of a toot
+ phrase: Will be matched regardless of casing in text or content warning of a post
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
- setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
+ setting_aggregate_reblogs: Do not show new boosts for posts that have been recently boosted (only affects newly-received boosts)
setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
setting_display_media_default: Hide media marked as sensitive
setting_display_media_hide_all: Always hide media
setting_display_media_show_all: Always show media
- setting_hide_network: Who you follow and who follows you will not be shown on your profile
- setting_noindex: Affects your public profile and status pages
- setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
+ setting_hide_network: Who you follow and who follows you will be hidden on your profile
+ setting_noindex: Affects your public profile and post pages
+ setting_show_application: The application you use to post will be displayed in the detailed view of your posts
setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
username: Your username will be unique on %{domain}
@@ -73,13 +80,15 @@ en:
no_access: Block access to all resources
sign_up_requires_approval: New sign-ups will require your approval
severity: Choose what will happen with requests from this IP
+ rule:
+ text: Describe a rule or requirement for users on this server. Try to keep it short and simple
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
webauthn: If it's an USB key be sure to insert it and, if necessary, tap it.
tag:
name: You can only change the casing of the letters, for example, to make it more readable
user:
- chosen_languages: When checked, only toots in selected languages will be displayed in public timelines
+ chosen_languages: When checked, only posts in selected languages will be displayed in public timelines
labels:
account:
fields:
@@ -93,7 +102,7 @@ en:
text: Preset text
title: Title
admin_account_action:
- include_statuses: Include reported toots in the e-mail
+ include_statuses: Include reported posts in the e-mail
send_email_notification: Notify the user per e-mail
text: Custom warning
type: Action
@@ -120,7 +129,7 @@ en:
context: Filter contexts
current_password: Current password
data: Data
- discoverable: List this account on the directory
+ discoverable: Suggest account to others
display_name: Display name
email: E-mail address
expires_in: Expire after
@@ -130,7 +139,7 @@ en:
inbox_url: URL of the relay inbox
irreversible: Drop instead of hide
locale: Interface language
- locked: Lock account
+ locked: Require follow requests
max_uses: Max number of uses
new_password: New password
note: Bio
@@ -141,21 +150,21 @@ en:
setting_aggregate_reblogs: Group boosts in timelines
setting_auto_play_gif: Auto-play animated GIFs
setting_boost_modal: Show confirmation dialog before boosting
- setting_crop_images: Crop images in non-expanded toots to 16x9
+ setting_crop_images: Crop images in non-expanded posts to 16x9
setting_default_language: Posting language
setting_default_privacy: Posting privacy
setting_default_sensitive: Always mark media as sensitive
- setting_delete_modal: Show confirmation dialog before deleting a toot
+ setting_delete_modal: Show confirmation dialog before deleting a post
setting_disable_swiping: Disable swiping motions
setting_display_media: Media display
setting_display_media_default: Default
setting_display_media_hide_all: Hide all
setting_display_media_show_all: Show all
- setting_expand_spoilers: Always expand toots marked with content warnings
- setting_hide_network: Hide your network
+ setting_expand_spoilers: Always expand posts marked with content warnings
+ setting_hide_network: Hide your social graph
setting_noindex: Opt-out of search engine indexing
setting_reduce_motion: Reduce motion in animations
- setting_show_application: Disclose application used to send toots
+ setting_show_application: Disclose application used to send posts
setting_system_font_ui: Use system's default font
setting_theme: Site theme
setting_trends: Show today's trends
@@ -189,19 +198,21 @@ en:
severity: Rule
notification_emails:
digest: Send digest e-mails
- favourite: Someone favourited your status
+ favourite: Someone favourited your post
follow: Someone followed you
follow_request: Someone requested to follow you
mention: Someone mentioned you
pending_account: New account needs review
- reblog: Someone boosted your status
+ reblog: Someone boosted your post
report: New report is submitted
trending_tag: An unreviewed hashtag is trending
+ rule:
+ text: Rule
tag:
- listable: Allow this hashtag to appear in searches and on the profile directory
+ listable: Allow this hashtag to appear in searches and suggestions
name: Hashtag
trendable: Allow this hashtag to appear under trends
- usable: Allow toots to use this hashtag
+ usable: Allow posts to use this hashtag
'no': 'No'
recommended: Recommended
required:
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 3f399deae..b810bac67 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -8,6 +8,9 @@ eo:
send_email_notification: La uzanto ricevos klarigon pri tio, kio okazis al ties konto
text_html: Malnepra. Vi povas uzi skribmanierojn de mesaĝoj. Vi povas aldoni avertajn antaŭagordojn por ŝpari tempon
type_html: Elektu kion fari kun %{acct}
+ types:
+ none: Uzu ĉi tion por sendi averton al la uzanto, sen ekigi alian agon.
+ suspend: Malhelpu ajnan interagon de aŭ al ĉi tiu konto kaj forigu ĝian enhavon. Returnebla ene de 30 tagoj.
warning_preset_id: Malnepra. Vi povas ankoraŭ aldoni propran tekston al la fino de la antaŭagordo
defaults:
autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin
@@ -167,6 +170,8 @@ eo:
reblog: Sendi retmesaĝon kiam iu diskonigas vian mesaĝon
report: Nova signalo estas sendita
trending_tag: Nekontrolita kradvorto furoras
+ rule:
+ text: Regulo
tag:
name: Kradvorto
trendable: Permesi al ĉi tiu kradvorto aperi en furoraĵoj
@@ -176,4 +181,7 @@ eo:
required:
mark: "*"
text: bezonata
+ title:
+ sessions:
+ webauthn: Uzi unu el viaj sekurecaj ŝlosiloj por ensaluti
'yes': Jes
diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml
index 153c1101d..ea918648e 100644
--- a/config/locales/simple_form.es-AR.yml
+++ b/config/locales/simple_form.es-AR.yml
@@ -7,20 +7,26 @@ es-AR:
account_migration:
acct: Especificá el nombredeusuario@dominio de la cuenta a la que querés mudarte
account_warning_preset:
- text: Podés usar sintaxis de toots, como direcciones web, etiquetas y menciones
+ text: Podés usar sintaxis de mensajes, como direcciones web, etiquetas y menciones
title: Opcional. No visible para el destinatario
admin_account_action:
- include_statuses: El usuario verá qué toots causaron la acción de moderación o advertencia
+ include_statuses: El usuario verá qué mensajes causaron la acción de moderación o advertencia
send_email_notification: El usuario recibirá una explicación de lo que sucedió con su cuenta
- text_html: Opcional. Podés usar sintaxis de toots. Podés agregar preajustes de advertencia para ahorrar tiempo
+ text_html: Opcional. Podés usar sintaxis de mensajes. Podés agregar preajustes de advertencia para ahorrar tiempo
type_html: Elegí qué hacer con %{acct}
+ types:
+ disable: Evitar que el usuario use su cuenta, pero no elimina ni oculta sus contenidos.
+ none: Usá esto para enviarle una advertencia al usuario, sin ejecutar ninguna otra acción.
+ sensitive: Forzar a que todos los adjuntos de medios de este usuario sean marcados como sensibles.
+ silence: Evitar que el usuario pueda publicar mensajes, ocultando sus publicaciones y notificaciones a cuentas que no lo siguen.
+ suspend: Evitar cualquier interacción desde o hacia esta cuenta, y eliminar su contenido. Reversible en un plazo de 30 días.
warning_preset_id: Opcional. Todavía podés agregar texto personalizado al final del preajuste
announcement:
all_day: Cuando esté seleccionado, sólo se mostrarán las fechas del rango de tiempo
ends_at: Opcional. El anuncio desaparecerá automáticamente en este momento
scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente
starts_at: Opcional. En caso de que tu anuncio esté vinculado a un rango de tiempo específico
- text: Podés usar sintaxis de toots. Por favor, tené en cuenta el espacio que ocupará el anuncio en la pantalla del usuario
+ text: Podés usar sintaxis de mensajes. Por favor, tené en cuenta el espacio que ocupará el anuncio en la pantalla del usuario
defaults:
autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente
avatar: 'PNG, GIF o JPG. Máximo: %{size}. Será subescalado a %{dimensions} píxeles'
@@ -29,25 +35,25 @@ es-AR:
current_password: Por razones de seguridad, por favor, ingresá la contraseña de la cuenta actual
current_username: Para confirmar, por favor, ingresá el nombre de usuario de la cuenta actual
digest: Sólo enviado tras un largo periodo de inactividad, y sólo si recibiste mensajes personales en tu ausencia
- discoverable: El directorio del perfil es otra forma en la que tu cuenta puede llegar a un público más amplio
+ discoverable: Permití que tu cuenta sea descubierta por extraños a través de recomendaciones y otras funciones
email: Se te enviará un correo electrónico de confirmación
fields: Podés tener hasta 4 elementos mostrados en una tabla en tu perfil
header: 'PNG, GIF o JPG. Máximo: %{size}. Será subescalado a %{dimensions} píxeles'
inbox_url: Copiá la dirección web desde la página principal del relé que querés usar
- irreversible: Los toots filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado después
+ irreversible: Los mensajes filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado después
locale: El idioma de la interface de usuario, correos electrónicos y notificaciones push
- locked: Requiere que manualmente aprobés seguidores
+ locked: Controlá manualmente quién puede seguirte al aprobar solicitudes de seguimiento
password: Usá al menos 8 caracteres
- phrase: Se aplicará sin importar las mayúsculas o las advertencias de contenido de un toot
+ phrase: Se aplicará sin importar las mayúsculas o las advertencias de contenido de un mensaje
scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionás el alcance de nivel más alto, no necesitás seleccionar las individuales.
- setting_aggregate_reblogs: No mostrar nuevos retoots de los toots que fueron recientemente retooteados (sólo afecta a los retoots recibidos recientemente)
+ setting_aggregate_reblogs: No mostrar nuevas adhesiones de los mensajes que fueron recientemente adheridos (sólo afecta a las adhesiones recibidas recientemente)
setting_default_sensitive: El contenido de medios sensibles está oculto predeterminadamente y puede ser mostrado con un clic
setting_display_media_default: Ocultar medios marcados como sensibles
setting_display_media_hide_all: Siempre ocultar todos los medios
setting_display_media_show_all: Siempre mostrar todos los medios
- setting_hide_network: A quiénes seguís y tus seguidores no serán mostrados en tu perfil
- setting_noindex: Afecta a tu perfil público y páginas de estado
- setting_show_application: La aplicación que usás para tootear se mostrará en la vista detallada de tus toots
+ setting_hide_network: Las cuentas que seguís y tus seguidores serán ocultados en tu perfil
+ setting_noindex: Afecta a tu perfil público y páginas de mensajes
+ setting_show_application: La aplicación que usás para enviar mensajes se mostrará en la vista detallada de tus mensajes
setting_use_blurhash: Los gradientes se basan en los colores de las imágenes ocultas pero haciendo borrosos los detalles
setting_use_pending_items: Ocultar actualizaciones de la línea temporal detrás de un clic en lugar de desplazar automáticamente el flujo
username: Tu nombre de usuario será único en %{domain}
@@ -73,13 +79,15 @@ es-AR:
no_access: Bloquear acceso a todos los recursos
sign_up_requires_approval: Los nuevos registros requerirán tu aprobación
severity: Elegí lo que pasará con las solicitudes desde esta dirección IP
+ rule:
+ text: Describí una regla o requisito para los usuarios de este servidor. Intentá hacerla corta y sencilla
sessions:
otp: 'Ingresá el código de autenticación de dos factores generado por la aplicación en tu dispositivo, o usá uno de tus códigos de recuperación:'
webauthn: Si es una llave USB, asegurate de insertarla y, de ser necesario, tocarla.
tag:
name: Sólo podés cambiar la capitalización de las letras, por ejemplo, para que sea más legible
user:
- chosen_languages: Cuando esté marcado, sólo se mostrarán los toots en los idiomas seleccionados en las líneas temporales públicas
+ chosen_languages: Cuando estén marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas
labels:
account:
fields:
@@ -93,7 +101,7 @@ es-AR:
text: Texto predefinido
title: Título
admin_account_action:
- include_statuses: Incluir en el correo electrónico a los toots denunciados
+ include_statuses: Incluir en el correo electrónico los mensajes denunciados
send_email_notification: Notificar al usuario por correo electrónico
text: Advertencia personalizada
type: Acción
@@ -120,7 +128,7 @@ es-AR:
context: Filtrar contextos
current_password: Contraseña actual
data: Datos
- discoverable: Listar esta cuenta en el directorio
+ discoverable: Sugerir cuenta a otros
display_name: Nombre para mostrar
email: Dirección de correo electrónico
expires_in: Vence después de
@@ -130,7 +138,7 @@ es-AR:
inbox_url: Dirección web de la bandeja de entrada del relé
irreversible: Dejar en lugar de ocultar
locale: Idioma de la interface
- locked: Hacer privada esta cuenta
+ locked: Requerir solicitudes de seguimiento
max_uses: Número máximo de usos
new_password: Nueva contraseña
note: Biografía
@@ -138,24 +146,24 @@ es-AR:
password: Contraseña
phrase: Palabra clave o frase
setting_advanced_layout: Habilitar interface web avanzada
- setting_aggregate_reblogs: Agrupar retoots en las líneas temporales
+ setting_aggregate_reblogs: Agrupar adhesiones en las líneas temporales
setting_auto_play_gif: Reproducir automáticamente los GIFs animados
- setting_boost_modal: Mostrar diálogo de confirmación antes de retootear
- setting_crop_images: Recortar imágenes en toots no expandidos a 16x9
- setting_default_language: Idioma de tus toots
- setting_default_privacy: Privacidad de toots
+ setting_boost_modal: Mostrar diálogo de confirmación antes de adherir
+ setting_crop_images: Recortar imágenes en mensajes no expandidos a 16x9
+ setting_default_language: Idioma de tus mensajes
+ setting_default_privacy: Privacidad de mensajes
setting_default_sensitive: Siempre marcar medios como sensibles
- setting_delete_modal: Mostrar diálogo de confirmación antes de eliminar un toot
+ setting_delete_modal: Mostrar diálogo de confirmación antes de eliminar un mensaje
setting_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización de medios
setting_display_media_default: Predeterminada
setting_display_media_hide_all: Ocultar todo
setting_display_media_show_all: Mostrar todo
- setting_expand_spoilers: Siempre expandir los toots marcados con advertencias de contenido
- setting_hide_network: Ocultar tu red
+ setting_expand_spoilers: Siempre expandir los mensajes marcados con advertencias de contenido
+ setting_hide_network: Ocultá tu gráfica social
setting_noindex: Excluirse del indexado de motores de búsqueda
setting_reduce_motion: Reducir el movimiento de las animaciones
- setting_show_application: Mostrar aplicación usada para tootear
+ setting_show_application: Mostrar aplicación usada para enviar mensajes
setting_system_font_ui: Utilizar la tipografía predeterminada del sistema
setting_theme: Tema del sitio
setting_trends: Mostrar las tendencias de hoy
@@ -189,19 +197,21 @@ es-AR:
severity: Regla
notification_emails:
digest: Enviar correos electrónicos compilatorios
- favourite: Una cuenta marca tu toot como favorito
+ favourite: Una cuenta marca tu mensaje como favorito
follow: Una cuenta te sigue
follow_request: Una cuenta solicita seguirte
mention: Una cuenta te menciona
pending_account: Una nueva cuenta necesita revisión
- reblog: Una cuenta retootea tu toot
+ reblog: Una cuenta adhiere a tu mensaje
report: Se envía una nueva denuncia
trending_tag: Una etiqueta no revisada está en tendencia
+ rule:
+ text: Regla
tag:
- listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio de perfiles
+ listable: Permitir que esta etiqueta aparezca en las búsquedas y en las sugerencias
name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias
- usable: Permitir a los toots usar esta etiqueta
+ usable: Permitir a los mensajes usar esta etiqueta
'no': 'No'
recommended: Opción recomendada
required:
diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml
new file mode 100644
index 000000000..0bf72bac2
--- /dev/null
+++ b/config/locales/simple_form.es-MX.yml
@@ -0,0 +1,223 @@
+---
+es-MX:
+ simple_form:
+ hints:
+ account_alias:
+ acct: Especifique el nombre de usuario@dominio de la cuenta desde la cual se desea migrar
+ account_migration:
+ acct: Especifique el nombre de usuario@dominio de la cuenta a la cual se desea migrar
+ account_warning_preset:
+ text: Puede usar sintaxis de toots, como URLs, hashtags y menciones
+ title: Opcional. No visible para el destinatario
+ admin_account_action:
+ include_statuses: El usuario verá qué toots han causado la acción de moderación o advertencia
+ send_email_notification: El usuario recibirá una explicación de lo que sucedió con respecto a su cuenta
+ text_html: Opcional. Puede usar sintaxis de toots. Puede añadir configuraciones predefinidas de advertencia para ahorrar tiempo
+ type_html: Elige qué hacer con %{acct}
+ types:
+ disable: Evitar que el usuario utilice su cuenta, pero no eliminar ni ocultar sus contenidos.
+ none: Utilizar esto para enviar una advertencia al usuario, sin poner en marcha ninguna otra acción.
+ sensitive: Forzar que todos los archivos multimedia de este usuario sean marcados como sensibles.
+ silence: Evitar que el usuario pueda publicar con visibilidad pública, oculta sus mensajes y notificaciones a personas que no lo siguen.
+ suspend: Evitar cualquier interacción desde o hacia esta cuenta y eliminar su contenido. Reversible en un plazo de 30 días.
+ warning_preset_id: Opcional. Aún puede añadir texto personalizado al final de la configuración predefinida
+ announcement:
+ all_day: Cuando está seleccionado solo se mostrarán las fechas del rango de tiempo
+ ends_at: Opcional. El anuncio desaparecerá automáticamente en este momento
+ scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente
+ starts_at: Opcional. En caso de que su anuncio esté vinculado a un intervalo de tiempo específico
+ text: Puedes usar la sintaxis toot. Por favor ten en cuenta el espacio que ocupará el anuncio en la pantalla del usuario
+ defaults:
+ autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente
+ avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
+ bot: Esta cuenta ejecuta principalmente acciones automatizadas y podría no ser monitorizada
+ context: Uno o múltiples contextos en los que debe aplicarse el filtro
+ current_password: Por razones de seguridad por favor ingrese la contraseña de la cuenta actual
+ current_username: Para confirmar, por favor ingrese el nombre de usuario de la cuenta actual
+ digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia
+ discoverable: El directorio del perfil es otra forma en la que su cuenta puede llegar a un público más amplio
+ email: Se le enviará un correo de confirmación
+ fields: Puedes tener hasta 4 elementos mostrándose como una tabla en tu perfil
+ header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
+ inbox_url: Copia la URL de la página principal del relés que quieres utilizar
+ irreversible: Los toots filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante
+ locale: El idioma de la interfaz de usuario, correos y notificaciones push
+ locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
+ password: Utilice al menos 8 caracteres
+ phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot
+ scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales.
+ setting_aggregate_reblogs: No mostrar nuevos retoots para los toots que han sido recientemente retooteados (sólo afecta a los retoots recibidos recientemente)
+ setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click
+ setting_display_media_default: Ocultar contenido multimedia marcado como sensible
+ setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia
+ setting_display_media_show_all: Mostrar siempre contenido multimedia marcado como sensible
+ setting_hide_network: A quién sigues y quién te sigue no será mostrado en tu perfil
+ setting_noindex: Afecta a tu perfil público y páginas de estado
+ setting_show_application: La aplicación que utiliza usted para publicar toots se mostrará en la vista detallada de sus toots
+ setting_use_blurhash: Los gradientes se basan en los colores de las imágenes ocultas pero haciendo borrosos los detalles
+ setting_use_pending_items: Ocultar nuevos estados detrás de un clic en lugar de desplazar automáticamente el feed
+ username: Tu nombre de usuario será único en %{domain}
+ whole_word: Cuando la palabra clave o frase es solo alfanumérica, solo será aplicado si concuerda con toda la palabra
+ domain_allow:
+ domain: Este dominio podrá obtener datos de este servidor y los datos entrantes serán procesados y archivados
+ email_domain_block:
+ domain: Puede ser el nombre de dominio que aparece en la dirección de correo, el registro MX hacia el cual resuelve el dominio, o la IP del servidor hacia el cual resuelve ese registro MX. Esto se comprobará en el momento del alta del usuario y el alta se rechazará.
+ with_dns_records: Se hará un intento de resolver los registros DNS del dominio dado y los resultados serán también puestos en lista negra
+ featured_tag:
+ name: 'Puede que quieras usar uno de estos:'
+ form_challenge:
+ current_password: Estás entrando en un área segura
+ imports:
+ data: Archivo CSV exportado desde otra instancia de Mastodon
+ invite_request:
+ text: Esto nos ayudará a revisar su aplicación
+ ip_block:
+ comment: Opcional. Recuerda por qué has añadido esta regla.
+ expires_in: Las direcciones IP son un recurso finito, a veces se comparten y a menudo cambian de manos. Por esta razón, no se recomiendan bloqueos de IP indefinida.
+ ip: Introduzca una dirección IPv4 o IPv6. Puede bloquear rangos completos usando la sintaxis CIDR. ¡Tenga cuidado de no quedarse fuera!
+ severities:
+ no_access: Bloquear acceso a todos los recursos
+ sign_up_requires_approval: Nuevos registros requerirán su aprobación
+ severity: Elegir lo que pasará con las peticiones desde esta IP
+ rule:
+ text: Describe una norma o requisito para los usuarios de este servidor. Intenta hacerla corta y sencilla
+ sessions:
+ otp: 'Introduce el código de autenticación de dos factores generado por tu aplicación de teléfono o usa uno de tus códigos de recuperación:'
+ webauthn: Si es una tecla USB, asegúrese de insertarla y, si es necesario, púlsela.
+ tag:
+ name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible
+ user:
+ chosen_languages: Cuando se marca, solo se mostrarán los toots en los idiomas seleccionados en los timelines públicos
+ labels:
+ account:
+ fields:
+ name: Etiqueta
+ value: Contenido
+ account_alias:
+ acct: Maneja la cuenta antigua
+ account_migration:
+ acct: Maneja la cuenta nueva
+ account_warning_preset:
+ text: Texto predefinido
+ title: Título
+ admin_account_action:
+ include_statuses: Incluir en el correo electrónico a los toots denunciados
+ send_email_notification: Notificar al usuario por correo electrónico
+ text: Aviso personalizado
+ type: Acción
+ types:
+ disable: Deshabilitar
+ none: No hacer nada
+ sensitive: Sensible
+ silence: Silenciar
+ suspend: Suspender y eliminar de forma irreversible la información de la cuenta
+ warning_preset_id: Usar un aviso predeterminado
+ announcement:
+ all_day: Evento de todo el día
+ ends_at: Fin del evento
+ scheduled_at: Programar publicación
+ starts_at: Comienzo del evento
+ text: Anuncio
+ defaults:
+ autofollow: Invitar a seguir tu cuenta
+ avatar: Avatar
+ bot: Esta es una cuenta bot
+ chosen_languages: Filtrar idiomas
+ confirm_new_password: Confirmar nueva contraseña
+ confirm_password: Confirmar contraseña
+ context: Filtrar contextos
+ current_password: Contraseña actual
+ data: Información
+ discoverable: Listar esta cuenta en el directorio
+ display_name: Nombre para mostrar
+ email: Dirección de correo electrónico
+ expires_in: Expirar tras
+ fields: Metadatos de perfil
+ header: Img. cabecera
+ honeypot: "%{label} (no rellenar)"
+ inbox_url: URL de la entrada de relés
+ irreversible: Dejar en lugar de ocultar
+ locale: Idioma
+ locked: Hacer privada esta cuenta
+ max_uses: Máx. número de usos
+ new_password: Nueva contraseña
+ note: Biografía
+ otp_attempt: Código de dos factores
+ password: Contraseña
+ phrase: Palabra clave o frase
+ setting_advanced_layout: Habilitar interfaz web avanzada
+ setting_aggregate_reblogs: Agrupar retoots en las líneas de tiempo
+ setting_auto_play_gif: Reproducir automáticamente los GIFs animados
+ setting_boost_modal: Mostrar ventana de confirmación antes de un Retoot
+ setting_crop_images: Recortar a 16x9 las imágenes de los toots no expandidos
+ setting_default_language: Idioma de publicación
+ setting_default_privacy: Privacidad de publicaciones
+ setting_default_sensitive: Marcar siempre imágenes como sensibles
+ setting_delete_modal: Mostrar diálogo de confirmación antes de borrar un toot
+ setting_disable_swiping: Deshabilitar movimientos de deslizamiento
+ setting_display_media: Visualización multimedia
+ setting_display_media_default: Por defecto
+ setting_display_media_hide_all: Ocultar todo
+ setting_display_media_show_all: Mostrar todo
+ setting_expand_spoilers: Siempre expandir los toots marcados con advertencias de contenido
+ setting_hide_network: Ocultar tu red
+ setting_noindex: Excluirse del indexado de motores de búsqueda
+ setting_reduce_motion: Reducir el movimiento de las animaciones
+ setting_show_application: Mostrar aplicación usada para publicar toots
+ setting_system_font_ui: Utilizar la tipografía por defecto del sistema
+ setting_theme: Tema del sitio
+ setting_trends: Mostrar las tendencias de hoy
+ setting_unfollow_modal: Mostrar diálogo de confirmación antes de dejar de seguir a alguien
+ setting_use_blurhash: Mostrar gradientes coloridos para contenido multimedia oculto
+ setting_use_pending_items: Modo lento
+ severity: Severidad
+ sign_in_token_attempt: Código de seguridad
+ type: Importar tipo
+ username: Nombre de usuario
+ username_or_email: Usuario o Email
+ whole_word: Toda la palabra
+ email_domain_block:
+ with_dns_records: Incluye los registros MX y las IP del dominio
+ featured_tag:
+ name: Etiqueta
+ interactions:
+ must_be_follower: Bloquear notificaciones de personas que no te siguen
+ must_be_following: Bloquear notificaciones de personas que no sigues
+ must_be_following_dm: Bloquear mensajes directos de la gente que no sigues
+ invite:
+ comment: Comentar
+ invite_request:
+ text: "¿Por qué quiere unirse usted?"
+ ip_block:
+ comment: Comentario
+ ip: IP
+ severities:
+ no_access: Bloquear acceso
+ sign_up_requires_approval: Limitar registros
+ severity: Regla
+ notification_emails:
+ digest: Enviar resumen de correos electrónicos
+ favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación
+ follow: Enviar correo electrónico cuando alguien te siga
+ follow_request: Enviar correo electrónico cuando alguien solicita seguirte
+ mention: Enviar correo electrónico cuando alguien te mencione
+ pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión
+ reblog: Enviar correo electrónico cuando alguien comparta su publicación
+ report: Enviar un correo cuando se envía un nuevo informe
+ trending_tag: Enviar correo electrónico cuando una etiqueta no revisada está de tendencia
+ rule:
+ text: Norma
+ tag:
+ listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
+ name: Etiqueta
+ trendable: Permitir que esta etiqueta aparezca bajo tendencias
+ usable: Permitir a los toots usar esta etiqueta
+ 'no': 'No'
+ recommended: Recomendado
+ required:
+ mark: "*"
+ text: necesario
+ title:
+ sessions:
+ webauthn: Utilice una de sus claves de seguridad para iniciar sesión
+ 'yes': Sí
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 5da47d54a..cc01cd179 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -7,20 +7,26 @@ es:
account_migration:
acct: Especifique el nombre de usuario@dominio de la cuenta a la cual se desea migrar
account_warning_preset:
- text: Puede usar sintaxis de toots, como URLs, hashtags y menciones
+ text: Puede usar sintaxis de publicaciones, como URLs, hashtags y menciones
title: Opcional. No visible para el destinatario
admin_account_action:
- include_statuses: El usuario verá qué toots han causado la acción de moderación o advertencia
+ include_statuses: El usuario verá qué publicaciones han causado la acción de moderación o advertencia
send_email_notification: El usuario recibirá una explicación de lo que sucedió con respecto a su cuenta
- text_html: Opcional. Puede usar sintaxis de toots. Puede añadir configuraciones predefinidas de advertencia para ahorrar tiempo
+ text_html: Opcional. Puede usar sintaxis de publicaciones. Puede añadir configuraciones predefinidas de advertencia para ahorrar tiempo
type_html: Elige qué hacer con %{acct}
+ types:
+ disable: Evitar que el usuario utilice su cuenta, pero no eliminar ni ocultar sus contenidos.
+ none: Utilizar esto para enviar una advertencia al usuario, sin poner en marcha ninguna otra acción.
+ sensitive: Forzar que todos los archivos multimedia de este usuario sean marcados como sensibles.
+ silence: Evitar que el usuario pueda publicar con visibilidad pública, oculta sus mensajes y notificaciones a personas que no lo siguen.
+ suspend: Evitar cualquier interacción desde o hacia esta cuenta y eliminar su contenido. Reversible en un plazo de 30 días.
warning_preset_id: Opcional. Aún puede añadir texto personalizado al final de la configuración predefinida
announcement:
all_day: Cuando está seleccionado solo se mostrarán las fechas del rango de tiempo
ends_at: Opcional. El anuncio desaparecerá automáticamente en este momento
scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente
starts_at: Opcional. En caso de que su anuncio esté vinculado a un intervalo de tiempo específico
- text: Puedes usar la sintaxis toot. Por favor ten en cuenta el espacio que ocupará el anuncio en la pantalla del usuario
+ text: Puedes usar la sintaxis de publicaciones. Por favor ten en cuenta el espacio que ocupará el anuncio en la pantalla del usuario
defaults:
autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente
avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
@@ -29,25 +35,25 @@ es:
current_password: Por razones de seguridad por favor ingrese la contraseña de la cuenta actual
current_username: Para confirmar, por favor ingrese el nombre de usuario de la cuenta actual
digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia
- discoverable: El directorio del perfil es otra forma en la que su cuenta puede llegar a un público más amplio
+ discoverable: Permite que tu cuenta sea encontrada por desconocidos por medio de recomendaciones y otras herramientas
email: Se le enviará un correo de confirmación
fields: Puedes tener hasta 4 elementos mostrándose como una tabla en tu perfil
header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
inbox_url: Copia la URL de la página principal del relés que quieres utilizar
- irreversible: Los toots filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante
+ irreversible: Las publicaciones filtradas desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante
locale: El idioma de la interfaz de usuario, correos y notificaciones push
locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
password: Utilice al menos 8 caracteres
- phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot
+ phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de una publicación
scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales.
- setting_aggregate_reblogs: No mostrar nuevos retoots para los toots que han sido recientemente retooteados (sólo afecta a los retoots recibidos recientemente)
+ setting_aggregate_reblogs: No mostrar nuevos retoots para las publicaciones que han sido recientemente retooteadas (sólo afecta a los retoots recibidos recientemente)
setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click
setting_display_media_default: Ocultar contenido multimedia marcado como sensible
setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia
setting_display_media_show_all: Mostrar siempre contenido multimedia marcado como sensible
setting_hide_network: A quién sigues y quién te sigue no será mostrado en tu perfil
setting_noindex: Afecta a tu perfil público y páginas de estado
- setting_show_application: La aplicación que utiliza usted para publicar toots se mostrará en la vista detallada de sus toots
+ setting_show_application: La aplicación que utiliza usted para publicar publicaciones se mostrará en la vista detallada de sus publicaciones
setting_use_blurhash: Los gradientes se basan en los colores de las imágenes ocultas pero haciendo borrosos los detalles
setting_use_pending_items: Ocultar nuevos estados detrás de un clic en lugar de desplazar automáticamente el feed
username: Tu nombre de usuario será único en %{domain}
@@ -73,13 +79,15 @@ es:
no_access: Bloquear acceso a todos los recursos
sign_up_requires_approval: Nuevos registros requerirán su aprobación
severity: Elegir lo que pasará con las peticiones desde esta IP
+ rule:
+ text: Describe una norma o requisito para los usuarios de este servidor. Intenta hacerla corta y sencilla
sessions:
otp: 'Introduce el código de autenticación de dos factores generado por tu aplicación de teléfono o usa uno de tus códigos de recuperación:'
webauthn: Si es una tecla USB, asegúrese de insertarla y, si es necesario, púlsela.
tag:
name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible
user:
- chosen_languages: Cuando se marca, solo se mostrarán los toots en los idiomas seleccionados en los timelines públicos
+ chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas
labels:
account:
fields:
@@ -93,7 +101,7 @@ es:
text: Texto predefinido
title: Título
admin_account_action:
- include_statuses: Incluir en el correo electrónico a los toots denunciados
+ include_statuses: Incluir en el correo electrónico a las publicaciones denunciadas
send_email_notification: Notificar al usuario por correo electrónico
text: Aviso personalizado
type: Acción
@@ -120,7 +128,7 @@ es:
context: Filtrar contextos
current_password: Contraseña actual
data: Información
- discoverable: Listar esta cuenta en el directorio
+ discoverable: Sugerir la cuenta a otros
display_name: Nombre para mostrar
email: Dirección de correo electrónico
expires_in: Expirar tras
@@ -140,22 +148,22 @@ es:
setting_advanced_layout: Habilitar interfaz web avanzada
setting_aggregate_reblogs: Agrupar retoots en las líneas de tiempo
setting_auto_play_gif: Reproducir automáticamente los GIFs animados
- setting_boost_modal: Mostrar ventana de confirmación antes de un Retoot
- setting_crop_images: Recortar a 16x9 las imágenes de los toots no expandidos
+ setting_boost_modal: Mostrar ventana de confirmación antes de retootear
+ setting_crop_images: Recortar a 16x9 las imágenes de las publicaciones no expandidas
setting_default_language: Idioma de publicación
setting_default_privacy: Privacidad de publicaciones
setting_default_sensitive: Marcar siempre imágenes como sensibles
- setting_delete_modal: Mostrar diálogo de confirmación antes de borrar un toot
+ setting_delete_modal: Mostrar diálogo de confirmación antes de borrar una publicación
setting_disable_swiping: Deshabilitar movimientos de deslizamiento
setting_display_media: Visualización multimedia
setting_display_media_default: Por defecto
setting_display_media_hide_all: Ocultar todo
setting_display_media_show_all: Mostrar todo
- setting_expand_spoilers: Siempre expandir los toots marcados con advertencias de contenido
+ setting_expand_spoilers: Siempre expandir las publicaciones marcadas con advertencias de contenido
setting_hide_network: Ocultar tu red
setting_noindex: Excluirse del indexado de motores de búsqueda
setting_reduce_motion: Reducir el movimiento de las animaciones
- setting_show_application: Mostrar aplicación usada para publicar toots
+ setting_show_application: Mostrar aplicación usada para publicar publicaciones
setting_system_font_ui: Utilizar la tipografía por defecto del sistema
setting_theme: Tema del sitio
setting_trends: Mostrar las tendencias de hoy
@@ -197,11 +205,13 @@ es:
reblog: Enviar correo electrónico cuando alguien comparta su publicación
report: Enviar un correo cuando se envía un nuevo informe
trending_tag: Enviar correo electrónico cuando una etiqueta no revisada está de tendencia
+ rule:
+ text: Norma
tag:
listable: Permitir que esta etiqueta aparezca en las búsquedas y en el directorio del perfil
name: Etiqueta
trendable: Permitir que esta etiqueta aparezca bajo tendencias
- usable: Permitir a los toots usar esta etiqueta
+ usable: Permitir a las publicaciones usar esta etiqueta
'no': 'No'
recommended: Recomendado
required:
diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml
index 79934c0b1..7d8957b18 100644
--- a/config/locales/simple_form.et.yml
+++ b/config/locales/simple_form.et.yml
@@ -185,6 +185,5 @@ et:
'no': Ei
recommended: Soovituslik
required:
- mark: "*"
text: kohustuslik
'yes': Jah
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index c3520b072..68913558f 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -14,6 +14,12 @@ eu:
send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du
text_html: Aukerakoa. Toot sintaxia erabili dezakezu. Abisu aurre-ezarpenak gehitu ditzakezu denbora aurrezteko
type_html: Erabaki zer egin %{acct} kontuarekin
+ types:
+ disable: Erabiltzaileari bere kontua erabiltzea eragotzi, baina ez ezabatu edo ezkutatu bere edukiak.
+ none: Erabili hau erabiltzaileari abisu bat bidaltzeko, beste ekintzarik abiarazi gabe.
+ sensitive: Behartu erabiltzaile honen multimedia eranskin guztiak hunkigarri gisa markatzea.
+ silence: Eragotzi erabiltzaileak ikusgaitasun publikoarekin argitaratzea, ezkutatu bere bidalketa eta jakinarazpenak jarraitzen ez duten pertsonei.
+ suspend: Eragotzi kontu honek inolako interakziorik izatea eta ezabatu bere edukiak. Atzera bota daiteke 30 egun igaro aurretik.
warning_preset_id: Aukerakoa. Zure testua gehitu dezakezu aurre-ezarpenaren ostean
announcement:
all_day: Markatutakoan soilik denbora barrutiko datak erakutsiko dira
@@ -65,8 +71,19 @@ eu:
data: Beste Mastodon zerbitzari batetik esportatutako CSV fitxategia
invite_request:
text: Honek zure eskaera berrikustean lagunduko digu
+ ip_block:
+ comment: Hautazkoa. Gogoratu zergatik gehitu duzun arau hau.
+ expires_in: IP helbideak baliabide mugatua dira, batzuetan partekatuak dira eta maiz aldatzen dira jabez. Horregatik, ez da gomendatzen IPak mugagabe blokeatzea.
+ ip: Sartu IPv4 edo IPv6 helbide bat. Tarte osoak blokeatu ditzakezu CIDR sintaxia erabiliz. Kontuz zure burua blokeatu gabe!
+ severities:
+ no_access: Blokeatu baliabide guztietarako sarbidea
+ sign_up_requires_approval: Izen emate berriek zure onarpena beharko dute
+ severity: Aukeratu zer gertatuko den IP honetatik datozen eskaerekin
+ rule:
+ text: Deskribatu zerbitzari honetako erabiltzaileentzako arau edo betekizun bat. Saiatu labur eta sinple idazten
sessions:
otp: 'Sartu zure telefonoko aplikazioak sortutako bi faktoreetako kodea, edo erabili zure berreskuratze kodeetako bat:'
+ webauthn: USB gako bat bada, ziurtatu sartu duzula, eta behar izanez gero ukitu ezazu.
tag:
name: Letrak maiuskula/minuskulara aldatu ditzakezu besterik ez, adibidez irakurterrazago egiteko
user:
@@ -91,6 +108,7 @@ eu:
types:
disable: Desaktibatu
none: Ez egin ezer
+ sensitive: Hunkigarria
silence: Isiltarazi
suspend: Kanporatu eta behin betiko ezabatu kontuko datuak
warning_preset_id: Erabili aurre-ezarritako abisu bat
@@ -116,6 +134,7 @@ eu:
expires_in: Iraungitzea
fields: Profilaren metadatuak
header: Goiburua
+ honeypot: "%{label} (ez bete)"
inbox_url: Errelearen sarrera ontziaren URLa
irreversible: Baztertu ezkutatu ordez
locale: Interfazearen hizkuntza
@@ -135,6 +154,7 @@ eu:
setting_default_privacy: Mezuen pribatutasuna
setting_default_sensitive: Beti markatu edukiak hunkigarri gisa
setting_delete_modal: Erakutsi baieztapen elkarrizketa-koadroa toot bat ezabatu aurretik
+ setting_disable_swiping: Desgaitu hatza pasatzeko mugimenduak
setting_display_media: Multimedia bistaratzea
setting_display_media_default: Lehenetsia
setting_display_media_hide_all: Ezkutatu guztia
@@ -151,6 +171,7 @@ eu:
setting_use_blurhash: Erakutsi gradiente koloretsuak ezkutatutako multimediaren ordez
setting_use_pending_items: Modu geldoa
severity: Larritasuna
+ sign_in_token_attempt: Segurtasun kodea
type: Inportazio mota
username: Erabiltzaile-izena
username_or_email: Erabiltzaile-izena edo e-mail helbidea
@@ -167,6 +188,13 @@ eu:
comment: Iruzkina
invite_request:
text: Zergatik elkartu nahi duzu?
+ ip_block:
+ comment: Iruzkina
+ ip: IP-a
+ severities:
+ no_access: Blokeatu sarbidea
+ sign_up_requires_approval: Mugatu izen emateak
+ severity: Araua
notification_emails:
digest: Bidali laburpenak e-mail bidez
favourite: Bidali e-mail bat norbaitek zure mezua gogoko duenean
@@ -177,6 +205,8 @@ eu:
reblog: Bidali e-mail bat norbaitek zure mezuari bultzada ematen badio
report: Bidali e-maila txosten berri bat aurkezten denean
trending_tag: Bidali e-mail bat errebisatu gabeko traola bat joeran dagoenean
+ rule:
+ text: Araua
tag:
listable: Baimendu traola hau bilaketetan agertzea eta profilen direktorioan
name: Traola
@@ -187,4 +217,7 @@ eu:
required:
mark: "*"
text: beharrezkoa
+ title:
+ sessions:
+ webauthn: Erabili zure segurtasun gakoetako bat saioa hasteko
'yes': Bai
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 5960c2610..5305a5394 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -14,6 +14,12 @@ fa:
send_email_notification: توضیحی که کاربر میبینید که برای حسابش چه رخ داده است
text_html: اختیاری. میتوانید مثل بوقهای معمولی بنویسید. میتوانید برای صرفهجویی در زمان هشدارهای ازپیشآماده بیفزایید
type_html: با حساب %{acct} میخواهید چه کار کنید؟
+ types:
+ disable: از استفادهٔ کاربر از حسابش جلوگیری میکند، ولی محتوایش را حذف یا پنهان نمیکند.
+ none: برای فرستادن هشداری به کاربر، بدون هیچ کنش دیگری استفاده کنید.
+ sensitive: اجبار همهٔ پیوستهای رسانهای این کاربر برای نشانهگذاری به عنوان حساس.
+ silence: جلوگیری از توانایی کاربر برای فرستادن با نمایانی عمومی، نهفتن فرستهها و آگاهیهایش از افرادی که دنبالش نمیکنند.
+ suspend: جلوگیری از هر برهمکنشی از یا به این حساب و حذف محتواهایش. قابل بازگشت در عرض ۳۰ روز.
warning_preset_id: اختیاری. همچنان میتوانید در پایان متن آماده چیزی بیفزایید
announcement:
all_day: هنگام گزینش، تنها تاریخهای بازهٔ زمانی نمایش داده خواهند شد
@@ -182,7 +188,7 @@ fa:
text: چرا میخواهید عضو شوید؟
ip_block:
comment: توضیح
- ip: IP
+ ip: آیپی
severities:
no_access: بن کردن دسترسی
sign_up_requires_approval: محدود کردن ثبت نامها
@@ -197,6 +203,8 @@ fa:
reblog: وقتی کسی نوشتهٔ شما را بازبوقید ایمیل بفرست
report: وقتی گزارش تازهای فرستاده شد ایمیل بفرست
trending_tag: وقتی یک برچسب بازبینینشده پرطرفدار شد ایمیل بفرست
+ rule:
+ text: قانون
tag:
listable: بگذارید که این برچسب در جستجوها و در فهرست گزیدهٔ کاربران نمایش داده شود
name: برچسب
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 1b4acc9b9..8296bed54 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -130,6 +130,5 @@ fi:
'no': Ei
recommended: Suositeltu
required:
- mark: "*"
text: pakollinen tieto
'yes': Kyllä
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index e173dc0dc..4bc0a1a8f 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -7,20 +7,26 @@ fr:
account_migration:
acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez déménager
account_warning_preset:
- text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions
+ text: Vous pouvez utiliser la syntaxe des messages, comme les URL, les hashtags et les mentions
title: Facultatif. Invisible pour le destinataire
admin_account_action:
- include_statuses: L’utilisateur·rice verra quels sont les pouets qui ont provoqué l’action de modération ou l’avertissement
+ include_statuses: L’utilisateur·rice verra quels messages sont la source de l’action de modération ou de l’avertissement
send_email_notification: L’utilisateur recevra une explication de ce qu’il s’est passé avec son compte
- text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez ajouter des présélections d’attention pour économiser du temps
+ text_html: Optionnel. Vous pouvez utilisez la syntaxe des messages. Vous pouvez ajouter des modèles d’avertissement pour économiser du temps
type_html: Choisir que faire avec %{acct}
+ types:
+ disable: Empêcher l’utilisateur·rice d’utiliser son compte, mais ne pas supprimer ou masquer son contenu.
+ none: Utilisez ceci pour envoyer un avertissement à l’utilisateur·rice, sans déclencher aucune autre action.
+ sensitive: Forcer toutes les pièces jointes de cet·te utilisateur·rice à être signalées comme sensibles.
+ silence: Empêcher l’utilisateur·rice de poster avec une visibilité publique, cacher ses messages et ses notifications aux personnes qui ne les suivent pas.
+ suspend: Empêcher toute interaction depuis ou vers ce compte et supprimer son contenu. Réversible dans les 30 jours.
warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection
announcement:
all_day: Si coché, seules les dates de l’intervalle de temps seront affichées
ends_at: Optionnel. L’annonce sera automatiquement dépubliée à ce moment
scheduled_at: Laisser vide pour publier l’annonce immédiatement
starts_at: Optionnel. Si votre annonce est liée à une période spécifique
- text: Vous pouvez utiliser la syntaxe d’un pouet. Veuillez prendre en compte l’espace que l'annonce prendra sur l’écran de l'utilisateur
+ text: Vous pouvez utiliser la syntaxe des messages. Veuillez prendre en compte l’espace que l'annonce prendra sur l’écran de l'utilisateur·rice
defaults:
autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
@@ -34,20 +40,20 @@ fr:
fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser
- irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard
+ irreversible: Les messages filtrés disparaîtront pour toujours, même si le filtre est supprimé plus tard
locale: La langue de l’interface, des courriels et des notifications
locked: Nécessite que vous approuviez manuellement chaque abonné·e
password: Utilisez au moins 8 caractères
- phrase: Sera filtré sans que la casse ou l’avertissement sur le contenu du pouet soit pris en compte
+ phrase: Sera filtré peu importe la casse ou l’avertissement de contenu du message
scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez une permission générale, vous n’avez pas besoin de sélectionner les permissions plus précises.
- setting_aggregate_reblogs: Ne pas afficher de nouveaux partages pour les pouets qui ont été récemment partagés (n’affecte que les partages nouvellement reçus)
+ setting_aggregate_reblogs: Ne pas afficher les nouveaux partages pour les messages déjà récemment partagés (n’affecte que les partages futurs)
setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic
setting_display_media_default: Masquer les médias marqués comme sensibles
setting_display_media_hide_all: Toujours masquer les médias
setting_display_media_show_all: Toujours montrer les médias
setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil
setting_noindex: Affecte votre profil public ainsi que vos statuts
- setting_show_application: Le nom de l’application que vous utilisez afin d’envoyer des pouets sera affiché dans la vue détaillée de ceux-ci
+ setting_show_application: Le nom de l’application que vous utilisez pour publier sera affichée dans la vue détaillée de vos messages
setting_use_blurhash: Les dégradés sont basés sur les couleurs des images cachées mais n’en montrent pas les détails
setting_use_pending_items: Cacher les mises à jour des fils d’actualités derrière un clic, au lieu de les afficher automatiquement
username: Votre nom d’utilisateur sera unique sur %{domain}
@@ -73,13 +79,15 @@ fr:
no_access: Bloquer l’accès à toutes les ressources
sign_up_requires_approval: Les nouvelles inscriptions nécessiteront votre approbation
severity: Choisir ce qui se passera avec les requêtes de cette adresse IP
+ rule:
+ text: Décrivez une règle ou une exigence pour les utilisateurs sur ce serveur. Essayez de la garder courte et simple
sessions:
otp: 'Entrez le code d’authentification à deux facteurs généré par l’application de votre téléphone ou utilisez un de vos codes de récupération :'
webauthn: Si c'est une clé USB, assurez-vous de l'insérer et, si nécessaire, de la tapoter.
tag:
name: Vous ne pouvez modifier que la casse des lettres, par exemple, pour le rendre plus lisible
user:
- chosen_languages: Lorsque coché, seuls les pouets dans les langues sélectionnées seront affichés sur les fils publics
+ chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics
labels:
account:
fields:
@@ -93,7 +101,7 @@ fr:
text: Texte de présélection
title: Titre
admin_account_action:
- include_statuses: Inclure les pouets signalés dans le courriel
+ include_statuses: Inclure les messages signalés dans le courriel
send_email_notification: Notifier l’utilisateur par courriel
text: Attention personnalisée
type: Action
@@ -140,22 +148,22 @@ fr:
setting_advanced_layout: Activer l’interface Web avancée
setting_aggregate_reblogs: Grouper les partages dans les fils d’actualités
setting_auto_play_gif: Lire automatiquement les GIFs animés
- setting_boost_modal: Afficher une fenêtre de confirmation avant de partager un pouet
- setting_crop_images: Recadrer les images des pouets non-dépliés en 16x9
+ setting_boost_modal: Demander confirmation avant de partager un message
+ setting_crop_images: Recadrer en 16x9 les images des messages qui ne sont pas ouverts en vue détaillée
setting_default_language: Langue de publication
- setting_default_privacy: Confidentialité des statuts
+ setting_default_privacy: Confidentialité des messages
setting_default_sensitive: Toujours marquer les médias comme sensibles
- setting_delete_modal: Afficher une fenêtre de confirmation avant de supprimer un pouet
+ setting_delete_modal: Demander confirmation avant de supprimer un message
setting_disable_swiping: Désactiver les actions par glissement
setting_display_media: Affichage des médias
setting_display_media_default: Défaut
setting_display_media_hide_all: Masquer tout
setting_display_media_show_all: Montrer tout
- setting_expand_spoilers: Toujours déplier les pouets marqués d’un avertissement sur le contenu
+ setting_expand_spoilers: Toujours déplier les messages marqués d’un avertissement de contenu
setting_hide_network: Cacher votre réseau
setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles
setting_reduce_motion: Réduire la vitesse des animations
- setting_show_application: Dévoiler le nom de l’application utilisée pour envoyer des pouets
+ setting_show_application: Dévoiler l’application utilisée pour envoyer les messages
setting_system_font_ui: Utiliser la police par défaut du système
setting_theme: Thème du site
setting_trends: Afficher les tendances du jour
@@ -189,19 +197,21 @@ fr:
severity: Règle
notification_emails:
digest: Envoyer des courriels récapitulatifs
- favourite: Quelqu’un ajoute mon pouet à ses favoris
+ favourite: Quelqu’un a ajouté mon message à ses favoris
follow: Quelqu’un vient de me suivre
follow_request: Quelqu’un demande à me suivre
mention: Quelqu’un me mentionne
pending_account: Nouveau compte en attente d’approbation
- reblog: Quelqu’un partage mon pouet
+ reblog: Quelqu’un a partagé mon message
report: Un nouveau rapport est envoyé
trending_tag: Un hashtag non approuvé est dans les tendances
+ rule:
+ text: Règle
tag:
listable: Autoriser ce hashtag à apparaître dans les recherches et dans l’annuaire des profils
name: Hashtag
trendable: Autoriser ce hashtag à apparaitre dans les tendances
- usable: Autoriser les pouets à utiliser ce hashtag
+ usable: Autoriser les messages à utiliser ce hashtag
'no': Non
recommended: Recommandé
required:
diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml
new file mode 100644
index 000000000..64833d527
--- /dev/null
+++ b/config/locales/simple_form.gd.yml
@@ -0,0 +1,223 @@
+---
+gd:
+ simple_form:
+ hints:
+ account_alias:
+ acct: Sònraich ainm-cleachdaiche@àrainn dhen chunntas a tha thu airson imrich uaithe
+ account_migration:
+ acct: Sònraich ainm-cleachdaiche@àrainn dhen chunntas dhan a tha thu airson imrich
+ account_warning_preset:
+ text: "’S urrainn dhut co-chàradh puist a chleachdadh, can URLaichean, tagaichean hais is iomraidhean"
+ title: Roghainneil. Chan fhaic am faightear seo
+ admin_account_action:
+ include_statuses: Chì an cleachdaiche dè na postaichean a dh’adhbharaich gnìomh na maorsainneachd no an rabhadh
+ send_email_notification: Ghaibh am faightear mìneachadh air dè thachair leis a’ chunntas aca
+ text_html: Roghainneil. Faodaidh tu co-chàradh puist a chleachdadh. ’S urrainn dhut rabhaidhean ro-shuidhichte a chur ris airson ùine a chaomhnadh
+ type_html: Tagh dè nì thu le %{acct}
+ types:
+ disable: Bac an cleachdaiche o chleachdadh a’ chunntais aca ach na sguab às no falaich an t-susbaint aca.
+ none: Cleachd seo airson rabhadh a chur dhan chleachdaiche gun ghnìomh eile a ghabhail.
+ sensitive: Èignich comharra gu bheil e frionasach air a h-uile ceanglachan meadhain a’ chleachdaiche seo.
+ silence: Bac an cleachdaiche o phostadh le faicsinneachd poblach, falaich na postaichean is brathan aca o na daoine nach eil a’ leantainn air.
+ suspend: Bac eadar-ghnìomh sam bith leis a’ chunntas seo agus sguab às an t-susbaint aige. Gabhaidh seo a neo-dhèanamh am broinn 30 latha.
+ warning_preset_id: Roghainneil. ’S urrainn dhut teacsa gnàthaichte a chur ri deireadh an ro-sheata fhathast
+ announcement:
+ all_day: Nuair a bhios cromag ris, cha nochd ach cinn-latha na rainse-ama
+ ends_at: Roghainneil. Thèid am brath-fios a neo-fhoillseachadh gu fèin-obrachail aig an àm ud
+ scheduled_at: Fàg seo bàn airson am brath-fios fhoillseachadh sa bhad
+ starts_at: Roghainnean. Cleachd seo airson am brath-fios a chuingeachadh rè ama shònraichte
+ text: "’S urrainn dhut co-chàradh puist a chleachdadh. Thoir an aire air am meud a chaitheas am brath-fios air sgrìn an luchd-chleachdaidh"
+ defaults:
+ autofollow: Leanaidh na daoine a chlàraicheas leis a cuireadh ort gu fèin-obrachail
+ avatar: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px
+ bot: Comharraich do chàch gu bheil an cunntas seo ri gnìomhan fèin-obrachail gu h-àraidh is dh’fhaoidte nach doir duine sam bith sùil air idir
+ context: Na co-theacsaichean air am bi a’ chriathrag an sàs
+ current_password: A chùm tèarainteachd, cuir a-steach facal-faire a’ chunntais làithrich
+ current_username: Airson seo a dhearbhadh, cuir a-steach ainm-cleachdaiche a’ chunntais làithrich
+ digest: Cha dèid seo a chur ach nuair a bhios tu air ùine mhòr gun ghnìomh a ghabhail agus ma fhuair thu teachdaireachd phearsanta fhad ’s a bha thu air falbh
+ discoverable: Ceadaich gun lorg coigrich an cunntas agad le taic o mholaidhean is gleusan eile
+ email: Thèid post-d dearbhaidh a chur thugad
+ fields: Faodaidh tu suas ri 4 nithean a shealltainn mar chlàr air a’ phròifil agad
+ header: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px
+ inbox_url: Dèan lethbhreac dhen URL o phrìomh-dhuilleag an ath-sheachadain a bu mhiann leat cleachdadh
+ irreversible: Thèid postaichean criathraichte a-mach à sealladh gu buan fiù ’s ma bheir thu a’ chriathrag air falbh uaireigin eile
+ locale: Cànan eadar-aghaidh a’ chleachdaiche, nam post-d ’s nam brathan putaidh
+ locked: Stiùirich cò dh’fhaodas leantainn ort le gabhail ri iarrtasan leantainn a làimh
+ password: Cleachd co-dhiù 8 caractaran
+ phrase: Thèid a mhaidseadh gun aire air litrichean mòra ’s beaga no air rabhadh susbainte puist
+ scopes: Na APIan a dh’fhaodas an aplacaid inntrigeadh. Ma thaghas tu sgòp air ìre as àirde, cha leig thu leas sgòpaichean fa leth a thaghadh.
+ setting_aggregate_reblogs: Na seall brosnachaidhean ùra do phostaichean a chaidh a bhrosnachadh o chionn ghoirid (cha doir seo buaidh ach air brosnachaidhean ùra o seo a-mach)
+ setting_default_sensitive: Thèid meadhanan frionasach fhalach o thùs is gabhaidh an nochdadh le briogadh orra
+ setting_display_media_default: Falaich meadhanan ris a bheil comharra gu bheil iad frionasach
+ setting_display_media_hide_all: Falaich na meadhanan an-còmhnaidh
+ setting_display_media_show_all: Seall na meadhanan an-còmhnaidh
+ setting_hide_network: Thèid cò a tha thu a’ leantainn orra ’s an luchd-leantainn agad fhèin a chur am falach air a’ phròifil agad
+ setting_noindex: Bheir seo buaidh air a’ phròifil phoblach ’s air duilleagan nam postaichean agad
+ setting_show_application: Chithear cò an aplacaid a chleachd thu airson post a sgrìobhadh ann an seallaidhean mionaideach nam postaichean agad
+ setting_use_blurhash: Tha caiseadan stèidhichte air dathan nan nithean lèirsinneach a chaidh fhalach ach chan fhaicear am mion-fhiosrachadh
+ setting_use_pending_items: Falaich ùrachaidhean na loidhne-ama air cùlaibh briogaidh seach a bhith a’ sgroladh an inbhir gu fèin-obrachail
+ username: Bidh ainm-cleachdaiche àraidh agad air %{domain}
+ whole_word: Mur eil ach litrichean is àireamhan san fhacal-luirg, cha dèid a chur an sàs ach ma bhios e a’ maidseadh an fhacail shlàin
+ domain_allow:
+ domain: "’S urrainn dhan àrainn seo dàta fhaighinn on fhrithealaiche seo agus thèid an dàta a thig a-steach uaithe a phròiseasadh ’s a stòradh"
+ email_domain_block:
+ domain: Gabhaidh an t-ainm àrainne a nochdas san t-seòladh puist-d a chleachdadh no an clàr MX dhan dèid an àrainn fhuasgladh no IP an fhrithealaiche dhan dèid an clàr MX fuasgladh. Thèid an dearbhadh nuair a chlàraicheas cleachdaiche ùr leinn is thèid an clàradh a dhiùltadh.
+ with_dns_records: Thèid oidhirp a dhèanamh air fuasgladh clàran DNS na h-àrainne a chaidh a thoirt seachad agus thèid na toraidhean a bhacadh cuideachd
+ featured_tag:
+ name: 'Mholamaid fear dhe na tagaichean seo:'
+ form_challenge:
+ current_password: Tha thu a’ tighinn a-steach gu raon tèarainte
+ imports:
+ data: Faidhle CSV a chaidh às-phortadh o fhrithealaiche Mastodon eile
+ invite_request:
+ text: Bidh e nas fhasa dhuinn lèirmheas a dhèanamh air d’ iarrtas
+ ip_block:
+ comment: Roghainneil. Cùm an cuimhne carson an do chuir thu an riaghailt seo ris.
+ expires_in: Tha an uiread de sheòlaidhean IP cuingichte is thèid an co-roinneadh aig amannan agus an gluasad do chuideigin eile gu tric. Air an adhbhar seo, cha mholamaid bacadh IP gun chrìoch.
+ ip: Cuir a-steach seòladh IPv4 no IPv6. ’S urrainn dhut rainsean gu lèir a bhacadh le co-chàradh CIDR. Thoir an aire nach gluais thu thu fhèin a-mach!
+ severities:
+ no_access: Bac inntrigeadh dha na goireasan uile
+ sign_up_requires_approval: Bidh cleachdaichean air an ùr-chlàradh feumach air d’ aonta
+ severity: Tagh na thachras le iarrtasan on IP seo
+ rule:
+ text: Mìnich riaghailt no riatanas do chleachdaichean an fhrithealaiche seo. Feuch an cùm thu sìmplidh goirid e
+ sessions:
+ otp: 'Cuir a-steach an còd dà-cheumnach a ghin aplacaid an fhòn agad no cleachd fear dhe na còdan aisig agad:'
+ webauthn: Mas e iuchair USB a th’ ann, dèan cinnteach gun cuir thu a-steach e is gun doir thu gnogag air ma bhios feum air sin.
+ tag:
+ name: Mar eisimpleir, ’s urrainn dhut measgachadh de litrichean mòra ’s beaga a chleachdadh ach an gabh a leughadh nas fhasa
+ user:
+ chosen_languages: Nuair a bhios cromag ris, cha nochd ach postaichean sna cànain a thagh thu air loidhnichean-ama poblach
+ labels:
+ account:
+ fields:
+ name: Leubail
+ value: Susbaint
+ account_alias:
+ acct: Ainm-cleachdaiche an t-seann-chunntais
+ account_migration:
+ acct: Ainm-cleachdaiche a’ chunntais ùir
+ account_warning_preset:
+ text: Teacsa ro-shocraichte
+ title: Tiotal
+ admin_account_action:
+ include_statuses: Gabh a-steach na postaichean a chaidh gearan a dhèanamh mun dèidhinn sa phost-d
+ send_email_notification: Cuir fios gun chleachdaiche air a’ phost-d
+ text: Rabhadh gnàthaichte
+ type: Gnìomh
+ types:
+ disable: Reòth
+ none: Cuir rabhadh
+ sensitive: Frionasach
+ silence: Crìoch
+ suspend: Cuir à rèim
+ warning_preset_id: Cleachd rabhadh ro-shuidhichte
+ announcement:
+ all_day: Tachartas fad an latha
+ ends_at: Deireadh an tachartais
+ scheduled_at: Cuir foillseachadh air an sgeideal
+ starts_at: Toiseach an tachartais
+ text: Brath-fios
+ defaults:
+ autofollow: Thoir cuireadh dhaibh airson leantainn air a’ chunntas agad
+ avatar: Avatar
+ bot: Seo cunntas bot
+ chosen_languages: Criathraich na cànain
+ confirm_new_password: Dearbh am facal-faire ùr
+ confirm_password: Dearbh am facal-faire
+ context: Co-theacsaichean na criathraige
+ current_password: Am facal-faire làithreach
+ data: Dàta
+ discoverable: Mol an cunntas do chàch
+ display_name: Ainm-taisbeanaidh
+ email: Seòladh puist-d
+ expires_in: Falbhaidh an ùine air às dèidh
+ fields: Meata-dàta na pròifile
+ header: Bann-cinn
+ honeypot: "%{label} (na lìon seo)"
+ inbox_url: URL bogsa a-steach an ath-sheachadain
+ irreversible: Leig seachad seach falach
+ locale: Cànan na h-eadar-aghaidh
+ locked: Iarr iarrtasan leantainn
+ max_uses: An àireamh as motha de chleachdaidhean
+ new_password: Facal-faire ùr
+ note: Mu mo dhèidhinn
+ otp_attempt: Còd dà-cheumnach
+ password: Facal-faire
+ phrase: Facal no abairt-luirg
+ setting_advanced_layout: Cuir an comas an eadar-aghaidh-lìn adhartach
+ setting_aggregate_reblogs: Buidhnich na brosnachaidhean air an loidhne-ama
+ setting_auto_play_gif: Cluich GIFs beòthaichte gu fèin-obrachail
+ setting_boost_modal: Seall còmhradh dearbhaidh mus dèan thu brosnachadh
+ setting_crop_images: Beàrr na dealbhan sna postaichean gun leudachadh air 16x9
+ setting_default_language: Cànan postaidh
+ setting_default_privacy: Prìobhaideachd postaidh
+ setting_default_sensitive: Cuir comharra ri meadhanan an-còmhnaidh gu bheil iad frionasach
+ setting_delete_modal: Seall còmhradh dearbhaidh mus sguab thu às post
+ setting_disable_swiping: Cuir gluasadan grad-shlaighdidh à comas
+ setting_display_media: Sealltainn nam meadhanan
+ setting_display_media_default: Tùsail
+ setting_display_media_hide_all: Falaich na h-uile
+ setting_display_media_show_all: Seall na h-uile
+ setting_expand_spoilers: Leudaich postaichean ris a bheil rabhadh susbainte an-còmhnaidh
+ setting_hide_network: Falaich an graf sòisealta agad
+ setting_noindex: Thoir air falbh an ro-aonta air inneacsadh le einnseanan-luirg
+ setting_reduce_motion: Ìslich an gluasad sna beòthachaidhean
+ setting_show_application: Foillsich dè an aplacaid a chleachdas tu airson postaichean a chur
+ setting_system_font_ui: Cleachd cruth-clò tùsail an t-siostaim
+ setting_theme: Ùrlar na làraich
+ setting_trends: Seall na treandaichean an-diugh
+ setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de leantainn air cuideigin
+ setting_use_blurhash: Seall caiseadan dathte an àite meadhanan falaichte
+ setting_use_pending_items: Am modh slaodach
+ severity: Donad
+ sign_in_token_attempt: Còd-tèarainteachd
+ type: Seòrsa an ion-phortaidh
+ username: Ainm-cleachdaiche
+ username_or_email: Ainm-cleachdaiche no post-d
+ whole_word: Facal slàn
+ email_domain_block:
+ with_dns_records: Gabh a-steach clàran MX agus IPan na h-àrainne
+ featured_tag:
+ name: Taga hais
+ interactions:
+ must_be_follower: Mùch na brathan nach eil o luchd-leantainn
+ must_be_following: Mùch na brathan o dhaoine air nach lean thu
+ must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine air nach lean thu
+ invite:
+ comment: Beachd
+ invite_request:
+ text: Carson a bu mhiann leat ballrachd fhaighinn?
+ ip_block:
+ comment: Beachd
+ ip: IP
+ severities:
+ no_access: Bac inntrigeadh
+ sign_up_requires_approval: Cuingich clàraidhean ùra
+ severity: Riaghailt
+ notification_emails:
+ digest: Cuir puist-d le geàrr-chunntas
+ favourite: Is annsa le cuideigin am post agad
+ follow: Lean cuideigin ort
+ follow_request: Dh’iarr cuideigin leantainn ort
+ mention: Thug cuideigin iomradh ort
+ pending_account: Tha cunntas ùr feumach air lèirmheas
+ reblog: Bhrosnaich cuideigin am post agad
+ report: Chaidh gearan ùr a chur a-null
+ trending_tag: Tha taga hais gun lèirmheas a’ treandadh
+ rule:
+ text: Riaghailt
+ tag:
+ listable: Leig leis an taga hais seo gun nochd e ann an toraidhean luirg ’s am measg nam molaidhean
+ name: Taga hais
+ trendable: Leig leis an taga hais seo gun nochd e am measg nan treandaichean
+ usable: Leig le postaichean an taga hais seo a chleachdadh
+ 'no': Chan eil
+ recommended: Molta
+ required:
+ mark: "*"
+ text: riatanach
+ title:
+ sessions:
+ webauthn: Cleachd tè dhe na h-iuchraichean tèarainteachd agad airson clàradh a-steach
+ 'yes': Tha
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 799312e33..77380bbe0 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -7,49 +7,55 @@ gl:
account_migration:
acct: Indica o usuaria@servidor da conta a cal queres migrar
account_warning_preset:
- text: Pódeslle dar formato ao toot, como URLs, cancelos e mencións
+ text: Pódeslle dar formato á publicación, como URLs, cancelos e mencións
title: Optativo. Non visible para a correspondente
admin_account_action:
- include_statuses: A usuaria verá que toots causaron a acción da moderación ou aviso
+ include_statuses: A usuaria verá que publicacións causaron a acción da moderación ou aviso
send_email_notification: A usuaria recibirá unha explicación sobre o que lle aconteceu a súa conta
- text_html: Optativo. Podes utilizar formato no toot. Podes engadir avisos preestablecidos para aforrar tempo
+ text_html: Optativo. Podes utilizar formato na publicación. Podes engadir avisos preestablecidos para aforrar tempo
type_html: Escolle que facer con %{acct}
+ types:
+ disable: Evitar que a usuaria utilice a súa conta, mais non eliminala ou agochar o seu contido.
+ none: Utiliza esto para darlle un aviso á usuaria, se activar ningunha outra acción.
+ sensitive: Forzar que tódolos ficheiros multimedia das usuarias sexan marcadas como sensibles.
+ silence: Evitar que a usuaria poida publicar toots públicos, agocha os seus toots e notificacións para a xente que non a segue.
+ suspend: Evita calquera interacción con ou desta conta e elimina os seus contidos. Reversible durante 30 días.
warning_preset_id: Optativo. Poderás engadir texto personalizado ao final do preestablecido
announcement:
all_day: Cando se marca, só serán amosadas as datas do intre de tempo
ends_at: Opcional. O anuncio non se publicará de xeito automático neste intre
scheduled_at: Déixao baleiro para publicar o anuncio de xeito inmediato
starts_at: Opcional. No caso de que o teu anuncio estea vinculado a un intre de tempo específico
- text: Podes empregar a sintaxe do toot. Ten en conta o espazo que ocupará o anuncio na pantalla do usuario
+ text: Podes empregar a sintaxe na publicación. Ten en conta o espazo que ocupará o anuncio na pantalla da usuaria
defaults:
autofollow: As persoas que se conectaron a través dun convite seguirante automáticamente
- avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
- bot: Esta conta realiza principalmente accións automatizadas e podería non estar monitorizada
+ avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
+ bot: Advirte ás usuarias de que esta conta realiza principalmente accións automatizadas e podería non estar monitorizada
context: Un ou varios contextos onde se debería aplicar o filtro
current_password: Por razóns de seguridade, introduce o contrasinal da conta actual
current_username: Para confirmar, introduce o nome de usuaria da conta actual
digest: Enviar só tras un longo período de inactividade e só se recibiches algunha mensaxe directa na tua ausencia
- discoverable: O directorio de perfil é outro xeito de que a túa conta alcance unha maior audiencia
+ discoverable: Permite que a túa conta poida ser descuberta por persoas descoñecidas a través de recomendacións e outras ferramentas
email: Ímosche enviar un correo de confirmación
fields: Podes ter ate 4 elementos no teu perfil mostrados como unha táboa
header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
inbox_url: Copiar o URL desde a páxina de inicio do repetidor que queres utilizar
- irreversible: Os toots filtrados desaparecerán de xeito irreversible, incluso se despois se elimina o filtro
+ irreversible: As publicacións filtradas desaparecerán de xeito irreversible, incluso se despois se elimina o filtro
locale: O idioma da interface de usuaria, correos e notificacións
- locked: Require que ti aceptes as seguidoras de xeito manual
+ locked: Xestionar manualmente quen pode seguirte aprobando as solicitudes de seguimento
password: Utiliza 8 caracteres ao menos
- phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot
+ phrase: Concordará independentemente das maiúsculas ou avisos de contido na publicación
scopes: A que APIs terá acceso a aplicación. Se escolles un ámbito de alto nivel, non precisas seleccionar elementos individuais.
- setting_aggregate_reblogs: Non mostrar novas promocións de toots que foron promocionados recentemente (só afecta a promocións recén recibidas)
+ setting_aggregate_reblogs: Non mostrar novas promocións de publicacións que foron promovidas recentemente (só afecta a promocións recén recibidas)
setting_default_sensitive: Medios sensibles marcados como ocultos por defecto e móstranse cun click
setting_display_media_default: Ocultar medios marcados como sensibles
setting_display_media_hide_all: Ocultar sempre os medios
setting_display_media_show_all: Mostrar sempre os medios marcados como sensibles
setting_hide_network: Non se mostrará no teu perfil quen te segue e a quen estás a seguir
setting_noindex: Afecta ao teu perfil público e páxinas de estado
- setting_show_application: A aplicación que estás a utilizar para enviar toots mostrarase na vista detallada do toot
+ setting_show_application: A aplicación que estás a utilizar para enviar publicacións mostrarase na vista detallada da publicación
setting_use_blurhash: Os gradientes toman as cores da imaxe oculta pero esborranchando todos os detalles
- setting_use_pending_items: Ocultar as actualizacións da liña temporal tras un click no lugar de desprazar automáticamente os comentarios
+ setting_use_pending_items: Agochar actualizacións da cronoloxía tras un click no lugar de desprazar automáticamente os comentarios
username: O teu nome de usuaria será único en %{domain}
whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa
domain_allow:
@@ -73,13 +79,15 @@ gl:
no_access: Bloquear acceso a tódolos recursos
sign_up_requires_approval: Os novos rexistros requerirán a túa aprobación
severity: Escolle que acontecerá coas peticións desde este IP
+ rule:
+ text: Describe unha regra ou requerimento para as usuarias deste servidor. Intenta que sexa curta e simple
sessions:
otp: 'Introduce o código do segundo factor creado pola aplicación do teu móbil ou usa un dos códigos de recuperación:'
webauthn: Se é unha chave USB asegúrate de que está conectada e preme o botón.
tag:
name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade
user:
- chosen_languages: Se ten marca, só os toots nos idiomas seleccionados serán mostrados en liñas temporais públicas
+ chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas
labels:
account:
fields:
@@ -93,7 +101,7 @@ gl:
text: Texto preestablecido
title: Título
admin_account_action:
- include_statuses: Incluír toots denunciados no correo
+ include_statuses: Incluír no correo as publicacións denunciadas
send_email_notification: Notificar a usuaria por correo-e
text: Aviso personalizado
type: Acción
@@ -120,7 +128,7 @@ gl:
context: Contextos do filtro
current_password: Contrasinal actual
data: Datos
- discoverable: Incluír esta conta no directorio
+ discoverable: Suxerir esta conta a outras persoas
display_name: Nome mostrado
email: Enderezo de email
expires_in: Caduca tras
@@ -130,7 +138,7 @@ gl:
inbox_url: URL da caixa de entrada do repetidor
irreversible: Soltar en lugar de agochar
locale: Idioma da interface
- locked: Protexer conta
+ locked: Requerir aprobar seguimento
max_uses: Número máximo de usos
new_password: Novo contrasinal
note: Acerca de ti
@@ -138,24 +146,24 @@ gl:
password: Contrasinal
phrase: Palabra chave ou frase
setting_advanced_layout: Activar interface web avanzada
- setting_aggregate_reblogs: Agrupar promocións nas liñas temporais
+ setting_aggregate_reblogs: Agrupar promocións nas cronoloxías
setting_auto_play_gif: Reprodución automática de GIFs animados
setting_boost_modal: Pedir confirmación antes de promocionar
- setting_crop_images: Recortar imaxes a 16x9 en toots non despregados
+ setting_crop_images: Recortar imaxes a 16x9 en publicacións non despregadas
setting_default_language: Idioma de publicación
setting_default_privacy: Privacidade da publicación
setting_default_sensitive: Marcar sempre multimedia como sensible
- setting_delete_modal: Solicitar confirmación antes de eliminar unha mensaxe
+ setting_delete_modal: Solicitar confirmación antes de eliminar unha publicación
setting_disable_swiping: Desactivar opcións de desprazamento
setting_display_media: Mostrar multimedia
setting_display_media_default: Por omisión
setting_display_media_hide_all: Ocultar todo
setting_display_media_show_all: Mostrar todo
- setting_expand_spoilers: Despregar sempre as mensaxes marcadas con avisos de contido
+ setting_expand_spoilers: Despregar sempre as publicacións marcadas con avisos de contido
setting_hide_network: Non mostrar contactos
setting_noindex: Pedir non aparecer nas buscas dos motores de busca
setting_reduce_motion: Reducir o movemento nas animacións
- setting_show_application: Mostrar a aplicación utilizada para tootear
+ setting_show_application: Mostrar a aplicación utilizada para publicar
setting_system_font_ui: Utilizar a tipografía por defecto do sistema
setting_theme: Decorado da instancia
setting_trends: Mostrar as tendencias de hoxe
@@ -197,11 +205,13 @@ gl:
reblog: Enviar un correo cando alguén promociona a tua mensaxe
report: Enviar un correo cando se envíe unha denuncia
trending_tag: Un cancelo ser revisar está sendo tendencia
+ rule:
+ text: Regra
tag:
listable: Permitir que este cancelo apareza en buscas e no directorio de perfil
name: Cancelo
trendable: Permitir que este cancelo apareza en tendencias
- usable: Permitir que os toots utilicen este cancelo
+ usable: Permitir que as publicacións utilicen este cancelo
'no': Non
recommended: Recomendado
required:
diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml
index e8ef7bfbb..b45c2f357 100644
--- a/config/locales/simple_form.hr.yml
+++ b/config/locales/simple_form.hr.yml
@@ -48,10 +48,7 @@ hr:
follow_request: Netko zatraži da Vas prati
mention: Netko Vas spomene
reblog: Netko boosta Vaš status
- tag:
- name: Hashtag
'no': Ne
required:
- mark: "*"
text: obavezno
'yes': Da
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index d5e82ecb2..5434bc3b7 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -7,20 +7,26 @@ hu:
account_migration:
acct: Add meg a fióknév@domain fiókot, melybe költözni szeretnél
account_warning_preset:
- text: Használhatod a tülkökben szokásos szintaxist, URL-eket, hashtageket, megemlítéseket
+ text: Használhatod a bejegyzésekben szokásos szintaxist, URL-eket, hashtageket, megemlítéseket
title: Opcionális. Címzett számára nem látható
admin_account_action:
- include_statuses: A felhasználó látni fogja, melyik tülk okozta a moderációt vagy figyelmeztetést
+ include_statuses: A felhasználó látni fogja, melyik bejegyzés okozta a moderációs műveletet vagy figyelmeztetést
send_email_notification: A felhasználó magyarázatot kap arra, mi történt a fiókjával
- text_html: Opcionális. A tülk szintaxis használható. Egyszerűsítés végett létre is hozhatsz figyelmeztetéseket
+ text_html: Opcionális. A bejegyzések szintaxisa használható. Időmegtakarítás végett létre is hozhatsz figyelmeztetéseket
type_html: Megmondhatod, mi legyen vele %{acct}
+ types:
+ disable: A felhasználó nem fogja tudni használni a fiókját, de ettől még nem töröljük azt vagy rejtjük el a tartalmait.
+ none: Ezt használd ahhoz, hogy a felhasználónak figyelmeztetést küldj bármilyen más következmény nélkül.
+ sensitive: Ennek a felhasználónak minden médiatartalmát jelöljük meg kényesként.
+ silence: Megakadályozzuk, hogy ez a felhasználó nyilvános láthatóságú bejegyzést tegyen közzé, elrejtjük a bejegyzéseit és a róla szóló értesítéseket azok elől, akik nem közvetlen követői.
+ suspend: Minden interakciót megakadályozunk ezzel a fiókkal és töröljük a tartalmát. 30 napon belül még visszacsinálható.
warning_preset_id: Opcionális. A figyelmeztetés végére saját szöveget is írhatsz
announcement:
all_day: Bejelölve csak a dátumok számítanak majd a megadott intervallumból
ends_at: Opcionális. A közleményt ekkor automatikusan levesszük
scheduled_at: Hagyd üresen, hogy a közleményt azonnal közzétegyük
starts_at: Opcionális. Akkor használd, ha a közleményed adott időintervallumra vonatkozik
- text: Használhatod a tülkök szintaxisát. Ügyelj arra, mennyi helyet foglal el majd a közlemény a felhasználó képernyőjén
+ text: Használhatod a bejegyzések szintaxisát. Ügyelj arra, hogy mennyi helyet foglal el majd a közlemény a felhasználó képernyőjén
defaults:
autofollow: Akik meghívón keresztül regisztrálnak, automatikusan követni fognak téged
avatar: PNG, GIF vagy JPG. Maximum %{size}. Átméretezzük %{dimensions} pixelre
@@ -34,20 +40,20 @@ hu:
fields: A profilodon legfeljebb 4 bejegyzés szerepelhet táblázatos formában
header: PNG, GIF vagy JPG. Maximum %{size}. Átméretezzük %{dimensions} pixelre
inbox_url: Másold ki a használandó relé szerver kezdőoldalának URL-jét
- irreversible: A kiszűrt tülkök visszafordíthatatlanul eltűnnek, a szűrő későbbi törlése esetén is
+ irreversible: A kiszűrt bejegyzések visszafordíthatatlanul eltűnnek, a szűrő későbbi törlése esetén is
locale: A felhasználói felület, e-mailek, push üzenetek nyelve
locked: Egyenként engedélyezned kell a követőidet
password: Legalább 8 karakter
phrase: Illeszkedni fog kis/nagybetű függetlenül, és tartalom-figyelmeztetések mögött is
scopes: Mely API-kat érheti el az alkalmazás. Ha felső szintű hatáskört választasz, nem kell egyesével kiválasztanod az alatta lévőeket.
- setting_aggregate_reblogs: Ne mutassunk megtolásokat olyan tülkökhöz, melyeket nemrég toltak meg (csak új megtolásokra lép életbe)
- setting_default_sensitive: A szenzitív médiát alapesetben elrejtjük, de egyetlen kattintással előhozható
- setting_display_media_default: Szenzitív tartalomként jelölt média elrejtése
+ setting_aggregate_reblogs: Ne mutassunk megtolásokat olyan bejegyzésekhez, melyeket nemrég toltak meg (csak új megtolásokra lép életbe)
+ setting_default_sensitive: A kényes médiatartalmat alapesetben elrejtjük, de egyetlen kattintással előhozható
+ setting_display_media_default: Kényes tartalomnak jelölt média elrejtése
setting_display_media_hide_all: Mindig minden média elrejtése
setting_display_media_show_all: Mindig mutasd a szenzitív tartalomként jelölt médiát
setting_hide_network: Nem látszik majd a profilodon, kik követnek és te kiket követsz
- setting_noindex: A nyilvános profilodra és a tülkjeidre vonatkozik
- setting_show_application: A tülkök részletes nézetében látszani fog, milyen alkalmazást használtál a tülköléshez
+ setting_noindex: A nyilvános profilodra és a bejegyzéseidre vonatkozik
+ setting_show_application: A bejegyzések részletes nézetében látszani fog, milyen alkalmazást használtál a bejegyzés közzétételéhez
setting_use_blurhash: A kihomályosítás az eredeti képből történik, de minden részletet elrejt
setting_use_pending_items: Idővonal frissítése csak kattintásra automatikus görgetés helyett
username: A felhasználói neved egyedi lesz a %{domain} domainen
@@ -73,13 +79,15 @@ hu:
no_access: Elérés tiltása minden erőforráshoz
sign_up_requires_approval: Új regisztrációk csak a jóváhagyásoddal történhetnek majd meg
severity: Válaszd ki, mi történjen a kérésekkel erről az IP-ről
+ rule:
+ text: Írd le, mi a szabály vagy elvárás ezen a szerveren a felhasználók felé. Próbálj röviden, egyszerűen fogalmazni
sessions:
otp: 'Add meg a telefonodon generált kétlépcsős azonosító kódodat vagy használd az egyik tartalék bejelentkező kódot:'
webauthn: Ha ez egy USB kulcs, ellenőrizd, hogy csatlakoztattad és ha szükséges, aktiváltad is.
tag:
name: Csak a kis/nagybetűséget változtathatod meg, pl. hogy olvashatóbb legyen
user:
- chosen_languages: Ha aktív, csak a kiválasztott nyelvű tülkök jelennek majd meg a nyilvános idővonalon
+ chosen_languages: Ha aktív, csak a kiválasztott nyelvű bejegyzések jelennek majd meg a nyilvános idővonalon
labels:
account:
fields:
@@ -93,14 +101,14 @@ hu:
text: Figyelmeztető szöveg
title: Cím
admin_account_action:
- include_statuses: Helyezd az e-mailbe a jelentett tülköket
+ include_statuses: Tedd az e-mailbe a bejelentett bejegyzéseket
send_email_notification: Figyelmeztessük a felhasználót e-mailben
text: Egyedi figyelmeztetés
type: Művelet
types:
disable: Letiltás
none: Ne csinálj semmit
- sensitive: Szenzitív
+ sensitive: Kényes
silence: Elnémítás
suspend: Fiók felfüggesztése, adatok törlése visszaállíthatatlanul
warning_preset_id: Figyelmeztetés használata
@@ -141,21 +149,21 @@ hu:
setting_aggregate_reblogs: Megtolások csoportosítása az idővonalakon
setting_auto_play_gif: GIF-ek automatikus lejátszása
setting_boost_modal: Megerősítés kérése megtolás előtt
- setting_crop_images: Képek 16x9-re vágása nem kinyitott tülköknél
- setting_default_language: Tülkölés nyelve
- setting_default_privacy: Tülkök alapértelmezett láthatósága
- setting_default_sensitive: Minden médiafájl megjelölése szenzitívként
- setting_delete_modal: Megerősítés kérése tülk törlése előtt
+ setting_crop_images: Képek 16x9-re vágása nem kinyitott bejegyzéseknél
+ setting_default_language: Bejegyzések nyelve
+ setting_default_privacy: Bejegyzések láthatósága
+ setting_default_sensitive: Minden médiafájl megjelölése kényesként
+ setting_delete_modal: Megerősítés kérése bejegyzés törlése előtt
setting_disable_swiping: Elhúzás művelet kikapcsolása
setting_display_media: Média megjelenítése
setting_display_media_default: Alapértelmezés
setting_display_media_hide_all: Mindent elrejt
setting_display_media_show_all: Mindent mutat
- setting_expand_spoilers: Tartalom figyelmeztetéssel ellátott tülkök automatikus kinyitása
+ setting_expand_spoilers: Tartalom figyelmeztetéssel ellátott bejegyzések automatikus kinyitása
setting_hide_network: Hálózatod elrejtése
- setting_noindex: Megtiltom a keresőmotoroknak, hogy indexeljék a tülkjeimet
+ setting_noindex: Megtiltom a keresőmotoroknak, hogy indexeljék a tartalmaimat
setting_reduce_motion: Animációk mozgásának csökkentése
- setting_show_application: A tülkölésre használt alkalmazás feltüntetése
+ setting_show_application: Bejegyzések küldésére használt alkalmazás feltüntetése
setting_system_font_ui: Rendszer betűtípusának használata
setting_theme: Megjelenítési sablon
setting_trends: Mai trend mutatása
@@ -189,19 +197,21 @@ hu:
severity: Szabály
notification_emails:
digest: Összevont e-mailek küldése
- favourite: E-mail küldése, amikor valaki kedvencnek jelöli a tülködet
+ favourite: Valaki kedvencnek jelölte a bejegyzésedet
follow: E-mail küldése, amikor valaki követni kezd téged
follow_request: E-mail küldése, amikor valaki követni szeretne téged
mention: E-mail küldése, amikor valaki megemlít téged
pending_account: E-mail küldése, ha új fiókot kell engedélyezni
- reblog: E-mail küldése, amikor valaki megtolja a tülködet
+ reblog: Valaki megtolta a bejegyzésedet
report: E-mail küldése, ha új bejelentés érkezett
trending_tag: E-mail küldése, ha egy még nem látott hashtag trendi lett
+ rule:
+ text: Szabály
tag:
listable: A hashtag megjelenhet a profiladatbázisban
name: Hashtag
trendable: A hashtag megjelenhet a trendek között
- usable: Tülkök használhatják ezt a hashtaget
+ usable: Bejegyzések használhatják ezt a hashtaget
'no': Nem
recommended: Ajánlott
required:
diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml
index ff4bfcaab..df5995ac4 100644
--- a/config/locales/simple_form.hy.yml
+++ b/config/locales/simple_form.hy.yml
@@ -182,7 +182,6 @@ hy:
text: Ինչո՞ւ ես ցանկանում միանալ
ip_block:
comment: Մեկնաբանություն
- ip: IP
severities:
no_access: Մուտքը արգելել
sign_up_requires_approval: Սահմանափակել գրանցումները
@@ -205,7 +204,6 @@ hy:
'no': Ոչ
recommended: Խորհուրդ է տրվում
required:
- mark: "*"
text: պարտադիր
title:
sessions:
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index 4b469cd93..fe0fca5f9 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -14,6 +14,12 @@ id:
send_email_notification: Pengguna akan menerima penjelasan tentang apa yang terjadi pada akun mereka
text_html: Opsional. Anda dapat memakai sintaks toot. Anda dapat menambahkan preset peringatan untuk hemat waktu
type_html: Pilih apa yang perlu dilakukan dengan %{acct}
+ types:
+ disable: Cegah pengguna menggunakan akun mereka, tetapi jangan menghapus atau menyembunyikan konten mereka.
+ none: Gunakan ini untuk mengirim peringatan kepada pengguna, tanpa memicu tindakan lainnya.
+ sensitive: Paksa semua lampiran media pengguna sebagai sensitif.
+ silence: Cegah pengguna agar tidak dapat memposting dengan visibilitas publik, sembunyikan postingan dan notifikasi mereka dari orang yang tidak mengikuti mereka.
+ suspend: Cegah interaksi apapun dari/ke akun ini dan hapus kontennya. Dapat dikembalikan selama 30 hari.
warning_preset_id: Opsional. Anda tetap dapat menambahkan teks kustom pada akhir preset
announcement:
all_day: Saat dicentang, hanya tanggal dalam rentang waktu tertentu yang akan ditampilkan
@@ -30,12 +36,12 @@ id:
current_username: Untuk konfirmasi, mohon masukkan nama pengguna akun ini
digest: Hanya kirim setelah lama tidak aktif dan hanya jika Anda menerima pesan personal atas absensi Anda
discoverable: Direktori profil adalah cara lain agar akun Anda menyentuh audiens yang lebih luas
- email: Anda akan dikirimi surel konfirmasi
+ email: Anda akan dikirimi email konfirmasi
fields: Anda bisa memiliki hingga 4 item utk ditampilkan sebagai tabel di profil Anda
header: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
inbox_url: Salin URL dari halaman depan relai yang ingin Anda pakai
irreversible: Toot tersaring akan hilang permanen bahkan jika saringan dihapus kemudian
- locale: Bahasa antar muka pengguna, surel, dan notifikasi dorong
+ locale: Bahasa antar muka pengguna, email, dan notifikasi dorong
locked: Anda harus menerima permintaan pengikut secara manual dan setting privasi postingan akan diubah khusus untuk pengikut
password: Gunakan minimal 8 karakter
phrase: Akan dicocokkan terlepas dari luaran dalam teks atau peringatan konten dari toot
@@ -55,7 +61,7 @@ id:
domain_allow:
domain: Domain ini dapat mengambil data dari server ini dan data yang diterima akan diproses dan disimpan
email_domain_block:
- domain: Ini bisa nama domain yang muncul di alamat surel, data MX yang sedang diselesaikan oleh domain, atau IP server yang dipecahkan oleh data MX. Mereka akan dicek saat pendaftaran pengguna dan pendaftaran akan ditolak.
+ domain: Ini bisa nama domain yang muncul di alamat email, data MX yang sedang diselesaikan oleh domain, atau IP server yang dipecahkan oleh data MX. Mereka akan dicek saat pendaftaran pengguna dan pendaftaran akan ditolak.
with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam
featured_tag:
name: 'Anda mungkin ingin pakai salah satu dari ini:'
@@ -73,6 +79,8 @@ id:
no_access: Blokir akses ke seluruh sumber daya
sign_up_requires_approval: Pendaftaran baru memerlukan persetujuan Anda
severity: Pilih apa yang akan dilakukan dengan permintaan dari IP ini
+ rule:
+ text: Jelaskan aturan atau persyaratan untuk pengguna di server ini. Buatlah pendek dan sederhana
sessions:
otp: Masukkan kode dua-faktor dari handphone atau gunakan kode pemulihan anda.
webauthn: Jika ini kunci USB pastikan dalam keadaan tercolok dan, jika perlu, ketuk.
@@ -93,8 +101,8 @@ id:
text: Teks preset
title: Judul
admin_account_action:
- include_statuses: Sertakan toot terlapor pada surel
- send_email_notification: Beritahu pengguna per surel
+ include_statuses: Sertakan kiriman yang dilaporkan pada email
+ send_email_notification: Beri tahu pengguna per email
text: Peringatan kustom
type: Aksi
types:
@@ -166,7 +174,7 @@ id:
sign_in_token_attempt: Kode keamanan
type: Tipe impor
username: Nama pengguna
- username_or_email: Nama pengguna atau Surel
+ username_or_email: Nama pengguna atau Email
whole_word: Seluruh kata
email_domain_block:
with_dns_records: Termasuk data MX dan IP domain
@@ -193,10 +201,12 @@ id:
follow: Kirim email saat seseorang mengikuti anda
follow_request: Kirim email saat seseorang meminta untuk mengikuti anda
mention: Kirim email saat seseorang menyebut anda
- pending_account: Kirim surel ketika akun baru perlu ditinjau
+ pending_account: Kirim email ketika akun baru perlu ditinjau
reblog: Kirim email saat seseorang mem-boost status anda
- report: Kirim surel ketika laporan baru dikirim
- trending_tag: Kirim surel ketika tagar tak tertinjau jadi tren
+ report: Kirim email ketika laporan baru dikirim
+ trending_tag: Kirim email ketika tagar tak tertinjau jadi tren
+ rule:
+ text: Aturan
tag:
listable: Izinkan tagar ini muncul di penelusuran dan di direktori profil
name: Tagar
diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml
index 53e34f00c..c05d645ab 100644
--- a/config/locales/simple_form.is.yml
+++ b/config/locales/simple_form.is.yml
@@ -14,6 +14,12 @@ is:
send_email_notification: Notandinn mun fá útskýringar á því hvað gerðist með notandaaðganginn hans
text_html: Valfrjálst. Þú getur notað sömu skilgreiningar og fyrir tíst. Þú getur bætt inn forstilltum aðvörunum til að spara tíma
type_html: Veldu hvað eigi að gera við %{acct}
+ types:
+ disable: Koma í veg fyrir að notandinn noti aðganginn sinn, en ekki eyða eða fela efnið þeirra.
+ none: Nota þetta til að senda aðvörun til notandans, án þess að setja neina aðra aðgerð í gang.
+ sensitive: Þvinga fram að öll myndefnisviðhengi þessa notanda verði flögguð sem viðkvæmt efni.
+ silence: Koma í veg fyrir að notandinn geti birt færslur opinberlega, fela færslur þeirra og tilkynningar fyrir fólki sem ekki er að fylgjast með notandanum.
+ suspend: Koma í veg fyrir öll samskipti til eða frá þessum aðgangi og eyða öllu efni hans. Afturkallanlegt innan 30 daga.
warning_preset_id: Valkvætt. Þú getur ennþá bætt sérsniðnum texta við enda forstillinga
announcement:
all_day: Þegar merkt er við þetta, munu einungis birtast dagsetningar tímarammans
@@ -73,6 +79,8 @@ is:
no_access: Loka á aðgang að öllum tilföngum
sign_up_requires_approval: Nýskráningar munu þurfa samþykki þitt
severity: Veldu hvað munir gerast við beiðnir frá þessu IP-vistfangi
+ rule:
+ text: Lýstu reglum eða kröfum sem gerðar eru til notenda á þessum netþjóni. Reyndu að hafa þetta skýrt og skorinort
sessions:
otp: 'Settu inn tveggja-þátta kóðann sem farsímaforritið útbjó eða notaðu einn af endurheimtukóðunum þínum:'
webauthn: Ef þetta er USB-lykill, gakktu úr skugga um að honum sé stungið í samband og ef þörf þykir að ýta á hann.
@@ -197,6 +205,8 @@ is:
reblog: Einhver endurbirti stöðufærslu þína
report: Ný kæra hefur verið send inn
trending_tag: Óyfirfarið myllumerki er í umræðunni
+ rule:
+ text: Regla
tag:
listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni
name: Myllumerki
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 82f12861f..3067a287a 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -14,6 +14,12 @@ it:
send_email_notification: L'utente riceverà una spiegazione di ciò che è successo con suo account
text_html: Opzionale. Puoi usare la sintassi dei toot. Puoi aggiungere avvisi preimpostati per risparmiare tempo
type_html: Decidi cosa fare con %{acct}
+ types:
+ disable: Impedisce all'utente di utilizzare il suo account, ma non elimina o nasconde i suoi contenuti.
+ none: Usa questo per inviare un avviso all'utente, senza eseguire altre azioni.
+ sensitive: Forza tutti gli allegati multimediali di questo utente ad essere contrassegnati come sensibili.
+ silence: Impedisce all'utente di poter pubblicare con visibilità pubblica, nasconde i suoi post e notifiche a persone che non lo seguono.
+ suspend: Impedisce qualsiasi interazione da o per questo account ed elimina i suoi contenuti. Annullabile entro 30 giorni.
warning_preset_id: Opzionale. Puoi aggiungere un testo personalizzato alla fine di quello preimpostato
announcement:
all_day: Se selezionato, verranno visualizzate solo le date dell'intervallo di tempo
@@ -73,6 +79,8 @@ it:
no_access: Blocca l'accesso a tutte le risorse
sign_up_requires_approval: Le nuove iscrizioni richiederanno la tua approvazione
severity: Scegli cosa accadrà con le richieste da questo IP
+ rule:
+ text: Descrivi una regola o un requisito per gli utenti su questo server. Prova a mantenerla breve e semplice
sessions:
otp: 'Inserisci il codice a due fattori generato dall''app del tuo telefono o usa uno dei codici di recupero:'
webauthn: Se si tratta di una chiavetta USB assicurati di inserirla e, se necessario, toccarla.
@@ -119,7 +127,7 @@ it:
confirm_password: Conferma password
context: Contesti del filtro
current_password: Password corrente
- data: Data
+ data: Dati
discoverable: Inserisci questo account nella directory
display_name: Nome visualizzato
email: Indirizzo email
@@ -197,6 +205,8 @@ it:
reblog: Invia email quando qualcuno condivide un tuo toot
report: Manda una mail quando viene inviato un nuovo rapporto
trending_tag: Invia e-mail quando un hashtag non controllato è in tendenza
+ rule:
+ text: Regola
tag:
listable: Permetti a questo hashtag di apparire nella directory dei profili
name: Hashtag
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index abe986acd..4c4133baf 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -10,17 +10,23 @@ ja:
text: URL、ハッシュタグ、メンションなど、投稿に用いる構文が使用できます
title: オプションです。受信者には表示されません。
admin_account_action:
- include_statuses: ユーザーは取られた制限や警告の原因となったトゥートを確認できるようになります
+ include_statuses: ユーザーは取られた制限や警告の原因となった投稿を確認できるようになります
send_email_notification: ユーザーは自分のアカウントに何が起こったのか説明を受け取ります
text_html: オプションです。投稿に用いる構文を使うことができます。簡略化のためプリセット警告文を追加することができます
type_html: "%{acct}さんに対し、何を行うか選択してください"
+ types:
+ disable: ユーザーが自分のアカウントを使用できないようにします。コンテンツを削除したり非表示にすることはありません。
+ none: これを使用すると、他の操作をせずにユーザーに警告を送信できます。
+ sensitive: このユーザーが添付したメディアを強制的に閲覧注意にする
+ silence: ユーザーが公開投稿できないようにし、フォローしていない人に投稿や通知が表示されないようにする。
+ suspend: このアカウントとのやりとりを止め、コンテンツを削除します。30日以内は取消可能です。
warning_preset_id: オプションです。プリセット警告文の末尾に任意の文字列を追加することができます
announcement:
all_day: 有効化すると、対象期間の箇所に日付だけが表示されます
ends_at: オプションです。指定すると、お知らせの掲載はその日時で自動的に終了します
scheduled_at: お知らせを今すぐ掲載する場合は空欄にしてください
starts_at: オプションです。お知らせしたい事柄の期間が決まっている場合に使用します
- text: トゥートと同じ構文を使用できます。アナウンスが占める画面のスペースに注意してください
+ text: 投稿と同じ構文を使用できます。アナウンスが占める画面のスペースに注意してください
defaults:
autofollow: 招待から登録した人が自動的にあなたをフォローするようになります
avatar: "%{size}までのPNG、GIF、JPGが利用可能です。%{dimensions}pxまで縮小されます"
@@ -34,20 +40,20 @@ ja:
fields: プロフィールに表として4つまでの項目を表示することができます
header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます"
inbox_url: 使用したいリレーサーバーのトップページからURLをコピーします
- irreversible: フィルターが後で削除されても、除外されたトゥートは元に戻せなくなります
+ irreversible: フィルターが後で削除されても、除外された投稿は元に戻せなくなります
locale: ユーザーインターフェース、メールやプッシュ通知の言語
locked: フォロワーを手動で承認する必要があります
password: 少なくとも8文字は入力してください
- phrase: トゥートの大文字小文字や閲覧注意に関係なく一致
+ phrase: 投稿内容の大文字小文字や閲覧注意に関係なく一致
scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
- setting_aggregate_reblogs: 最近ブーストされたトゥートが新たにブーストされても表示しません (設定後受信したものにのみ影響)
+ setting_aggregate_reblogs: 最近ブーストされた投稿が新たにブーストされても表示しません (設定後受信したものにのみ影響)
setting_default_sensitive: 閲覧注意状態のメディアはデフォルトでは内容が伏せられ、クリックして初めて閲覧できるようになります
setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
setting_display_media_hide_all: メディアを常に隠す
setting_display_media_show_all: メディアを常に表示する
setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
- setting_show_application: トゥートするのに使用したアプリがトゥートの詳細ビューに表示されるようになります
+ setting_show_application: 投稿するのに使用したアプリが投稿の詳細ビューに表示されるようになります
setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています
setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします
username: あなたのユーザー名は %{domain} の中で重複していない必要があります
@@ -73,13 +79,15 @@ ja:
no_access: すべてのリソースへのアクセスをブロックします
sign_up_requires_approval: 承認するまで新規登録が完了しなくなります
severity: このIPに対する措置を選択してください
+ rule:
+ text: ユーザーのためのルールや要件を記述してください。短くシンプルにしてください。
sessions:
otp: '携帯電話のアプリで生成された二段階認証コードを入力するか、リカバリーコードを使用してください:'
webauthn: USBキーの場合は、必ず挿入し、必要に応じてタップしてください。
tag:
name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます
user:
- chosen_languages: 選択すると、選択した言語のトゥートのみが公開タイムラインに表示されるようになります
+ chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります
labels:
account:
fields:
@@ -93,7 +101,7 @@ ja:
text: プリセット警告文
title: タイトル
admin_account_action:
- include_statuses: 通報されたトゥートをメールに含める
+ include_statuses: 通報された投稿をメールに含める
send_email_notification: メールでユーザーに通知
text: カスタム警告文
type: アクション
@@ -141,17 +149,17 @@ ja:
setting_aggregate_reblogs: ブーストをまとめる
setting_auto_play_gif: アニメーションGIFを自動再生する
setting_boost_modal: ブーストする前に確認ダイアログを表示する
- setting_crop_images: トゥート詳細以外では画像を16:9に切り抜く
+ setting_crop_images: 投稿の詳細以外では画像を16:9に切り抜く
setting_default_language: 投稿する言語
setting_default_privacy: 投稿の公開範囲
setting_default_sensitive: メディアを常に閲覧注意としてマークする
- setting_delete_modal: トゥートを削除する前に確認ダイアログを表示する
+ setting_delete_modal: 投稿を削除する前に確認ダイアログを表示する
setting_disable_swiping: スワイプでの切り替えを無効にする
setting_display_media: メディアの表示
setting_display_media_default: 標準
setting_display_media_hide_all: 非表示
setting_display_media_show_all: 表示
- setting_expand_spoilers: 閲覧注意としてマークされたトゥートを常に展開する
+ setting_expand_spoilers: 閲覧注意としてマークされた投稿を常に展開する
setting_hide_network: 繋がりを隠す
setting_noindex: 検索エンジンによるインデックスを拒否する
setting_reduce_motion: アニメーションの動きを減らす
@@ -194,14 +202,16 @@ ja:
follow_request: フォローリクエストを受けた時
mention: 返信が来た時
pending_account: 新しいアカウントの承認が必要な時
- reblog: トゥートがブーストされた時
+ reblog: 投稿がブーストされた時
report: 通報を受けた時
trending_tag: 未審査のハッシュタグが人気の時
+ rule:
+ text: ルール
tag:
listable: 検索とディレクトリへの使用を許可する
name: ハッシュタグ
trendable: トレンドへの表示を許可する
- usable: トゥートへの使用を許可する
+ usable: 投稿への使用を許可する
'no': いいえ
recommended: おすすめ
required:
diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml
index bbc23ed51..a6242951f 100644
--- a/config/locales/simple_form.kab.yml
+++ b/config/locales/simple_form.kab.yml
@@ -89,7 +89,6 @@ kab:
text: Acimi tebγiḍ ad ternuḍ iman-ik?
ip_block:
comment: Awennit
- ip: IP
severities:
no_access: Sewḥel anekcum
severity: Alugen
@@ -101,6 +100,5 @@ kab:
'no': Ala
recommended: Yettuwelleh
required:
- mark: "*"
text: ilaq
'yes': Ih
diff --git a/config/locales/simple_form.kk.yml b/config/locales/simple_form.kk.yml
index 544c684a6..63fe3d460 100644
--- a/config/locales/simple_form.kk.yml
+++ b/config/locales/simple_form.kk.yml
@@ -2,79 +2,16 @@
kk:
simple_form:
hints:
- account_alias:
- acct: Specify the username@domain of the account you want to move from
- account_migration:
- acct: Specify the username@domain of the account you want to move to
- account_warning_preset:
- text: You can use toot syntax, such as URLs, hashtags and mentions
- admin_account_action:
- include_statuses: The user will see which toots have caused the moderation action or warning
- send_email_notification: The user will receive an explanation of what happened with their account
- text_html: Optional. You can use toot syntax. You can add warning presets to save time
- type_html: Choose what to do with %{acct}
- warning_preset_id: Optional. You can still add custom text to end of the preset
defaults:
- autofollow: People who sign up through the invite will automatically follow you
- avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
- bot: This account mainly performs automated actions and might not be monitored
- context: One or multiple contexts where the filter should apply
- current_password: For security purposes please enter the password of the current account
- current_username: To confirm, please enter the username of the current account
- digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
- discoverable: The profile directory is another way by which your account can reach a wider audience
- email: You will be sent a confirmation e-mail
- fields: You can have up to 4 items displayed as a table on your profile
- header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
- inbox_url: Copy the URL from the frontpage of the relay you want to use
- irreversible: Filtered toots will disappear irreversibly, even if filter is later removed
- locale: The language of the user interface, e-mails and push notifications
- locked: Requires you to manually approve followers
- password: Use at least 8 characters
- phrase: Will be matched regardless of casing in text or content warning of a toot
- scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
- setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
- setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
- setting_display_media_default: Hide media marked as sensitive
setting_display_media_hide_all: Always hide all media
setting_display_media_show_all: Always show media marked as sensitive
- setting_hide_network: Who you follow and who follows you will not be shown on your profile
- setting_noindex: Affects your public profile and status pages
- setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
- setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
- setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
- username: Your username will be unique on %{domain}
- whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
- domain_allow:
- domain: This domain will be able to fetch data from this server and incoming data from it will be processed and stored
- featured_tag:
- name: 'You might want to use one of these:'
- form_challenge:
- current_password: You are entering a secure area
- imports:
- data: CSV file exported from another Mastodon server
- invite_request:
- text: This will help us review your application
- sessions:
- otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
- tag:
- name: You can only change the casing of the letters, for example, to make it more readable
- user:
- chosen_languages: When checked, only toots in selected languages will be displayed in public timelines
labels:
account:
fields:
- name: Label
value: Мазмұн
- account_alias:
- acct: Handle of the old account
- account_migration:
- acct: Handle of the new account
account_warning_preset:
text: Алдын ала белгіленген мәтін
admin_account_action:
- include_statuses: Include reported toots in the e-mail
- send_email_notification: Notify the user per e-mail
text: Жеке ескерту
type: Әрекет
types:
@@ -82,7 +19,6 @@ kk:
none: Ештеңе істемеу
silence: Үнсіз
suspend: Suspend and irreversibly delete account data
- warning_preset_id: Use a warning preset
defaults:
autofollow: Жазылуға шақыру
avatar: Аватар
@@ -99,8 +35,6 @@ kk:
expires_in: Аяқталу мерзімі
fields: Профиль метадатасы
header: Басы
- inbox_url: URL of the relay inbox
- irreversible: Drop instead of hide
locale: Интерфейс тілі
locked: Аккаунтты құлыптау
max_uses: Максимум қолданушы саны
@@ -110,7 +44,6 @@ kk:
password: Құпиясөз
phrase: Кілтсөз немесе фраза
setting_advanced_layout: Кеңейтілген веб-интерфейс қосу
- setting_aggregate_reblogs: Group boosts in timelines
setting_auto_play_gif: GIF анимацияларды бірден қосу
setting_boost_modal: Бөлісу алдында растау диалогын көрсету
setting_crop_images: Кеңейтілмеген жазбаларда суреттерді 16х9 көлеміне кес
@@ -124,12 +57,8 @@ kk:
setting_display_media_show_all: Бәрін көрсет
setting_expand_spoilers: Мазмұн ескертуімен белгіленген жазбаларды кеңейту
setting_hide_network: Желіні жасыру
- setting_noindex: Opt-out of search engine indexing
- setting_reduce_motion: Reduce motion in animations
- setting_show_application: Disclose application used to send toots
setting_system_font_ui: Жүйенің әдепкі қарпі
setting_theme: Сайт темасы
- setting_trends: Show today's trends
setting_unfollow_modal: Анфоллоудан бұрын растау диалогын көрсету
setting_use_blurhash: Жасырын медиаға арналған түрлі-түсті градиенттерді көрсетіңіз
setting_use_pending_items: Баяу режим
@@ -166,6 +95,5 @@ kk:
'no': Жоқ
recommended: Рекоменделген
required:
- mark: "*"
text: міндетті
'yes': Иә
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 5c47a99c4..7fb7506f9 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -7,47 +7,53 @@ ko:
account_migration:
acct: 이동하고자 하는 목적지 계정의 사용자이름@도메인을 설정하세요
account_warning_preset:
- text: URL, 해시태그, 멘션과 같은 툿 문법을 사용할 수 있습니다
+ text: URL, 해시태그, 멘션과 같은 게시물 문법을 사용할 수 있습니다
title: 선택사항. 수신자에게는 보이지 않습니다
admin_account_action:
- include_statuses: 사용자는 어떤 툿에 대해 경고나 조치가 취해졌는지 볼 수 있게 됩니다
+ include_statuses: 사용자는 어떤 게시물에 대해 경고나 조치가 취해졌는지 볼 수 있게 됩니다
send_email_notification: 유저는 어떤 일이 일어났는 지에 대한 설명을 받게 됩니다
- text_html: 선택사항. 툿 문법을 사용할 수 있습니다. 경고 틀을 추가하여 시간을 절약할 수 있습니다
+ text_html: 선택사항. 게시물 문법을 사용할 수 있습니다. 경고 틀을 추가하여 시간을 절약할 수 있습니다
type_html: "%{acct}에 대해 취할 행동 선택"
+ types:
+ disable: 사용자가 계정을 사용하는 것을 막지만, 그들의 게시물을 삭제하거나 숨기지는 않습니다.
+ none: 이것을 사용해서 어떤 동작도 하지 않고, 사용자에게 경고를 보냅니다.
+ sensitive: 이 사용자의 모든 미디어 첨부를 민감함으로 강제 설정합니다.
+ silence: 이 사용자가 공개 설정으로 게시물을 작성할 수 없도록 하고, 그를 팔로우 하지 않는 사람에게는 이 사용자의 게시물과 알림을 숨깁니다.
+ suspend: 이 계정과의 모든 상호작용을 막고 모든 내용을 삭제합니다. 30일 이내에 되돌리기가 가능합니다.
warning_preset_id: 선택사항. 틀의 마지막에 임의의 텍스트를 추가 할 수 있습니다
announcement:
all_day: 체크 되었을 경우, 그 시간에 속한 날짜들에만 표시됩니다
ends_at: 옵션입니다. 공지사항이 이 시간에 자동으로 발행 중지 됩니다
scheduled_at: 공백으로 두면 공지사항이 곧바로 발행 됩니다
starts_at: 공지사항이 특정한 시간에 종속 될 때를 위한 옵션입니다
- text: 툿 문법을 사용할 수 있습니다. 공지사항은 사용자의 화면 상단 공간을 차지한다는 것을 명심하세요
+ text: 게시물 문법을 사용할 수 있습니다. 공지사항은 사용자의 화면 상단 공간을 차지한다는 것을 명심하세요
defaults:
autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다
avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨
- bot: 사람들에게 계정이 사람이 아님을 알립니다
+ bot: 이 계정이 대부분 자동으로 작업을 수행하고 잘 확인하지 않는다는 것을 알립니다.
context: 필터를 적용 할 한 개 이상의 컨텍스트
current_password: 보안을 위해 현재 계정의 암호를 입력해주세요
current_username: 확인을 위해, 현재 계정의 사용자명을 입력해주세요
digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
- discoverable: 프로필 책자는 내 계정이 더 많은 관심을 갖게 할 수 있는 다른 방법입니다
+ discoverable: 당신의 계정을 추천과 기타 기능들에 의해 다른 사람들이 발견할 수 있게 허용합니다
email: 당신은 확인 메일을 받게 됩니다
fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다
header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨
inbox_url: 사용 할 릴레이 서버의 프론트페이지에서 URL을 복사합니다
- irreversible: 필터링 된 툿은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다
+ irreversible: 필터링 된 게시물은 나중에 필터가 사라지더라도 돌아오지 않게 됩니다
locale: 유저 인터페이스, 이메일, 푸시 알림 언어
- locked: 수동으로 팔로워를 승인하고, 기본 툿 프라이버시 설정을 팔로워 전용으로 변경
+ locked: 팔로우 요청을 승인함으로써 누가 당신을 팔로우 할 수 있는지를 수동으로 제어합니다.
password: 최소 8글자
- phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
+ phrase: 게시물 내용이나 열람주의 내용 안에서 대소문자 구분 없이 매칭 됩니다
scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
- setting_aggregate_reblogs: 내가 부스트 했던 툿은 새로 부스트 되어도 보여주지 않습니다
+ setting_aggregate_reblogs: 최근에 부스트 됐던 게시물은 새로 부스트 되어도 보여주지 않기 (새로 받은 부스트에만 적용됩니다)
setting_default_sensitive: 민감한 미디어는 기본적으로 가려져 있으며 클릭해서 볼 수 있습니다
setting_display_media_default: 민감함으로 설정 된 미디어 가리기
setting_display_media_hide_all: 항상 모든 미디어를 가리기
setting_display_media_show_all: 민감함으로 설정 된 미디어를 항상 보이기
- setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다
+ setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들을 내 프로필에서 숨깁니다
setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다
- setting_show_application: 당신이 툿을 작성하는데에 사용한 앱이 툿의 상세정보에 표시 됩니다
+ setting_show_application: 당신이 게시물을 작성하는데에 사용한 앱이 툿의 상세정보에 표시 됩니다
setting_use_blurhash: 그라디언트는 숨겨진 내용의 색상을 기반으로 하지만 상세 내용은 보이지 않게 합니다
setting_use_pending_items: 타임라인의 새 게시물을 자동으로 보여 주는 대신, 클릭해서 나타내도록 합니다
username: 당신의 유저네임은 %{domain} 안에서 유일해야 합니다
@@ -73,13 +79,15 @@ ko:
no_access: 모든 자원에 대한 접근 차단
sign_up_requires_approval: 새 가입이 승인을 필요로 하도록 합니다
severity: 해당 IP로부터의 요청에 대해 무엇이 일어나게 할 지 고르세요
+ rule:
+ text: 이 서버 사용자들이 지켜야 할 규칙과 요구사항을 설명해주세요. 짧고 간단하게 작성해주세요
sessions:
otp: '휴대전화에서 생성 된 2단계 인증 코드를 입력하거나, 복구 코드 중 하나를 사용하세요:'
webauthn: USB 키라면 삽입했는지 확인하고, 필요하다면 누르세요.
tag:
name: 읽기 쉽게하기 위한 글자의 대소문자만 변경할 수 있습니다.
user:
- chosen_languages: 체크하면, 선택 된 언어들만 공개 타임라인에 보여집니다
+ chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다
labels:
account:
fields:
@@ -93,7 +101,7 @@ ko:
text: 프리셋 텍스트
title: 제목
admin_account_action:
- include_statuses: 신고된 툿을 이메일에 포함
+ include_statuses: 신고된 게시물을 이메일에 포함
send_email_notification: 이메일로 유저에게 알리기
text: 커스텀 경고
type: 조치
@@ -120,7 +128,7 @@ ko:
context: 필터 컨텍스트
current_password: 현재 암호 입력
data: 데이터
- discoverable: 이 계정을 책자에서 찾을 수 있도록 합니다
+ discoverable: 계정을 다른 사람들에게 추천하기
display_name: 표시되는 이름
email: 이메일 주소
expires_in: 만료시각
@@ -130,7 +138,7 @@ ko:
inbox_url: 릴레이 서버의 inbox URL
irreversible: 숨기는 대신 삭제
locale: 인터페이스 언어
- locked: 계정 잠금
+ locked: 팔로우 요청 필요
max_uses: 사용 횟수 제한
new_password: 새로운 암호 입력
note: 자기소개
@@ -141,18 +149,18 @@ ko:
setting_aggregate_reblogs: 타임라인의 부스트를 그룹화
setting_auto_play_gif: 애니메이션 GIF를 자동 재생
setting_boost_modal: 부스트 전 확인 창을 표시
- setting_crop_images: 확장되지 않은 툿의 이미지를 16x9로 자르기
+ setting_crop_images: 확장되지 않은 게시물의 이미지를 16x9로 자르기
setting_default_language: 게시물 언어
setting_default_privacy: 툿 프라이버시
setting_default_sensitive: 미디어를 언제나 민감한 컨텐츠로 설정
- setting_delete_modal: 툿 삭제 전 확인 창을 표시
+ setting_delete_modal: 게시물 삭제 전 확인 창을 표시
setting_disable_swiping: 스와이프 모션 비활성화
setting_display_media: 미디어 표시
setting_display_media_default: 기본
setting_display_media_hide_all: 모두 가리기
setting_display_media_show_all: 모두 보이기
setting_expand_spoilers: 열람주의 툿을 항상 펼치기
- setting_hide_network: 내 네트워크 숨기기
+ setting_hide_network: 내 인맥 숨기기
setting_noindex: 검색엔진의 인덱싱을 거절
setting_reduce_motion: 애니메이션 줄이기
setting_show_application: 툿 작성에 사용한 앱을 공개
@@ -197,11 +205,13 @@ ko:
reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기
report: 새 신고 등록시 이메일로 알리기
trending_tag: 리뷰 되지 않은 해시태그가 유행할 때 이메일 보내기
+ rule:
+ text: 규칙
tag:
- listable: 이 해시태그가 프로필 책자에 보여지도록 허용
+ listable: 이 해시태그가 검색과 추천에 보여지도록 허용
name: 해시태그
trendable: 이 해시태그가 유행에 보여지도록 허용
- usable: 이 해시태그를 툿에 사용 가능하도록 허용
+ usable: 이 해시태그를 게시물에 사용 가능하도록 허용
'no': 아니오
recommended: 추천함
required:
diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml
index 8ff8a5a46..0a6cbc703 100644
--- a/config/locales/simple_form.ku.yml
+++ b/config/locales/simple_form.ku.yml
@@ -181,7 +181,6 @@ ku:
text: بۆچی دەتەوێت بەشدار بیت?
ip_block:
comment: بۆچوون
- ip: IP
severities:
no_access: بلۆککردنی دهستپێگهیشتن
sign_up_requires_approval: سنووردارکردنی چوونەناو
@@ -204,7 +203,6 @@ ku:
'no': نە
recommended: پێشنیارکراوە
required:
- mark: "*"
text: پێویستە
title:
sessions:
diff --git a/config/locales/simple_form.kw.yml b/config/locales/simple_form.kw.yml
new file mode 100644
index 000000000..b2cfc12ff
--- /dev/null
+++ b/config/locales/simple_form.kw.yml
@@ -0,0 +1 @@
+kw:
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 8abc9448c..4fdcb70f0 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -12,8 +12,14 @@ nl:
admin_account_action:
include_statuses: De gebruiker ziet welke toots verantwoordelijk zijn voor de moderatieactie of waarschuwing
send_email_notification: De gebruiker ontvangt een uitleg over wat er met hun account is gebeurd
- text_html: Optioneel. Je kunt voor toots specifieke tekst gebruiken. Om tijd te besparen kun je voorinstellingen van waarschuwingen toevoegen
+ text_html: Optioneel. Je kunt voor toots specifieke tekst gebruiken. Om tijd te besparen kun je presets voor waarschuwingen toevoegen
type_html: Kies wat er met %{acct} moet gebeuren
+ types:
+ disable: Voorkom dat de gebruiker hun account gebruikt, maar verwijder of verberg de inhoud niet.
+ none: Gebruik dit om een waarschuwing naar de gebruiker te sturen, zonder dat nog een andere actie wordt uitgevoerd.
+ sensitive: Forceer dat alle mediabijlagen van deze gebruiker als gevoelig worden gemarkeerd.
+ silence: Voorkom dat de gebruiker openbare toots kan versturen, verberg hun toots en meldingen voor mensen die hen niet volgen.
+ suspend: Alle interacties van en met dit account blokkeren en de inhoud verwijderen. Dit kan binnen dertig dagen worden teruggedraaid.
warning_preset_id: Optioneel. Je kunt nog steeds handmatig tekst toevoegen aan het eind van de voorinstelling
announcement:
all_day: Wanneer dit is aangevinkt worden alleen de datums binnen het tijdvak getoond
@@ -24,7 +30,7 @@ nl:
defaults:
autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
- bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord
+ bot: Signaal naar andere gebruikers toe dat dit account hoofdzakelijk geautomatiseerde berichten stuurt en mogelijk niet wordt gemonitord
context: Een of meerdere locaties waar de filter actief moet zijn
current_password: Voer voor veiligheidsredenen het wachtwoord van je huidige account in
current_username: Voer ter bevestiging de gebruikersnaam van je huidige account in
@@ -36,9 +42,9 @@ nl:
inbox_url: Kopieer de URL van de voorpagina van de relayserver die je wil gebruiken
irreversible: Gefilterde toots verdwijnen onomkeerbaar, zelfs als de filter later wordt verwijderd
locale: De taal van de gebruikersomgeving, e-mails en pushmeldingen
- locked: Vereist dat je handmatig volgers moet accepteren
+ locked: Door het goedkeuren van volgers handmatig bepalen wie jou mag volgen
password: Gebruik tenminste 8 tekens
- phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen
+ phrase: Komt overeen ongeacht hoofd-/kleine letters of een inhoudswaarschuwing
scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen.
setting_aggregate_reblogs: Geen nieuwe boosts tonen voor toots die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts)
setting_default_sensitive: Gevoelige media wordt standaard verborgen en kan met één klik worden getoond
@@ -67,10 +73,17 @@ nl:
text: Dit helpt ons om jouw aanvraag te beoordelen
ip_block:
comment: Optioneel. Vergeet niet te onthouden waarom je deze regel hebt toegevoegd.
+ expires_in: Het aantal IP-adressen zijn beperkt. Ze worden soms gedeeld en wisselen vaak van eigenaar. Om deze reden worden onbeperkte IP-blokkades niet aanbevolen.
+ ip: Voer een IPv4- of IPv6-adres in. Je kunt hele reeksen blokkeren met de CIDR-methode. Pas op dat je jezelf niet buitensluit!
severities:
+ no_access: Toegang tot de hele server blokkeren
sign_up_requires_approval: Nieuwe registraties vereisen jouw goedkeuring
+ severity: Kies wat er moet gebeuren met aanvragen van dit IP-adres
+ rule:
+ text: Omschrijf een regel of vereiste voor gebruikers op deze server. Probeer het kort en simpel te houden
sessions:
- otp: 'Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcodes:'
+ otp: 'Voer de tweestaps-toegangscode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcodes:'
+ webauthn: Wanneer het een USB-sleutel is, zorg er dan voor dat je deze in de computer steekt en, wanneer nodig, activeert.
tag:
name: Je kunt elk woord met een hoofdletter beginnen, om zo bijvoorbeeld de tekst leesbaarder te maken
user:
@@ -85,7 +98,7 @@ nl:
account_migration:
acct: Mastodonadres van het nieuwe account
account_warning_preset:
- text: Tekst van voorinstelling
+ text: Tekst van preset
title: Titel
admin_account_action:
include_statuses: Gerapporteerde toots aan de e-mail toevoegen
@@ -115,7 +128,7 @@ nl:
context: Filterlocaties
current_password: Huidig wachtwoord
data: Gegevens
- discoverable: Dit account in de gebruikersgids tonen
+ discoverable: Dit account laten aanbevelen en in de gebruikersgids tonen
display_name: Weergavenaam
email: E-mailadres
expires_in: Vervalt na
@@ -125,18 +138,18 @@ nl:
inbox_url: Inbox-URL van de relayserver
irreversible: Verwijderen in plaats van verbergen
locale: Taal van de gebruikersomgeving
- locked: Maak account besloten
+ locked: Volgverzoek vereisen
max_uses: Max. aantal keer te gebruiken
new_password: Nieuwe wachtwoord
note: Bio
- otp_attempt: Tweestaps-aanmeldcode
+ otp_attempt: Tweestaps-toegangscode
password: Wachtwoord
phrase: Trefwoord of zinsdeel
setting_advanced_layout: Geavanceerde webomgeving inschakelen
setting_aggregate_reblogs: Boosts in tijdlijnen groeperen
setting_auto_play_gif: Speel geanimeerde GIF's automatisch af
setting_boost_modal: Vraag voor het boosten van een toot een bevestiging
- setting_crop_images: Afbeeldingen tot 16x9 besnijden in niet uitgebreide toots
+ setting_crop_images: Afbeeldingen bijsnijden tot 16x9 in toots op tijdlijnen
setting_default_language: Taal van jouw toots
setting_default_privacy: Standaardzichtbaarheid van jouw toots
setting_default_sensitive: Media altijd als gevoelig markeren
@@ -146,7 +159,7 @@ nl:
setting_display_media_default: Standaard
setting_display_media_hide_all: Alles verbergen
setting_display_media_show_all: Alles tonen
- setting_expand_spoilers: Altijd toots met tekstwaarschuwingen uitklappen
+ setting_expand_spoilers: Altijd toots met inhoudswaarschuwingen uitklappen
setting_hide_network: Jouw volgers en wie je volgt verbergen
setting_noindex: Jouw toots niet door zoekmachines laten indexeren
setting_reduce_motion: Langzamere animaties
@@ -192,8 +205,10 @@ nl:
reblog: Wanneer iemand jouw toot heeft geboost
report: Bij het indienen van een nieuwe rapportage
trending_tag: Wanneer een nog niet beoordeelde hashtag trending is
+ rule:
+ text: Regel
tag:
- listable: Toestaan dat deze hashtag in zoekopdrachten en in de gebruikersgids te zien valt
+ listable: Toestaan dat deze hashtag in zoekopdrachten en aanbevelingen te zien valt
name: Hashtag
trendable: Toestaan dat deze hashtag onder trends te zien valt
usable: Toestaan dat deze hashtag in toots gebruikt mag worden
diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml
index f4a62ac07..04f8c2b28 100644
--- a/config/locales/simple_form.nn.yml
+++ b/config/locales/simple_form.nn.yml
@@ -119,6 +119,7 @@ nn:
expires_in: Vert ugyldig etter
fields: Profilmetadata
header: Overskrift
+ honeypot: "%{label} (ikke fyll ut)"
inbox_url: URL-addressen til overgangsinnboksen
irreversible: Forkast i staden for å gøyma
locale: Språk
@@ -189,6 +190,8 @@ nn:
reblog: Send e-post når nokon framhevar statusen din
report: Send e-post når nokon rapporterer noko
trending_tag: Ein emneknagg som ikkje er sett igjennom er på veg opp
+ rule:
+ text: Regler
tag:
listable: Tillat denne emneknaggen å synast i søk og i profilmappa
name: Emneknagg
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index cdf3d61e8..81913086e 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -119,6 +119,7 @@
expires_in: Utløper etter
fields: Profilmetadata
header: Overskrift
+ honeypot: "%{label} (ikke fyll ut)"
inbox_url: URL til overgangsinnboksen
irreversible: Forkast i stedet for å skjule
locale: Språk
@@ -189,6 +190,8 @@
reblog: Send e-post når noen fremhever din status
report: Ny rapport er sendt inn
trending_tag: En ugjennomgått emneknagg trender
+ rule:
+ text: Regler
tag:
listable: Tillat denne emneknaggen å vises i søk og på profilmappen
name: Emneknagg
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 79c621ee2..e2520da3f 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -133,7 +133,7 @@ oc:
locked: Far venir lo compte privat
max_uses: Limit d’utilizacions
new_password: Nòu senhal
- note: Bio
+ note: Biografia
otp_attempt: Còdi Two-factor
password: Senhal
phrase: Senhal o frasa
@@ -197,6 +197,8 @@ oc:
reblog: Enviar un corrièl quand qualqu’un tòrna partejar vòstre estatut
report: Enviar un corrièl pels nòus senhalaments
trending_tag: Enviar un corrièl quand una etiqueta pas repassada es en tendéncia
+ rule:
+ text: Règla
tag:
listable: Permetre a aquesta etiqueta d’aparéisser a las recèrcas e a l’annuari de perfils
name: Etiqueta
diff --git a/config/locales/simple_form.pa.yml b/config/locales/simple_form.pa.yml
new file mode 100644
index 000000000..bb8a6c834
--- /dev/null
+++ b/config/locales/simple_form.pa.yml
@@ -0,0 +1 @@
+pa:
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 6fc33ab08..b217cd738 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -14,6 +14,12 @@ pl:
send_email_notification: Użytkownik otrzyma informację, co stało się z jego kontem
text_html: Możesz używać składni której używasz we wpisach. Możesz dodać szablon ostrzeżenia aby zaoszczędzić czas
type_html: Wybierz co chcesz zrobić z %{acct}
+ types:
+ disable: Nie pozwalaj użytkownikowi na korzystanie ze swojego konta, ale nie usuwaj ani nie ukrywaj jego zawartości.
+ none: Użyj tego, aby wysłać użytkownikowi ostrzeżenie, nie wywołując żadnego innego działania.
+ sensitive: Wymuś oznaczanie wszystkich załączników multimedialnych tego użytkownika jako wrażliwe.
+ silence: Zablokuj użytkownikowi możliwość publikowania z widocznością publiczną, ukrywaj jego wpisy i powiadomienia przed osobami, które go nie obserwują.
+ suspend: Zapobiegaj wszelkim interakcjom z tym kontem i usuń jego zawartość. Odwracalne w ciągu 30 dni.
warning_preset_id: Nieobowiązkowe. Możesz dodać niestandardowy tekst do końcowki szablonu
announcement:
all_day: Jeżeli zaznaczone, tylko daty z przedziału czasu będą wyświetlane
@@ -73,6 +79,8 @@ pl:
no_access: Zablokuj dostęp do wszystkich zasobów
sign_up_requires_approval: Nowe rejestracje będą wymagać twojej zgody
severity: Wybierz co ma się stać z żadaniami z tego adresu IP
+ rule:
+ text: Opisz wymóg lub regułę dla użytkowników na tym serwerze. Postaraj się, aby była krótka i prosta
sessions:
otp: 'Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych:'
webauthn: Jeżeli jest to klucz USB, upewnij się, że go włożyłeś i, jeśli to konieczne, naciśnij go.
@@ -197,6 +205,8 @@ pl:
reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie
trending_tag: Nieprzejrzany hashtag jest na czasie
+ rule:
+ text: Zasada
tag:
listable: Pozwól, aby ten hashtag pojawiał się w wynikach wyszukiwania i katalogu profilów
name: Hashtag
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 574a3e3dc..358e054f6 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -14,6 +14,9 @@ pt-BR:
send_email_notification: O usuário receberá uma explicação do que aconteceu com a própria conta
text_html: Opcional. Você pode usar a sintaxe do toot e também pode adicionar avisos pré-definidos para poupar tempo
type_html: Decida o que fazer com %{acct}
+ types:
+ disable: Impedir o usuário de usar sua conta, porém sem deletá-la ou escondê-la.
+ none: Use isto para enviar uma advertência ao usuário, sem nenhuma outra ação.
warning_preset_id: Opcional. Você ainda pode adicionar texto personalizado no final do aviso pré-definido
announcement:
all_day: Quando marcada, apenas as datas do período serão mostradas
@@ -73,6 +76,8 @@ pt-BR:
no_access: Bloquear o acesso a todos os recursos
sign_up_requires_approval: Novos registros exigirão sua aprovação
severity: Escolha o que acontecerá com as solicitações deste IP
+ rule:
+ text: Descreva uma regra ou requisito para os usuários neste servidor. Tente mantê-la curta e simples.
sessions:
otp: 'Digite o código de dois fatores gerado pelo aplicativo no seu celular ou use um dos códigos de recuperação:'
webauthn: Se for uma chave USB tenha certeza de inseri-la e, se necessário, tocar nela.
@@ -170,8 +175,6 @@ pt-BR:
whole_word: Palavra inteira
email_domain_block:
with_dns_records: Incluir registros MX e IPs do domínio
- featured_tag:
- name: Hashtag
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que você não segue
@@ -182,7 +185,6 @@ pt-BR:
text: Por que você deseja criar uma conta aqui?
ip_block:
comment: Comentário
- ip: IP
severities:
no_access: Bloquear acesso
sign_up_requires_approval: Limitar registros
@@ -197,15 +199,15 @@ pt-BR:
reblog: Enviar e-mail quando alguém der boost nos seus toots
report: Enviar e-mail quando uma nova denúncia for enviada
trending_tag: Uma hashtag não-revisada está em alta
+ rule:
+ text: Regra
tag:
listable: Permitir que esta hashtag apareça em pesquisas e no diretório de perfis
- name: Hashtag
trendable: Permitir que esta hashtag fique em alta
usable: Permitir que toots usem esta hashtag
'no': Não
recommended: Recomendado
required:
- mark: "*"
text: obrigatório
title:
sessions:
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index 869ecaddc..4d0d5291f 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -12,8 +12,14 @@ pt-PT:
admin_account_action:
include_statuses: O utilizador verá quais toots causaram a ação de moderação ou aviso
send_email_notification: O utilizador receberá uma explicação sobre o que aconteceu com a sua conta
- text_html: Opcional. Tu podes usar sintaxe de escrita. Tu podes adicionar predefinições de aviso para poupar tempo
+ text_html: Opcional. Pode utilizar sintaxe de escrita. Pode adicionar avisos predefinidos para poupar tempo
type_html: Escolhe o que fazer com %{acct}
+ types:
+ disable: Impede o utilizador de usar a sua conta, mas não elimina ou oculta o seu conteúdo.
+ none: Use isto para enviar um aviso ao utilizador, sem acionar nenhuma outra ação.
+ sensitive: Força todos os anexos de media deste utilizador a serem sinalizados como sensíveis.
+ silence: Impede que o utilizador seja capaz de publicar com visibilidade pública, ocultando as suas publicações e notificações de pessoas que não o seguem.
+ suspend: Evita qualquer interação de ou para esta conta e elimina o seu conteúdo. Reversível num período de 30 dias.
warning_preset_id: Opcional. Tu ainda podes adicionar texto personalizado no fim do predefinido
announcement:
all_day: Quando marcado, apenas as datas do intervalo de tempo serão exibidas
@@ -24,14 +30,14 @@ pt-PT:
defaults:
autofollow: As pessoas que aderem através do convite seguir-te-ão automaticamente
avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
- bot: Esta conta executa essencialmente acções automáticas e pode não poder ser monitorizada
+ bot: Esta conta executa essencialmente ações automatizadas e pode não ser monitorizada
context: Um ou múltiplos contextos nos quais o filtro deve ser aplicado
current_password: Para fins de segurança, por favor, digite a senha da conta atual
current_username: Para confirmar, por favor, introduza o nome de utilizador da conta atual
digest: Enviado após um longo período de inatividade e apenas se foste mencionado na tua ausência
discoverable: O diretório de perfis é outra maneira da sua conta alcançar um público mais vasto
email: Será enviado um e-mail de confirmação
- fields: Podes ter até 4 itens expostos, em forma de tabela, no teu perfil
+ fields: Pode ter até 4 itens expostos, em forma de tabela, no seu perfil
header: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
inbox_url: Copia a URL da página inicial do repetidor que queres usar
irreversible: Publicações filtradas irão desaparecer irremediavelmente, mesmo que o filtro seja removido posteriormente
@@ -73,6 +79,8 @@ pt-PT:
no_access: Bloquear o acesso a todos os recursos
sign_up_requires_approval: Novas inscrições requererão a sua aprovação
severity: Escolha o que acontecerá com as solicitações deste IP
+ rule:
+ text: Descreva uma regra ou requisito para os utilizadores nesta instância. Tente mantê-la curta e simples
sessions:
otp: 'Insere o código de autenticação em dois passos gerado pelo teu telemóvel ou usa um dos teus códigos de recuperação:'
webauthn: Se for uma chave USB tenha certeza de inseri-la e, se necessário, toque nela.
@@ -120,11 +128,11 @@ pt-PT:
context: Filtrar contextos
current_password: Palavra-passe actual
data: Dados
- discoverable: Listar esta conta no directório
+ discoverable: Permitir sugerir esta conta a outros
display_name: Nome Público
email: Endereço de e-mail
expires_in: Expira em
- fields: Meta-dados de perfil
+ fields: Metadados de perfil
header: Cabeçalho
honeypot: "%{label} (não preencher)"
inbox_url: URL da caixa de entrada do repetidor
@@ -175,7 +183,7 @@ pt-PT:
interactions:
must_be_follower: Bloquear notificações de não-seguidores
must_be_following: Bloquear notificações de pessoas que não segues
- must_be_following_dm: Bloquear mensagens directas de pessoas que tu não segues
+ must_be_following_dm: Bloquear mensagens diretas de pessoas que não segue
invite:
comment: Comentário
invite_request:
@@ -197,6 +205,8 @@ pt-PT:
reblog: Enviar e-mail quando alguém partilha uma publicação tua
report: Enviar um e-mail quando um novo relatório é submetido
trending_tag: Enviar e-mail quando uma hashtag não aprovada anteriormente estiver em destaque
+ rule:
+ text: Regra
tag:
listable: Permitir que esta hashtag apareça em pesquisas e no diretório de perfis
name: Hashtag
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
index aa0b07708..8d30c2746 100644
--- a/config/locales/simple_form.ro.yml
+++ b/config/locales/simple_form.ro.yml
@@ -157,8 +157,6 @@ ro:
whole_word: Cuvânt întreg
email_domain_block:
with_dns_records: Include înregistrările MX și IP-urile domeniului
- featured_tag:
- name: Hashtag
interactions:
must_be_follower: Blochează notificările de la persoane care nu te urmăresc
must_be_following: Blochează notificările de la persoane pe care nu le urmărești
@@ -179,12 +177,10 @@ ro:
trending_tag: Un hashtag nerevizuit este în tendință
tag:
listable: Permite acestui hashtag să apară în căutări și în directorul de profil
- name: Hashtag
trendable: Permite acestui hashtag să apară sub tendințe
usable: Permite postărilor să folosească acest hashtag
'no': Nu
recommended: Recomandat
required:
- mark: "*"
text: obligatoriu
'yes': Da
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 5baa9d46e..f704f6e5a 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -14,6 +14,12 @@ ru:
send_email_notification: Пользователь получит сообщение о том, что случилось с его/её учётной записью
text_html: Необязательно. Вы можете использовать синтаксис постов. Для экономии времени, добавьте шаблоны предупреждений
type_html: Выберите применяемое к %{acct} действие
+ types:
+ disable: Запретить пользователю использование своей учётной записи, без удаления или скрытия контента.
+ none: Отправить пользователю предупреждение, не принимая иных действий.
+ sensitive: Принудительно отметить опубликованное пользователем содержимое как «деликатного характера».
+ silence: Запретить пользователю публиковать посты с открытой видимостью, а также скрыть все прошлые посты и уведомления от людей, не читающих этого пользователя.
+ suspend: Предотвратить любое взаимодействие с этой учётной записью, удалив всё содержимое опубликованное с неё. Это действие можно отменить в течение 30 дней.
warning_preset_id: Необязательно. Вы можете добавить собственный текст в конце шаблона
announcement:
all_day: Если выбрано, часы начала и завершения будут скрыты
@@ -41,10 +47,10 @@ ru:
phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании поста
scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически.
setting_aggregate_reblogs: Не показывать новые продвижения постов, которые уже были недавно продвинуты (относится только к новым продвижениям).
- setting_default_sensitive: Деликатные медиафайлы скрыты по умолчанию и могут быть показаны по нажатию на них.
- setting_display_media_default: Скрывать деликатные медиафайлы
+ setting_default_sensitive: Медиафайлы «деликатного характера» скрыты по умолчанию и могут быть показаны по нажатию на них.
+ setting_display_media_default: Скрывать файлы «деликатного характера»
setting_display_media_hide_all: Всегда скрывать любые медиафайлы
- setting_display_media_show_all: Всегда показывать деликатные медиафайлы
+ setting_display_media_show_all: Всегда показывать любые медиафайлы
setting_hide_network: Другие не смогут видеть ни ваши подписки, ни ваших подписчиков.
setting_noindex: Ваш публичный профиль и страницы постов будут скрыты из поисковых движков.
setting_show_application: При просмотре поста будет видно из какого приложения он отправлен.
@@ -60,7 +66,7 @@ ru:
featured_tag:
name: 'Возможно, вы захотите добавить что-то из этого:'
form_challenge:
- current_password: Вы входите в зону безопасности
+ current_password: Вы переходите к настройкам безопасности
imports:
data: Файл CSV, экспортированный с другого узла Mastodon.
invite_request:
@@ -73,6 +79,8 @@ ru:
no_access: Заблокировать доступ ко всем ресурсам
sign_up_requires_approval: Новые регистрации потребуют вашего одобрения
severity: Выберите, что будет происходить с запросами с этого IP
+ rule:
+ text: Опишите правило или требование для пользователей на этом сервере. Постарайтесь сделать его коротким и простым
sessions:
otp: 'Введите код двухфакторной аутентификации, сгенерированный в мобильном приложении, или используйте один из ваших кодов восстановления:'
webauthn: Если это ключ USB, не забудьте его вставить и, при необходимости, нажмите на него.
@@ -100,7 +108,7 @@ ru:
types:
disable: Заморозить
none: Ничего не делать
- sensitive: Деликатный
+ sensitive: Отметить как «деликатного характера»
silence: Скрыть
suspend: Заблокировать и безвозвратно удалить все данные учётной записи
warning_preset_id: Использовать шаблон
@@ -124,7 +132,7 @@ ru:
display_name: Отображаемое имя
email: Адрес e-mail
expires_in: Истекает через
- fields: Метаданные профиля
+ fields: Таблица деталей
header: Шапка
honeypot: "%{label} (не заполнять)"
inbox_url: URL для входящих от ретрансляторов
@@ -144,7 +152,7 @@ ru:
setting_crop_images: Кадрировать изображения в нераскрытых постах до 16:9
setting_default_language: Язык отправляемых постов
setting_default_privacy: Видимость постов
- setting_default_sensitive: Всегда отмечать медиафайлы как деликатные
+ setting_default_sensitive: Всегда отмечать медиафайлы как «деликатного характера»
setting_delete_modal: Всегда спрашивать перед удалении поста
setting_disable_swiping: Отключить анимацию смахивания
setting_display_media: Отображение медиафайлов
@@ -160,7 +168,7 @@ ru:
setting_theme: Тема сайта
setting_trends: Показывать сегодняшние тренды
setting_unfollow_modal: Всегда спрашивать перед отпиской от учётной записи
- setting_use_blurhash: Показать цветные градиенты для скрытых медиа
+ setting_use_blurhash: Показать цветные градиенты для скрытых медиафайлов
setting_use_pending_items: Медленный режим
severity: Накладываемые ограничения
sign_in_token_attempt: Код безопасности
@@ -197,6 +205,8 @@ ru:
reblog: Ваш пост продвинули
report: Поступила новая жалоба
trending_tag: Актуальный хэштег требует проверки
+ rule:
+ text: Правило
tag:
listable: Разрешить показ хэштега в поиске или в каталоге профилей
name: Хэштег
diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml
index 99d5ab429..f24193347 100644
--- a/config/locales/simple_form.sc.yml
+++ b/config/locales/simple_form.sc.yml
@@ -5,41 +5,47 @@ sc:
account_alias:
acct: Dislinda su nòmineutente@domìniu de su contu dae su cale ti boles mòere
account_migration:
- acct: Dislinda su nòmineutente@domìniu de su contu cara a su cale ti boles mòere
+ acct: Dislinda su nòmineutente@domìniu de su contu conca a su cale ti boles mòere
account_warning_preset:
- text: Podes impreare sa sintassi de is tuts, che a is URL, is etichetas e is mentovos
+ text: Podes impreare sintassi in is tuts, che a URL, etichetas e mentovos
title: Optzionale. Invisìbile a s'àtera persone
admin_account_action:
include_statuses: S'utente at a bìdere is tuts chi ant causadu s'atzione o s'avisu de moderatzione
send_email_notification: S'utente at a retzire un'ispiegatzione de su chi siat sutzèdidu in su contu suo
- text_html: Optzionale. Podes impreare sa sintassi de is tuts. Podes agiùnghere avisos pre-impostados pro risparmiare tempus
- type_html: Sèbera ite fàghere cun %{acct}
+ text_html: Optzionale. Podes impreare sintassi in is tuts. Podes agiùnghere avisos predefinidos pro istraviare tempus
+ type_html: Sèbera ite si depet fàghere cun %{acct}
+ types:
+ disable: Impedi a s'utente de impreare su contu suo, ma non de cantzellare o cuare is cuntenutos.
+ none: Imprea custu pro imbiare un'avisu a s'utente, sena pedire peruna àtera atzione.
+ sensitive: Custringhe totu is alligongiados multimediales de custu utente a èssere marcados comente sensìbiles.
+ silence: Impedi a s'utente de publicare messàgios cun visibilidade pùblica, e de cuare messàgios e notìficas a persones chi non ddos sighint.
+ suspend: Impedi cale si siat cuntatu dae o cun custu contu e cantzella is cuntenutos. Si podet annullare intro de 30 dies.
warning_preset_id: Optzionale. Podes ancora agiùnghere testu personalizadu a s'acabu de cussu predefinidu
announcement:
all_day: Si est marcadu, ant a èssere ammustradas isceti is datas de s'intervallu de tempus
ends_at: Optzionale. S'annùntziu at a acabbare de abarrare publicadu in custu momentu
scheduled_at: Lassa bòidu pro publicare s'annùntziu immediatamente
starts_at: Optzionale. S'in casu chi s'annùntziu tuo siat ligadu a un'intervallu de tempus ispetzìficu
- text: Podes impreare sa sintassi de is tuts. Dae cara a su tretu chi s'annùntziu at a pigare in s'ischermu de s'utente
+ text: Podes impreare sintassi in is tuts. Dae cara a su tretu chi s'annùntziu at a pigare in s'ischermu de s'utente
defaults:
autofollow: Is persones chi s'ant a registrare pro mèdiu de s'invitu t'ant a sighire in manera automàtica
avatar: PNG, GIF o JPG. Màssimu %{size}. Ant a èssere iscaladas a %{dimensions}px
- bot: Custu contu faghet pro su prus atziones automatizadas e diat pòdere no èssere monitoradu
+ bot: Sinnala a àtere chi custu contu faghet pro su prus atziones automatizadas e diat pòdere no èssere monitoradu
context: Unu o prus cuntestos in ue su filtru si diat dèpere aplicare
current_password: Pro chistiones de seguresa inserta sa crae de intrada de su contu atuale
current_username: Pro cunfirmare inserta su nòmine utente de su contu atuale
- digest: Imbiadu isceti a pustis de unu perìodu longu de inatividade, e isceti si as retzidu carchi messàgiu personale cando non bi fias
- discoverable: Sa cartella de is profilos est un'àtera manera pro fàghere otènnere unu pùblicu prus mannu a su contu tuo
- email: T'amus a mandare unu messàgiu eletrònicu de cunfirma
+ digest: Imbiadu isceti a pustis de unu perìodu longu de inatividade, e isceti si as retzidu calicunu messàgiu personale cando non bi fias
+ discoverable: Permite chi su contu tuo potzat èssere iscobertu dae persones disconnotas pro mèdiu de cussìgios e àteras optziones
+ email: As a retzire unu messàgiu eletrònicu de cunfirma
fields: Podes tènnere finas a 4 elementos ammustrados in una tabella in su profilu tuo
header: PNG, GIF o JPG. Màssimu %{size}. Ant a èssere iscaladas a %{dimensions}px
inbox_url: Còpia s'URL dae sa pàgina printzipale de su ripetidore chi boles impreare
irreversible: Is tuts filtrados ant a isparèssere in manera irreversìbile, fintzas si prus a tardu s'at a bogare su filtru
- locale: Sa limba de s'interfache de s'utente, de is lìteras de posta eletrònica e de is notìficas push
- locked: Tenet bisòngiu chi aproves a manu is sighiduras
+ locale: S'idioma de s'interfache de s'utente, de is messàgios de posta eletrònica e de is notìficas push
+ locked: Gesti a manu chie ti podet sighire aprovende a manu is sighiduras
password: Imprea a su mancu 8 caràteres
- phrase: Su cunfrontu s'at a fàghere chena pigare in cunsideru si su testu de sa publicatzione est minùsculu o majùsculu o si tenet un'avisu de cuntenutu
- scopes: A ite API s'aplicatzione at a pòdere atzèdere. Si seletziones un'àmbitu de livellu artu no tenes bisòngiu de nde seletzionare de sìngulos.
+ phrase: At a cuncordare sena cunsiderare is minùsculas e is majùsculas o is avisos de cuntenutu
+ scopes: A ite API s'aplicatzione at a pòdere atzèdere. Si seletzionas un'àmbitu de su livellu prus artu, non serbit a nde seletzionare de sìngulos.
setting_aggregate_reblogs: No ammustres cumpartziduras noas pro tuts chi sunt istados cumpartzidos dae pagu (tenet efetu isceti pro is cumpartziduras retzidas noas)
setting_default_sensitive: Is elementos multimediales sensìbiles benint cuados dae is cunfiguratziones predefinidas e si podent rivelare cun un'incarcu
setting_display_media_default: Cua elementos multimediales marcados comente sensìbiles
@@ -48,14 +54,14 @@ sc:
setting_hide_network: Sa gente chi sighis o chi ti sighit no at a èssere ammustrada in su profilu tuo
setting_noindex: Tenet efetu in su profilu pùblicu tuo e in is pàginas de is istados
setting_show_application: S'aplicatzione chi impreas pro publicare tuts at a èssere ammustrada in sa visualizatzione de detàlliu de is tuts
- setting_use_blurhash: Is gradientes sunt basados in subra de is colores de is immàgines cuadas ma imbelant totu is minujas
+ setting_use_blurhash: Is gradientes sunt basados in subra de is colores de is immàgines cuadas ma imbelant totu is detàllios
setting_use_pending_items: Cua is atualizatziones in segus de un'incarcu imbetzes de iscùrrere in automàticu su flussu de publicatziones
username: Su nòmine de utente tuo at a èssere ùnicu in %{domain}
- whole_word: Cando sa paràula o sa fràsia crae est alfanumèrica ebbia s'at a aplicare isceti si currispondet a sa paràula intrea
+ whole_word: Cando sa crae (faeddu o fràsia) siat isceti alfanumèrica, s'at a aplicare isceti si currispondet a su faeddu intreu
domain_allow:
domain: Custu domìniu at a pòdere recuperare datos dae custu serbidore e is datos in intrada dae cue ant a èssere protzessados e archiviados
email_domain_block:
- domain: Custu podet èssere su nòmine de domìniu chi benit ammustradu in s'indiritzu de posta eletrònica, in su registru MX in ue si risolvet su domìniu o s'IP de su serbidore in ue si risolvet su registru MX. Custos ant a èssere verificados a pustis de sa registratzione e sa registratzione at a èssere refudada.
+ domain: Custu podet èssere su nòmine de domìniu chi benit ammustradu in s'indiritzu de posta eletrònica, in su registru MX in ue si risolvet su domìniu o s'IP de su serbidore in ue si risolvet su registru MX. Ant a èssere verificados cun sa registratzione de s'utente e sa registratzione at a èssere refudada.
with_dns_records: S'at a fàghere unu tentativu de risòlvere is registros DNS de su domìniu e fintzas is risultados ant a èssere blocados
featured_tag:
name: 'Forsis boles impreare unu de custos:'
@@ -64,22 +70,24 @@ sc:
imports:
data: Archìviu CSV esportadu dae un'àteru serbidore de Mastodon
invite_request:
- text: Custu si at a agiudare a revisionare sa dimanda tua
+ text: Custu at a agiudare a revisionare sa dimanda tua
ip_block:
comment: Optzionale. Regorda pro ite as agiuntu custa règula.
- expires_in: Is indiritzos IP sunt una risursa limitada, fatu-fatu benint cumpartzidos e podent mudare de mere. Pro custa resone is blocos indefinidos de indiritzos IP non sunt racumandados.
+ expires_in: Is indiritzos IP sunt una risursa limitada, fatu-fatu benint cumpartzidos e podent mudare de mere. Pro custa resone is blocos indefinidos de indiritzos IP non sunt cussigiados.
ip: Inserta un'indiritzu IPv4 o IPv6. Podes blocare intervallos intreos impreende sa sintassi CIDR. Dae cara e non ti bloches a sa sola!
severities:
no_access: Bloca s'atzessu a totu is resursas
sign_up_requires_approval: As a dèpere aprovare is iscritziones noas
severity: Sèbera ite at a sutzèdere cun is rechestas de custa IP
+ rule:
+ text: Descrie una règula o unu rechisitu pro utentes de custu serbidore. Chirca de dda fàghere curtza e simpre
sessions:
otp: 'Inserta su còdighe de atzessu in duos passos generadu dae s''aplicatzione mòbile tua o imprea unu de custos còdighes de recùperu:'
- webauthn: Si est una crae USB assegura·ti de l'insertare e, si serbit, de la tocare.
+ webauthn: Si est unu dispositivu USB, assegura·ti de ddu insertare e, si serbit, toca inoghe.
tag:
- name: Podes isceti cambiare su minùsculu/maiùsculu de is lìteras, a esèmpiu, pro fàghere in manera chi siant prus fàtziles de lèghere
+ name: Podes isceti cambiare sa minùscula/maiùscula de is lìteras, pro esèmpiu, pro fàghere in manera chi siant prus fàtziles de lèghere
user:
- chosen_languages: Cando est incarcadu, isceti is tuts in is limbas ischertadas ant a èssere ammustrados in is lìnias de tempus pùblicas
+ chosen_languages: Cando est ativadu, isceti is tuts in is idiomas seberados ant a èssere ammustrados in is lìnias de tempus pùblicas
labels:
account:
fields:
@@ -98,7 +106,7 @@ sc:
text: Avisu personalizadu
type: Atzione
types:
- disable: Disativa
+ disable: Cungela
none: Imbia un'avisu
sensitive: Sensìbile
silence: A sa muda
@@ -114,13 +122,13 @@ sc:
autofollow: Invita a sighire su contu tuo
avatar: Immàgine de profilu
bot: Custu contu est unu bot
- chosen_languages: Filtra limbas
+ chosen_languages: Filtra idiomas
confirm_new_password: Cunfirma sa crae noa
confirm_password: Cunfirma sa crae
context: Filtra cuntestos
current_password: Crae atuale
data: Data
- discoverable: Ammustra custu contu in su diretòriu
+ discoverable: Cussìgia custu contu a àtere
display_name: Nòmine visìbile
email: Indiritzu de posta eletrònica
expires_in: Iscadit a pustis de
@@ -129,24 +137,24 @@ sc:
honeypot: "%{label} (non compiles)"
inbox_url: URL de sa cartella de intrada de su ripetidore
irreversible: Cantzella imbetzes de cuare
- locale: Limba de s'interfache
- locked: Bloca su contu
+ locale: Idioma de s'interfache
+ locked: Rechede rechestas de sighidura
max_uses: Nùmeru màssimu de impreos
new_password: Crae noa
note: Biografia
otp_attempt: Còdighe in duos fatores
password: Crae
- phrase: Paràula o fràsia crae
- setting_advanced_layout: Abìlita s'interfache web avantzada
+ phrase: Crae (faeddu o fràsia)
+ setting_advanced_layout: Ativa s'interfache web avantzada
setting_aggregate_reblogs: Agrupa is cumpartziduras in is lìnias de tempus
- setting_auto_play_gif: Riprodui is GIFs animadas in manera automàtica
- setting_boost_modal: Ammustra una ventanedda de diàlogu de cunfirma in antis de cumpartzire
- setting_crop_images: Retàllia is immàgines in is tuts no ismanniados a 16x9
- setting_default_language: Limba de publicatzione
- setting_default_privacy: Riservadesa de publicatzione
+ setting_auto_play_gif: Riprodui is GIF animadas in automàticu
+ setting_boost_modal: Ammustra unu diàlogu de cunfirma in antis de cumpartzire
+ setting_crop_images: Retàllia a 16x9 is immàgines de is tuts no ismanniados
+ setting_default_language: Idioma de publicatzione
+ setting_default_privacy: Riservadesa de is publicatziones
setting_default_sensitive: Marca semper is elementos multimediales comente sensìbiles
- setting_delete_modal: Ammustra una ventanedda de diàlogu de cunfirma in antis de cantzellare unu tut
- setting_disable_swiping: Disabìlita is movimentos de trisinadura
+ setting_delete_modal: Ammustra unu diàlogu de cunfirma in antis de cantzellare unu tut
+ setting_disable_swiping: Disativa animatziones
setting_display_media: Visualizatzione de is elementos multimediales
setting_display_media_default: Predefinida
setting_display_media_hide_all: Cua totu
@@ -156,10 +164,10 @@ sc:
setting_noindex: Pedi de non ti fàghere inditzizare dae is motores de chirca
setting_reduce_motion: Mìnima su movimentu in is animatziones
setting_show_application: Rivela s'aplicatzione impreada pro imbiare tuts
- setting_system_font_ui: Imprea su caràtere predefinidu de su sistema
+ setting_system_font_ui: Imprea sa tipografia predefinida de su sistema
setting_theme: Tema de su situ
setting_trends: Ammustra is tendèntzias de oe
- setting_unfollow_modal: Ammustra una ventanedda de diàlogu de cunfirma in antis de acabbare de sighire a calicunu
+ setting_unfollow_modal: Ammustra unu diàlogu de cunfirma in antis de acabbare de sighire una persone
setting_use_blurhash: Ammustra gradientes colorados pro is elementos multimediales cuados
setting_use_pending_items: Modalidade lenta
severity: Severidade
@@ -167,19 +175,19 @@ sc:
type: Casta de importatzione
username: Nòmine utente
username_or_email: Nòmine utente o indiritzu de posta eletrònica
- whole_word: Paràula intrea
+ whole_word: Faeddu intreu
email_domain_block:
with_dns_records: Include registros MX e indiritzos IP de su domìniu
featured_tag:
name: Eticheta
interactions:
must_be_follower: Bloca is notìficas dae chie non ti sighit
- must_be_following: Bloca is notìficas dae persones chi non sighis
- must_be_following_dm: Bloca is messàgios diretos dae persones chi non sighis
+ must_be_following: Bloca is notìficas dae gente chi non sighis
+ must_be_following_dm: Bloca is messàgios diretos dae gente chi non sighis
invite:
comment: Cummenta
invite_request:
- text: Proite ti cheres iscrìere?
+ text: Pro ite boles aderire?
ip_block:
comment: Cummentu
ip: IP
@@ -189,24 +197,26 @@ sc:
severity: Règula
notification_emails:
digest: Imbia lìteras eletrònicas de resumu
- favourite: Calicunu at postu s'istadu tuo in is preferidos suos
- follow: Calicunu at incumentzadu a ti sighire
- follow_request: Calicunu at pedidu de ti sighire
- mention: Calicunu t'at mentovadu
- pending_account: Unu contu nou bisòngiat de una revisione
- reblog: Calicunu at cumpartzidu s'istadu tuo
- report: Est istadu imbiadu unu raportu nou
+ favourite: Una persone at postu s'istadu tuo in is preferidos suos
+ follow: Una persone t'at incumentzadu a sighire
+ follow_request: Una persone at pedidu de ti sighire
+ mention: Una persone t'at mentovadu
+ pending_account: Unu contu nou tenet bisòngiu de una revisione
+ reblog: Una persone at cumpartzidu s'istadu tuo
+ report: Imbiu de un'informe nou
trending_tag: Un'eticheta non revisionada est in tendèntzia
+ rule:
+ text: Règula
tag:
- listable: Permite a cust'eticheta de apàrrere in is chircas e in sa cartella de is profilos
+ listable: Permite a custa eticheta de apàrrere in is chircas e in sa cartella de is profilos
name: Eticheta
- trendable: Permite a cust'eticheta de apàrrere in is tendèntzias
- usable: Permite a is tuts de impreare cust'eticheta
+ trendable: Permite a custa eticheta de apàrrere in is tendèntzias
+ usable: Permite a is tuts de impreare custa eticheta
'no': Nono
- recommended: Racumandadu
+ recommended: Cussigiadu
required:
mark: "*"
- text: netzessàriu
+ text: obligatòriu
title:
sessions:
webauthn: Imprea una de is craes de seguresa tuas pro intrare
diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml
new file mode 100644
index 000000000..7235ac0fb
--- /dev/null
+++ b/config/locales/simple_form.si.yml
@@ -0,0 +1,37 @@
+---
+si:
+ simple_form:
+ labels:
+ admin_account_action:
+ type: ක්රියාමාර්ගය
+ types:
+ sensitive: සංවේදීතාව
+ suspend: අත්හිටුවන්න
+ defaults:
+ bot: මෙය ස්වයං ක්රමලේඛගත ගිණුමකි
+ confirm_new_password: නව මුර පදය තහවුරු කරන්න
+ confirm_password: මුරපදය තහවුරු කරන්න
+ data: දත්ත
+ email: වි-තැපැල් ලිපිනය
+ new_password: නව මුරපදය
+ password: මුර පදය
+ setting_display_media_hide_all: සියල්ල සඟවන්න
+ setting_display_media_show_all: සියල්ල පෙන්වන්න
+ setting_hide_network: ඔබගේ ජාලය සඟවන්න
+ setting_theme: අඩවියේ තේමාව
+ username: පරිශීලක නාමය
+ username_or_email: පරිශීලක නාමය හෝ වි-තැපෑල
+ whole_word: සමස්ත වචනය
+ invite:
+ comment: අදහස
+ ip_block:
+ comment: අදහස
+ ip: අ.ජා. කෙ. (IP)
+ severities:
+ no_access: ප්රවේශය අවහිර කරන්න
+ severity: නීතිය
+ recommended: නිර්දේශිත
+ required:
+ mark: "*"
+ text: අවශ්යයි
+ 'yes': ඔව්
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 9e03d7254..99d7d42e3 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -172,6 +172,5 @@ sk:
'no': Nie
recommended: Odporúčané
required:
- mark: "*"
text: povinné
'yes': Áno
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 771edf383..20a07eccb 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -88,7 +88,6 @@ sl:
locked: Zaklenjen račun
max_uses: Največje število uporabnikov
new_password: Novo geslo
- note: Bio
otp_attempt: Dvofaktorska koda
password: Geslo
phrase: Ključna beseda ali fraza
@@ -139,6 +138,5 @@ sl:
'no': Ne
recommended: Priporočeno
required:
- mark: "*"
text: zahtevano
'yes': Da
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index 18211e69e..2a97725cb 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -8,17 +8,23 @@ sq:
acct: Specifikoni emrinepërdoruesit@përkatësi të llogarisë ku doni të lëvizet
account_warning_preset:
text: Mund të përdorni elementë sintakse mesazhesh, bie fjala, URL, hashtagë dhe përmendje
- title: Opsionale. Jo i dukshëm për marrësin
+ title: Opsional. Jo i dukshëm për marrësin
admin_account_action:
include_statuses: Përdoruesi do të shohë cilët mesazhe kanë shkaktuar veprimin e moderimit ose sinjalizimin
send_email_notification: Përdoruesi do të marrë një shpjegim mbi çfarë ndodhi me llogarinë e tij
text_html: Opsionale. Mund të përdorni sintaksë mesazhesh. Për të kursyer kohë, mund të shtoni paracaktime sinjalizimesh
type_html: Zgjidhni ç’të bëhet me %{acct}
+ types:
+ disable: Pengoji përdoruesit përdorimin e llogarisë së tij, por mos fshi apo fshih lëndën e tij.
+ none: Përdoreni këtë për t’i dërguar përdoruesit një sinjalizim, pa u kryer ndonjë veprim tjetër.
+ sensitive: Vëru krejt bashkëngjitjeve media të këtij përdoruesi shenjë si rezervat.
+ silence: Pengoji përdoruesit të qenët i aftë të postojë publikisht, fshihja postimet dhe njoftimet e tij personave që nuk i ndjekin ato.
+ suspend: Pengo çfarëdo ndërveprimi nga ose për te kjo llogari dhe fshi lëndën e saj. E prapësueshme brenda 30 ditësh.
warning_preset_id: Opsionale. Mundeni sërish të shtoni tekst vetjak në fund të paracaktimit
announcement:
all_day: Nëse i vihet shenjë, do të shfaqen vetëm datat e intervalit kohor
ends_at: Opsionale. Lajmërimi do të hiqet nga botimi në këtë kohë
- scheduled_at: Lëreni të zbrazët që lajmërimi të botohet menjëherë
+ scheduled_at: Që lajmërimi të botohet menjëherë, lëreni të zbrazët
starts_at: Opsionale. Në rast se lajmërimi juaj është i lidhur me një interval kohor të caktuar
text: Mund të përdorni sintaksë mesazhesh. Ju lutemi, mos harroni që hapësira e lajmërimit do të hajë vend në ekranin e përdoruesit
defaults:
@@ -28,7 +34,7 @@ sq:
context: Një ose disa kontekste kur duhet të zbatohet filtri
current_password: Për qëllime sigurie, ju lutemi, jepni fjalëkalimin e llogarisë së tanishme
current_username: Që ta ripohoni, ju lutemi, jepni emrin e përdoruesit të llogarisë së tanishme
- digest: I dërguar vetëm pas një periudhe të gjatë pasiviteti dhe vetëm nëse keni marrë ndonjë mesazh personal gjatë mungesës suaj
+ digest: I dërguar vetëm pas një periudhe të gjatë pasiviteti dhe vetëm nëse keni marrë ndonjë mesazh personal gjatë mungesës tuaj
discoverable: Drejtoria e profileve është një rrugë tjetër përmes së cilës llogaria juaj mund të mbërrijë te një publik më i gjerë
email: Do t’ju dërgohet një email ripohimi
fields: Te profili juaj mund të keni deri në 4 objekte të shfaqur si tabelë
@@ -39,7 +45,7 @@ sq:
locked: Lyp që ju të miratoni dorazi ndjekësit
password: Përdorni të paktën 8 shenja
phrase: Do të kërkohet përputhje pavarësish se teksti ose sinjalizimi mbi lëndën e një mesazhi është shkruar me të mëdha apo me të vogla
- scopes: Cilat API do të lejohet të përdorë aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një.
+ scopes: Cilat API do të lejohen të përdorin aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një.
setting_aggregate_reblogs: Mos shfaq përforcime të reja për mesazhe që janë përforcuar tani së fundi (prek vetëm përforcime të marra rishtas)
setting_default_sensitive: Media rezervat fshihet, si parazgjedhje, dhe mund të shfaqet me një klikim
setting_display_media_default: Fshih media me shenjën rezervat
@@ -48,7 +54,7 @@ sq:
setting_hide_network: Cilët ndiqni dhe cilët ju ndjekin nuk do të shfaqen në profilin tuaj
setting_noindex: Prek faqet e profilit tuaj publik dhe gjendjeve
setting_show_application: Aplikacioni që përdorni për mesazhe do të shfaqet te pamja e hollësishme për mesazhet tuaj
- setting_use_blurhash: Gradientët bazohen në ngjyrat e elementëve pamorë të fshehur, por fshehin çfarëdo hollësie
+ setting_use_blurhash: Gradientët bazohen në ngjyrat e elementëve pamorë të fshehur, por eerësojnë çfarëdo hollësie
setting_use_pending_items: Fshihi përditësimet e rrjedhës kohore pas një klikimi, në vend të rrëshqitjes automatike nëpër prurje
username: Emri juaj i përdoruesit do të jetë unik në %{domain}
whole_word: Kur fjalëkyçi ose fraza është vetëm numerike, do të aplikohet vetëm nëse përputhet me krejt fjalën
@@ -67,12 +73,14 @@ sq:
text: Kjo do të na ndihmojë të shqyrtojmë aplikimin tuaj
ip_block:
comment: Opsionale. Mbani mend pse e shtuat këtë rregull.
- expires_in: Adresat IP janë një burim i kufizuar, shpesh janë të përbashkëta dh ndryshojnë zot shpesh. Për këtë arsye, nuk rekomandohem blloqe IP të pafund.
+ expires_in: Adresat IP janë një burim i kufizuar, shpesh janë të përbashkëta dhe ndryshojnë zot shpesh. Për këtë arsye, nuk rekomandohen blloqe IP të pafund.
ip: Jepni një adresë IPv4 ose IPv6. Duke përdorur sintaksën CIDR, mund të bllokoni intervale të tëra. Hapni sytë mos lini veten jashtë!
severities:
no_access: Blloko hyrje në krejt burimet
sign_up_requires_approval: Regjistrime të reja do të duan miratimin tuaj
severity: Zgjidhni ç’do të ndodhë me kërkesa nga kjo IP
+ rule:
+ text: Përshkruani një rregull ose një domosdoshmëri për përdoruesit në këtë shërbyes. Përpiquni të jetë i shkurtër dhe i thjeshtë
sessions:
otp: 'Jepni kodin dyfaktorësh të prodhuar nga aplikacioni i telefonit tuaj ose përdorni një nga kodet tuaj të rikthimeve:'
webauthn: Nëse është një diskth USB, sigurohuni se e keni futur dhe, në qoftë e nevojshme, prekeni.
@@ -98,11 +106,11 @@ sq:
text: Sinjalizim vetjak
type: Veprim
types:
- disable: Çaktivizo hyrjen
- none: Mos bëj gjë
+ disable: Ngrije
+ none: Dërgo një sinjalizim
sensitive: Rezervat
- silence: Heshtje
- suspend: Pezulloje dhe fshi në mënyrë të pakthyeshme të dhënat e llogarisë
+ silence: Kufizoje
+ suspend: Pezulloje
warning_preset_id: Përdor një sinjalizim të paracaktuar
announcement:
all_day: Akt gjatë gjithë ditës
@@ -120,7 +128,7 @@ sq:
context: Filtroni kontekste
current_password: Fjalëkalimi i tanishëm
data: Të dhëna
- discoverable: Shfaqe këtë llogari te drejtoria
+ discoverable: Sugjerojuni llogari të tjerëve
display_name: Emër në ekran
email: Adresë email
expires_in: Skadon pas
@@ -134,7 +142,7 @@ sq:
max_uses: Numër maksimum përdorimesh
new_password: Fjalëkalim i ri
note: Jetëshkrim
- otp_attempt: Kod mirëfilltësimi dyfaktorësh
+ otp_attempt: Kod dyfaktorëshi
password: Fjalëkalim
phrase: Fjalëkyç ose frazë
setting_advanced_layout: Aktivizo ndërfaqe web të thelluar
@@ -153,7 +161,7 @@ sq:
setting_display_media_show_all: Shfaqi krejt
setting_expand_spoilers: Mesazhet me sinjalizime mbi lëndën, zgjeroji përherë
setting_hide_network: Fshiheni rrjetin tuaj
- setting_noindex: Përfundim i indeksimit nga motor kërkimesh
+ setting_noindex: Zgjidhni lënien jashtë nga indeksim prej motorësh kërkimi
setting_reduce_motion: Zvogëlo lëvizjen në animacione
setting_show_application: Tregoje aplikacionin e përdorur për të dërguar mesazhe
setting_system_font_ui: Përdor shkronja parazgjedhje të sistemit
@@ -162,7 +170,7 @@ sq:
setting_unfollow_modal: Shfaq dialog ripohimi përpara heqjes së ndjekjes për dikë
setting_use_blurhash: Shfaq gradientë ngjyrash për media të fshehura
setting_use_pending_items: Mënyra ngadalë
- severity: Rreptësi
+ severity: Rëndësi
sign_in_token_attempt: Kod sigurie
type: Lloj importimi
username: Emër përdoruesi
@@ -174,8 +182,8 @@ sq:
name: Hashtag
interactions:
must_be_follower: Blloko njoftime nga jo-ndjekës
- must_be_following: Blloko njoftime nga persona që nuk i ndiqni
- must_be_following_dm: Blloko mesazhe të drejtpërdrejtë nga persona që nuk i ndiqni
+ must_be_following: Blloko njoftime nga persona që s’i ndiqni
+ must_be_following_dm: Blloko mesazhe të drejtpërdrejtë nga persona që s’i ndiqni
invite:
comment: Komentoni
invite_request:
@@ -197,6 +205,8 @@ sq:
reblog: Dikush përforcoi gjendjen tuaj
report: Parashtrohet raportim i ri
trending_tag: Një hashtag i pashqyrtuar zë e bëhet popullor
+ rule:
+ text: Rregull
tag:
listable: Lejoje këtë hashtag të shfaqet në kërkime dhe në drejtori profilesh
name: Hashtag
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index 8500f109e..92d826bbc 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -14,11 +14,14 @@ sv:
send_email_notification: Användaren kommer att få en förklaring av vad som hände med sitt konto
text_html: Extra. Du kan använda toot syntax. Du kan lägga till förvalda varningar för att spara tid
type_html: Välj vad du vill göra med %{acct}
+ types:
+ disable: Förhindra användaren från att använda sitt konto, men ta inte bort eller dölj innehållet.
warning_preset_id: Extra. Du kan lägga till valfri text i slutet av förinställningen
announcement:
all_day: När det är markerat visas endast datum för tidsintervallet
ends_at: Frivillig. Meddelandet kommer automatiskt att publiceras just nu
scheduled_at: Lämna tomt för att publicera meddelandet omedelbart
+ starts_at: Valfritt. Om ditt meddelande är bundet till ett visst tidsintervall
defaults:
autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig
avatar: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px
@@ -41,6 +44,8 @@ sv:
name: 'Du kan vilja använda en av dessa:'
imports:
data: CSV-fil som exporteras från en annan Mastodon-instans
+ rule:
+ text: Beskriv en kort och enkel regel för användare på denna server
sessions:
otp: 'Ange tvåfaktorkoden genererad från din telefonapp eller använd någon av dina återställningskoder:'
user:
@@ -50,16 +55,31 @@ sv:
fields:
name: Etikett
value: Innehåll
+ account_alias:
+ acct: Namnet på det gamla kontot
+ account_migration:
+ acct: Namnet på det nya kontot
account_warning_preset:
title: Rubrik
admin_account_action:
+ send_email_notification: Meddela användaren via e-post
text: Anpassad varning
+ type: Åtgärd
types:
disable: Inaktivera inloggning
none: Gör ingenting
+ sensitive: Känslig
silence: Tysta
+ suspend: Stäng av
+ announcement:
+ all_day: Heldagsevenemang
+ ends_at: Evenemangets slut
+ scheduled_at: Schemalägg publicering
+ starts_at: Evenemangets början
+ text: Kungörelse
defaults:
autofollow: Bjud in till att följa ditt konto
+ avatar: Profilbild
bot: Detta är ett botkonto
chosen_languages: Filtrera språk
confirm_new_password: Bekräfta nytt lösenord
@@ -74,6 +94,8 @@ sv:
fields: Profil-metadata
header: Bakgrundsbild
honeypot: "%{label} (fyll inte i)"
+ inbox_url: URL för reläinkorg
+ irreversible: Släng istället för att dölja
locale: Språk
locked: Lås konto
max_uses: Högst antal användningar
@@ -83,8 +105,10 @@ sv:
password: Lösenord
phrase: Nyckelord eller fras
setting_advanced_layout: Aktivera avancerat webbgränssnitt
+ setting_aggregate_reblogs: Gruppera knuffar i tidslinjer
setting_auto_play_gif: Spela upp animerade GIF-bilder automatiskt
setting_boost_modal: Visa bekräftelsedialog innan du knuffar
+ setting_crop_images: Beskär bilder i icke-utökade tutningar till 16x9
setting_default_language: Språk
setting_default_privacy: Postintegritet
setting_default_sensitive: Markera alltid media som känsligt
@@ -94,17 +118,27 @@ sv:
setting_display_media_default: Standard
setting_display_media_hide_all: Dölj alla
setting_display_media_show_all: Visa alla
+ setting_expand_spoilers: Utöka alltid tutningar markerade med innehållsvarningar
setting_hide_network: Göm ditt nätverk
setting_noindex: Uteslutning av sökmotorindexering
setting_reduce_motion: Minska rörelser i animationer
+ setting_show_application: Visa programmet som används för att skicka tutningar
setting_system_font_ui: Använd systemets standardfont
setting_theme: Sidans tema
setting_trends: Visa dagens trender
setting_unfollow_modal: Visa bekräftelse innan du slutar följa någon
+ setting_use_blurhash: Visa färgglada gradienter för dold media
+ setting_use_pending_items: Långsamt läge
severity: Strikthet
+ sign_in_token_attempt: Säkerhetskod
type: Importtyp
username: Användarnamn
username_or_email: Användarnamn eller e-mail
+ whole_word: Hela ord
+ email_domain_block:
+ with_dns_records: Inkludera MX-poster och IP-adresser för domänen
+ featured_tag:
+ name: Hashtag
interactions:
must_be_follower: Blockera aviseringar från icke-följare
must_be_following: Blockera aviseringar från personer du inte följer
@@ -113,16 +147,36 @@ sv:
comment: Kommentar
invite_request:
text: Varför vill du gå med?
+ ip_block:
+ comment: Kommentar
+ ip: IP
+ severities:
+ no_access: Blockera åtkomst
+ sign_up_requires_approval: Begränsa registreringar
+ severity: Regel
notification_emails:
digest: Skicka sammandrag via e-post
favourite: Skicka e-post när någon favoriserar din status
follow: Skicka e-post när någon följer dig
follow_request: Skicka e-post när någon begär att följa dig
mention: Skicka e-post när någon nämner dig
+ pending_account: Nytt konto behöver granskas
reblog: Skicka e-post när någon knuffar din status
+ report: Ny rapport har skickats
+ trending_tag: En ogranskad hashtag trendar
+ rule:
+ text: Regel
+ tag:
+ listable: Tillåt att denna hashtag visas i sökningar och förslag
+ name: Hashtag
+ trendable: Tillåt att denna hashtag visas under trender
+ usable: Tillåt tutningar att använda denna hashtag
'no': Nej
recommended: Rekommenderad
required:
mark: "*"
text: obligatorisk
+ title:
+ sessions:
+ webauthn: Använd en av dina säkerhetsnycklar för att logga in
'yes': Ja
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 23add1d45..35045e9c3 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -8,46 +8,46 @@ th:
acct: ระบุ username@domain ของบัญชีที่คุณต้องการย้ายไป
account_warning_preset:
text: คุณสามารถใช้ไวยากรณ์โพสต์ เช่น URL, แฮชแท็ก และการกล่าวถึง
- title: ตัวเลือกเพิ่มเติม ไม่ปรากฏแก่ผู้รับ
+ title: ไม่จำเป็น ไม่ปรากฏแก่ผู้รับ
admin_account_action:
include_statuses: ผู้ใช้จะเห็นว่าโพสต์ใดก่อให้เกิดการกระทำการควบคุมหรือคำเตือน
send_email_notification: ผู้ใช้จะได้รับคำอธิบายว่าเกิดอะไรขึ้นกับบัญชีของเขา
- text_html: ตัวเลือกเพิ่มเติม คุณสามารถใช้ไวยากรณ์โพสต์ คุณสามารถ เพิ่มคำเตือนที่ตั้งไว้ล่วงหน้า เพื่อประหยัดเวลา
+ text_html: ไม่จำเป็น คุณสามารถใช้ไวยากรณ์โพสต์ คุณสามารถ เพิ่มคำเตือนที่ตั้งไว้ล่วงหน้า เพื่อประหยัดเวลา
type_html: เลือกสิ่งที่จะทำกับ %{acct}
- warning_preset_id: ตัวเลือกเพิ่มเติม คุณยังสามารถเพิ่มข้อความที่กำหนดเองที่จุดสิ้นสุดของค่าที่ตั้งไว้ล่วงหน้า
+ warning_preset_id: ไม่จำเป็น คุณยังสามารถเพิ่มข้อความที่กำหนดเองที่จุดสิ้นสุดของค่าที่ตั้งไว้ล่วงหน้า
announcement:
all_day: เมื่อกาเครื่องหมาย จะแสดงเฉพาะวันที่ของช่วงเวลาเท่านั้น
- ends_at: ตัวเลือกเพิ่มเติม จะเลิกเผยแพร่ประกาศที่เวลานี้โดยอัตโนมัติ
+ ends_at: ไม่จำเป็น จะเลิกเผยแพร่ประกาศที่เวลานี้โดยอัตโนมัติ
scheduled_at: เว้นว่างไว้เพื่อเผยแพร่ประกาศทันที
- starts_at: ตัวเลือกเพิ่มเติม ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เจาะจง
+ starts_at: ไม่จำเป็น ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เจาะจง
text: คุณสามารถใช้ไวยากรณ์โพสต์ โปรดระวังพื้นที่ที่ประกาศจะใช้ในหน้าจอของผู้ใช้
defaults:
autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ
avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px
- bot: บัญชีนี้ทำการกระทำแบบอัตโนมัติเป็นหลักและอาจไม่ได้รับการสังเกตการณ์
+ bot: ส่งสัญญาณให้ผู้อื่นว่าบัญชีทำการกระทำแบบอัตโนมัติเป็นหลักและอาจไม่ได้รับการสังเกตการณ์
context: บริบทจำนวนหนึ่งหรือมากกว่าที่ตัวกรองควรใช้
current_password: เพื่อวัตถุประสงค์ด้านความปลอดภัย โปรดป้อนรหัสผ่านของบัญชีปัจจุบัน
current_username: เพื่อยืนยัน โปรดป้อนชื่อผู้ใช้ของบัญชีปัจจุบัน
digest: ส่งเฉพาะหลังจากไม่มีการใช้งานเป็นเวลานานและในกรณีที่คุณได้รับข้อความส่วนบุคคลใด ๆ เมื่อคุณไม่อยู่เท่านั้น
- discoverable: ไดเรกทอรีโปรไฟล์เป็นอีกวิธีหนึ่งที่ทำให้บัญชีของคุณสามารถเข้าถึงผู้ชมได้กว้างขึ้น
+ discoverable: อนุญาตให้คนแปลกหน้าค้นพบบัญชีของคุณผ่านคำแนะนำและคุณลักษณะอื่น ๆ
email: คุณจะได้รับอีเมลยืนยัน
fields: คุณสามารถมีได้มากถึง 4 รายการแสดงเป็นตารางในโปรไฟล์ของคุณ
header: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px
inbox_url: คัดลอก URL จากหน้าแรกของรีเลย์ที่คุณต้องการใช้
irreversible: โพสต์ที่กรองจะหายไปอย่างถาวร แม้ว่าจะเอาตัวกรองออกในภายหลัง
locale: ภาษาของส่วนติดต่อผู้ใช้, อีเมล และการแจ้งเตือนแบบผลัก
- locked: คุณต้องอนุมัติผู้ติดตามด้วยตนเอง
+ locked: ควบคุมผู้ที่สามารถติดตามคุณด้วยตนเองโดยอนุมัติคำขอติดตาม
password: ใช้อย่างน้อย 8 ตัวอักษร
phrase: จะถูกจับคู่โดยไม่คำนึงถึงตัวพิมพ์ใหญ่เล็กในข้อความหรือคำเตือนเนื้อหาของโพสต์
scopes: API ใดที่แอปพลิเคชันจะได้รับอนุญาตให้เข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต
setting_aggregate_reblogs: ไม่แสดงการดันใหม่สำหรับโพสต์ที่เพิ่งดัน (มีผลต่อการดันที่ได้รับใหม่เท่านั้น)
- setting_default_sensitive: ซ่อนสื่อที่ละเอียดอ่อนโดยค่าเริ่มต้นและสามารถเปิดเผยได้ด้วยการคลิก
+ setting_default_sensitive: ซ่อนสื่อที่ละเอียดอ่อนเป็นค่าเริ่มต้นและสามารถเปิดเผยได้ด้วยการคลิก
setting_display_media_default: ซ่อนสื่อที่ถูกทำเครื่องหมายว่าละเอียดอ่อน
setting_display_media_hide_all: ซ่อนสื่อเสมอ
setting_display_media_show_all: แสดงสื่อเสมอ
- setting_hide_network: จะไม่แสดงผู้ที่คุณติดตามและผู้ที่ติดตามคุณในโปรไฟล์ของคุณ
- setting_noindex: มีผลต่อโปรไฟล์สาธารณะและหน้าสถานะของคุณ
- setting_show_application: จะแสดงแอปพลิเคชันที่คุณใช้เพื่อโพสต์ในมุมมองโดยละเอียดของโพสต์ของคุณ
+ setting_hide_network: จะซ่อนผู้ที่คุณติดตามและผู้ที่ติดตามคุณในโปรไฟล์ของคุณ
+ setting_noindex: มีผลต่อโปรไฟล์สาธารณะและหน้าโพสต์ของคุณ
+ setting_show_application: จะแสดงแอปพลิเคชันที่คุณใช้ในการโพสต์ในมุมมองโดยละเอียดของโพสต์ของคุณ
setting_use_blurhash: การไล่ระดับสีอิงตามสีของภาพที่ซ่อนอยู่แต่ทำให้รายละเอียดใด ๆ คลุมเครือ
setting_use_pending_items: ซ่อนการอัปเดตเส้นเวลาไว้หลังการคลิกแทนที่จะเลื่อนฟีดโดยอัตโนมัติ
username: ชื่อผู้ใช้ของคุณจะไม่ซ้ำกันใน %{domain}
@@ -65,8 +65,11 @@ th:
invite_request:
text: นี่จะช่วยให้เราตรวจทานใบสมัครของคุณ
ip_block:
+ comment: ไม่จำเป็น จดจำเหตุผลที่คุณเพิ่มกฎนี้
severities:
no_access: ปิดกั้นการเข้าถึงทรัพยากรทั้งหมด
+ sign_up_requires_approval: การลงทะเบียนใหม่จะต้องมีการอนุมัติของคุณ
+ severity: เลือกสิ่งที่จะเกิดขึ้นกับคำขอจาก IP นี้
sessions:
otp: 'ป้อนรหัสสองปัจจัยที่สร้างโดยแอปในโทรศัพท์ของคุณหรือใช้หนึ่งในรหัสกู้คืนของคุณ:'
tag:
@@ -113,7 +116,7 @@ th:
context: บริบทตัวกรอง
current_password: รหัสผ่านปัจจุบัน
data: ข้อมูล
- discoverable: แสดงรายการบัญชีนี้ในไดเรกทอรี
+ discoverable: แนะนำบัญชีให้ผู้อื่น
display_name: ชื่อที่แสดง
email: ที่อยู่อีเมล
expires_in: หมดอายุหลังจาก
@@ -122,7 +125,7 @@ th:
inbox_url: URL กล่องขาเข้าแบบรีเลย์
irreversible: ลบแทนที่จะซ่อน
locale: ภาษาส่วนติดต่อ
- locked: ล็อคบัญชี
+ locked: ต้องมีคำขอติดตาม
max_uses: จำนวนการใช้งานสูงสุด
new_password: รหัสผ่านใหม่
note: ชีวประวัติ
@@ -144,7 +147,7 @@ th:
setting_display_media_hide_all: ซ่อนทั้งหมด
setting_display_media_show_all: แสดงทั้งหมด
setting_expand_spoilers: ขยายโพสต์ที่ทำเครื่องหมายด้วยคำเตือนเนื้อหาเสมอ
- setting_hide_network: ซ่อนเครือข่ายของคุณ
+ setting_hide_network: ซ่อนกราฟทางสังคมของคุณ
setting_noindex: เลือกไม่รับการทำดัชนีโดยเครื่องมือค้นหา
setting_reduce_motion: ลดการเคลื่อนไหวในภาพเคลื่อนไหว
setting_show_application: เปิดเผยแอปพลิเคชันที่ใช้ในการส่งโพสต์
@@ -181,16 +184,18 @@ th:
severity: กฎ
notification_emails:
digest: ส่งอีเมลสรุป
- favourite: ใครสักคนได้ชื่นชอบสถานะของคุณ
+ favourite: ใครสักคนได้ชื่นชอบโพสต์ของคุณ
follow: ใครสักคนได้ติดตามคุณ
follow_request: ใครสักคนได้ขอติดตามคุณ
mention: ใครสักคนได้กล่าวถึงคุณ
pending_account: บัญชีใหม่ต้องมีการตรวจทาน
- reblog: ใครสักคนได้ดันสถานะของคุณ
+ reblog: ใครสักคนได้ดันโพสต์ของคุณ
report: มีการส่งรายงานใหม่
trending_tag: แฮชแท็กที่ยังไม่ได้ตรวจทานกำลังนิยม
+ rule:
+ text: กฎ
tag:
- listable: อนุญาตให้แฮชแท็กนี้ปรากฏในการค้นหาและในไดเรกทอรีโปรไฟล์
+ listable: อนุญาตให้แฮชแท็กนี้ปรากฏในการค้นหาและข้อเสนอแนะ
name: แฮชแท็ก
trendable: อนุญาตให้แฮชแท็กนี้ปรากฏภายใต้แนวโน้ม
usable: อนุญาตให้โพสต์ใช้แฮชแท็กนี้
@@ -198,5 +203,8 @@ th:
recommended: แนะนำ
required:
mark: "*"
- text: ต้องระบุ
+ text: จำเป็น
+ title:
+ sessions:
+ webauthn: ใช้หนึ่งในกุญแจความปลอดภัยของคุณเพื่อลงชื่อเข้า
'yes': ใช่
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 39ae58dc2..5e26da732 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -14,6 +14,12 @@ tr:
send_email_notification: Kullanıcı, hesabına ne olduğuna dair bir açıklama alacak
text_html: İsteğe bağlı. Toot sözdizimleri kullanabilirsiniz. Zamandan kazanmak için uyarı ön-ayarları ekleyebilirsiniz
type_html: "%{acct} ile ne yapılacağını seçin"
+ types:
+ disable: Kullanıcının hesabını kullanmasını engelle ama içeriklerini silme veya gizleme.
+ none: Bunu, başka bir eylem tetiklemeden kullanıcıya bir uyarı göndermek için kullan.
+ sensitive: Bu kullanıcının tüm medya eklerini hassas olarak işaretlemeye zorla.
+ silence: Kullanıcının herkese açık şekilde gönderimde bulunmasını engelle, gönderilerini ve bildirimlerini onları takip etmeyen kişilerden gizle.
+ suspend: Bu hesaptan herhangi bir etkileşimi engelle ve içeriğini sil. 30 gün içerisinde geri alınabilir.
warning_preset_id: İsteğe bağlı. Hazır ayarın sonuna hala özel metin ekleyebilirsiniz
announcement:
all_day: İşaretlendiğinde, yalnızca zaman aralığındaki tarihler görüntülenir
@@ -73,6 +79,8 @@ tr:
no_access: Tüm kaynaklara erişimi engelle
sign_up_requires_approval: Yeni kayıt onayınızı gerektirir
severity: Bu IP'den gelen isteklere ne olacağını seçin
+ rule:
+ text: Bu sunucu üzerindeki kullanıcılar için bir kural veya gereksinimi tanımlayın. Kuralı kısa ve yalın tutmaya çalışın
sessions:
otp: Telefonunuzdaki two-factor kodunuzu giriniz veya kurtarma kodlarınızdan birini giriniz.
webauthn: Bir USB anahtarıysa, taktığınızdan ve gerekirse üzerine tıkladığınızdan emin olun.
@@ -101,7 +109,7 @@ tr:
disable: Dondur
none: Hiç birşey
sensitive: Hassas
- silence: Limit
+ silence: Sınırla
suspend: Hesap verilerini askıya alın ve geri alınamaz şekilde silin
warning_preset_id: Bir uyarı ön ayarı kullan
announcement:
@@ -197,6 +205,8 @@ tr:
reblog: Biri durumunuzu boostladı
report: Yeni rapor gönderildi
trending_tag: İncelenmemiş bir etiket gündem oluyor
+ rule:
+ text: Kural
tag:
listable: Bu etiketin aramalarda ve profil dizininde görünmesine izin ver
name: Etiket
diff --git a/config/locales/simple_form.tt.yml b/config/locales/simple_form.tt.yml
index 5eab4abff..1b1d034b3 100644
--- a/config/locales/simple_form.tt.yml
+++ b/config/locales/simple_form.tt.yml
@@ -1 +1,28 @@
+---
tt:
+ simple_form:
+ labels:
+ account_warning_preset:
+ title: Исем
+ admin_account_action:
+ type: Ğämäl
+ types:
+ sensitive: Sizmäle
+ suspend: Искә алмау
+ defaults:
+ avatar: Аватар
+ data: Мәгълүмат
+ email: Почта адресы
+ header: Башлам
+ password: Парол
+ setting_display_media_default: Töpcay
+ username: Кулланучы исеме
+ invite:
+ comment: Аңлатма
+ ip_block:
+ comment: Аңлатма
+ ip: ІР
+ 'no': Юк
+ required:
+ mark: "*"
+ 'yes': Әйе
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index adfc07a09..2153d6091 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -3,17 +3,23 @@ uk:
simple_form:
hints:
account_alias:
- acct: Вкажіть ім'я користувача@домен облікового запису, з якої ви хочете переміститися
+ acct: Вкажіть ім'я користувача@домен облікового запису, з якого ви хочете здійснити перенесення
account_migration:
- acct: Вкажіть ім'я користувача@домен облікового запису, на яку ви хочете переміститися
+ acct: Вкажіть ім'я користувача@домен облікового запису, на який ви хочете здійснити перенесення
account_warning_preset:
text: Ви можете використовувати синтаксис дмухів, наприклад URLи, хештеґи та згадки
title: Необов'язково. Не відображається отримувачу
admin_account_action:
include_statuses: Користувач побачить, які дмухи призвели до адміністративних дій або попереджень
send_email_notification: Користувач отримає роз'яснення, що сталося з його обліковим записом
- text_html: Необов'язково. Ви можете використовувати синтакс дмухів. Ви можете додати шаблони попереджень, щоб заощадити час
+ text_html: Необов'язково. Ви можете використовувати синтаксис дмухів. Ви можете додати шаблони попереджень, щоб заощадити час
type_html: Оберіть, що робити з %{acct}
+ types:
+ disable: Не давати користувачеві можливість використовувати свій обліковий запис, але не видаляти і не приховувати його вміст.
+ none: Використовуйте це, щоб надіслати попередження користувачеві без подальших дій.
+ sensitive: Примусово позначати всі медіа файли цього користувача делікатними.
+ silence: Заборонити користувачеві розміщувати загальнодоступні повідомлення, приховувати їхні повідомлення та повідомлення від людей, які не слідкують за ними.
+ suspend: Заборонити взаємодію з цим обліковим записом та видалити його вміст. Можна скасувати впродовж 30 днів.
warning_preset_id: Необов'язково. Ви можете ще додати будь-який текст до кінця шаблону
announcement:
all_day: Якщо вибрано, відображаються лише дати діапазону часу
@@ -51,7 +57,7 @@ uk:
setting_use_blurhash: Градієнти, що базуються на кольорах прихованих медіа, але роблять нерозрізненними будь-які деталі
setting_use_pending_items: Не додавати нові повідомлення до стрічок миттєво. Показувати їх тільки після додаткового клацання.
username: Ваше ім'я користувача буде унікальним у %{domain}
- whole_word: Якщо пошукове слово або фраза містить тільки літери та цифри, воно має співпадати цілком
+ whole_word: Якщо пошукове слово або фраза містить лише літери та цифри, воно має збігатися цілком
domain_allow:
domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені
email_domain_block:
@@ -65,6 +71,16 @@ uk:
data: Файл CSV, експортований з іншого сервера Mastodon
invite_request:
text: Це допоможе нам розглянути вашу заяву
+ ip_block:
+ comment: Необов'язково. Нагадування, чому ви додали це правило.
+ expires_in: IP-адреси є вичерпним ресурсом, іноді ними користуються спільно й вони часто змінюють власників. Тому безтермінові блокування IP не рекомендовані.
+ ip: Введіть адресу IPv4 або IPv6. Ви можете блокувати цілі діапазони, використовуючи синтаксис CIDR. Будьте обережні, щоб не заблокувати себе!
+ severities:
+ no_access: Заблокувати доступ до всіх ресурсів
+ sign_up_requires_approval: Нові реєстрації потребуватимуть затвердження вами
+ severity: Виберіть, що буде відбуватися з запитами з цієї IP
+ rule:
+ text: Опис правила або вимоги для користувачів на цьому сервері. Спробуйте зробити його коротким і простим
sessions:
otp: Введите код двухфакторной аутентификации или используйте один из Ваших кодов восстановления.
webauthn: Якщо це USB ключ, вставте його і, якщо необхідно, натисніть на нього.
@@ -92,6 +108,7 @@ uk:
types:
disable: Вимкнути
none: Нічого не робити
+ sensitive: Делікатне
silence: Глушення
suspend: Призупинити та незворотньо видалити дані облікового запису
warning_preset_id: Використати шаблон попередження
@@ -117,6 +134,7 @@ uk:
expires_in: Закінчується після
fields: Метадані профіля
header: Заголовок
+ honeypot: "%{label} (не заповнюйте)"
inbox_url: URL поштової скриньки ретранслятора
irreversible: Видалити назавжди, а не просто сховати
locale: Мова
@@ -136,6 +154,7 @@ uk:
setting_default_privacy: Видимість постів
setting_default_sensitive: Позначити медіа як дражливе
setting_delete_modal: Показувати діалог підтвердження під час видалення дмуху
+ setting_disable_swiping: Вимкнути рух проведення
setting_display_media: Відображення медіа
setting_display_media_default: За промовчанням
setting_display_media_hide_all: Сховати всі
@@ -169,6 +188,13 @@ uk:
comment: Коментар
invite_request:
text: Чому ви хочете приєднатися?
+ ip_block:
+ comment: Коментар
+ ip: IP
+ severities:
+ no_access: Заборонити доступ
+ sign_up_requires_approval: Обмеження реєстрації
+ severity: Правило
notification_emails:
digest: Надсилати дайджест електронною поштою
favourite: Надсилати листа, коли комусь подобається Ваш статус
@@ -179,6 +205,8 @@ uk:
reblog: Надсилати листа, коли хтось передмухує Ваш статус
report: Надсилати електронного листа, коли з'являється нова скарга
trending_tag: Надсилати електронного листа, коли нерозглянутий хештеґ стає популярним
+ rule:
+ text: Правило
tag:
listable: Дозволити появу цього хештеґа у каталозі профілів
name: Хештеґ
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index dfe1ae36e..a934cc174 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -14,6 +14,12 @@ vi:
send_email_notification: Người dùng sẽ nhận được lời giải thích về những gì xảy ra với tài khoản của họ
text_html: Tùy chọn. Bạn nên dùng cảnh cáo cài sẵn để tiết kiệm thời gian
type_html: Chọn làm gì với %{acct}
+ types:
+ disable: Cấm người này tiếp tục đăng nhập, nhưng không xóa hoặc ẩn tút của họ.
+ none: Sử dụng để gửi cảnh cáo tới tài khoản này, không áp đặt trừng phạt.
+ sensitive: Mọi tập tin của tài khoản này tải lên đều sẽ bị gắn nhãn nhạy cảm.
+ silence: Cấm tài khoản này đăng tút công khai, ẩn tút của họ hiện ra với những người chưa theo dõi họ.
+ suspend: Vô hiệu hóa mọi hoạt động của tài khoản này và xóa sạch dữ liệu. Có thể mở lại trong vòng 30 ngày.
warning_preset_id: Tùy chọn. Bạn vẫn có thể thêm ghi chú riêng
announcement:
all_day: Chỉ có khoảng thời gian được đánh dấu mới hiển thị
@@ -24,12 +30,12 @@ vi:
defaults:
autofollow: Những người đăng ký sẽ tự động theo dõi bạn
avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
- bot: Tài khoản này tự động thực hiện các hành động và không cần thiết theo dõi
+ bot: Tài khoản này tự động thực hiện các hành động và không được quản lý bởi người thật
context: Chọn một hoặc nhiều nơi mà bộ lọc sẽ áp dụng
current_password: Vì mục đích bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại
current_username: Để xác nhận, vui lòng nhập tên người dùng của tài khoản hiện tại
digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt)
- discoverable: Mọi người sẽ có thể tìm thấy bạn dễ dàng hơn
+ discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi và những tính năng khác
email: Bạn sẽ được gửi một email xác nhận
fields: Được phép tạo tối đa 4 mục trên trang cá nhân của bạn
header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
@@ -41,7 +47,7 @@ vi:
phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút
scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn quyền hạn cấp cao nhất, bạn không cần chọn từng phạm vi.
setting_aggregate_reblogs: Nếu một tút đã được chia sẻ thì những lượt chia sẻ sau sẽ không hiển thị trên bảng tin nữa
- setting_default_sensitive: Nội dung nhạy cảm mặc định là ẩn và chỉ hiển thị nếu nhấn vào
+ setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiển thị nếu nhấn vào
setting_display_media_default: Làm mờ những thứ được đánh dấu là nhạy cảm
setting_display_media_hide_all: Không hiển thị
setting_display_media_show_all: Luôn luôn hiển thị
@@ -73,13 +79,15 @@ vi:
no_access: Chặn truy cập từ tất cả IP này
sign_up_requires_approval: Bạn sẽ phê duyệt những đăng ký mới từ IP này
severity: Chọn hành động nếu nhận được yêu cầu từ IP này
+ rule:
+ text: Mô tả một quy tắc bắt buộc trên máy chủ này. Nên để ngắn và đơn giản.
sessions:
otp: 'Nhập mã xác thực hai bước được tạo bởi ứng dụng điện thoại của bạn hoặc dùng một trong các mã khôi phục của bạn:'
webauthn: Nếu đây là USB key, hãy cắm vào và thử xoay chiều.
tag:
name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn
user:
- chosen_languages: Chỉ những tút viết bằng các ngôn ngữ được chọn sẽ hiển thị trên bảng tin
+ chosen_languages: Chỉ hiển thị những tút viết bằng các ngôn ngữ được chọn sau
labels:
account:
fields:
@@ -99,11 +107,11 @@ vi:
type: Hành động
types:
disable: Tạm khóa
- none: Cấm upload
+ none: Cảnh cáo
sensitive: Nhạy cảm
silence: Tạm ẩn
suspend: Vô hiệu hóa
- warning_preset_id: Dùng cảnh cáo cài sẵn
+ warning_preset_id: Dùng mẫu có sẵn
announcement:
all_day: Sự kiện diễn ra hằng ngày
ends_at: Kết thúc sự kiện
@@ -116,7 +124,7 @@ vi:
bot: Đây là tài khoản Bot
chosen_languages: Chọn ngôn ngữ
confirm_new_password: Xác nhận mật khẩu mới
- confirm_password: Xác nhận mật khẩu
+ confirm_password: Nhập lại mật khẩu
context: Áp dụng
current_password: Mật khẩu hiện tại
data: Dữ liệu
@@ -137,14 +145,14 @@ vi:
otp_attempt: Xác thực hai bước
password: Mật khẩu
phrase: Từ khóa hoặc cụm từ
- setting_advanced_layout: Kích hoạt giao diện nhiều cột
- setting_aggregate_reblogs: Không hiện lượt chia sẻ trùng
+ setting_advanced_layout: Bật giao diện nhiều cột
+ setting_aggregate_reblogs: Không hiện lượt chia sẻ trùng lặp
setting_auto_play_gif: Tự động phát ảnh GIF
setting_boost_modal: Yêu cầu xác nhận trước khi chia sẻ tút
setting_crop_images: Hiển thị ảnh theo tỉ lệ 16x9
setting_default_language: Ngôn ngữ đăng
setting_default_privacy: Kiểu đăng
- setting_default_sensitive: Luôn đánh dấu ảnh/video là nội dung nhạy cảm
+ setting_default_sensitive: Ảnh/video là nội dung nhạy cảm
setting_delete_modal: Yêu cầu xác nhận trước khi xóa tút
setting_disable_swiping: Vô hiệu hóa vuốt màn hình
setting_display_media: Nội dung nhạy cảm
@@ -152,7 +160,7 @@ vi:
setting_display_media_hide_all: Ẩn toàn bộ
setting_display_media_show_all: Hiện toàn bộ
setting_expand_spoilers: Luôn hiển thị đầy đủ nội dung tút
- setting_hide_network: Ẩn kết nối của bạn
+ setting_hide_network: Ẩn quan hệ của bạn
setting_noindex: Không xuất hiện trong công cụ tìm kiếm
setting_reduce_motion: Giảm chuyển động ảnh GIF
setting_show_application: Hiện ứng dụng đã dùng để đăng tút
@@ -195,15 +203,17 @@ vi:
mention: Ai đó nhắc đến bạn
pending_account: Tài khoản mới cần phê duyệt
reblog: Ai đó chia sẻ tút của bạn
- report: Ai đó gửi báo cáo kiểm duyệt
+ report: Ai đó gửi báo cáo
trending_tag: Một hashtag chưa được phê duyệt đang là xu hướng
+ rule:
+ text: Quy tắc
tag:
- listable: Cho phép hashtag này xuất hiện trong tìm kiếm và trên tiểu sử cá nhân
+ listable: Cho phép hashtag này xuất hiện trong tìm kiếm và đề xuất
name: Hashtag
trendable: Cho phép hashtag này xuất hiện trong xu hướng
usable: Cho phép dùng hashtag này trong tút
'no': Tắt
- recommended: Khuyến nghị
+ recommended: Đề xuất
required:
mark: "*"
text: yêu cầu
diff --git a/config/locales/simple_form.zgh.yml b/config/locales/simple_form.zgh.yml
index ed9ea90f8..1d55f34b5 100644
--- a/config/locales/simple_form.zgh.yml
+++ b/config/locales/simple_form.zgh.yml
@@ -36,6 +36,4 @@ zgh:
tag:
name: ⵀⴰⵛⵟⴰⴳ
'no': ⵓⵀⵓ
- required:
- mark: "*"
'yes': ⵢⴰⵀ
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 35222c076..d9c990de2 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -3,24 +3,30 @@ zh-CN:
simple_form:
hints:
account_alias:
- acct: 指定您想要迁移过来的帐号的 用户名@站点域名
+ acct: 指定你想要迁移过来的原帐号:用户名@站点域名
account_migration:
- acct: 指定你想迁移过去的帐号的 用户名@站点域名
+ acct: 指定你想迁移过去的目标帐号:用户名@站点域名
account_warning_preset:
text: 你可以使用嘟文格式,例如加入 URL、话题标签和“@”
title: 可选。对接收者不可见
admin_account_action:
include_statuses: 用户将会看到哪些嘟文导致了审核行为或警告
- send_email_notification: 用户将收到对其账号上发生的事的解释
+ send_email_notification: 用户将收到关于其账号异动的解释
text_html: 可选。你可以使用嘟文格式。你可以预置警告以节省时间
type_html: 用%{acct}选择做什么
+ types:
+ disable: 禁止用户使用账户,但不会删除或隐藏账户内容。
+ none: 用它来向用户发送警告,不会触发其他操作。
+ sensitive: 强制将此用户的所有媒体文件标记为敏感内容。
+ silence: 阻止用户发送公开嘟文,除了关注者以外,其他人都无法看到他的嘟文和通知。
+ suspend: 阻止此账户的任何交互并删除其内容。30天内可以撤销操作。
warning_preset_id: 可选。你可以在预置文本末尾添加自定义文本
announcement:
all_day: 如果选中,只有该时间段内的日期会显示。
ends_at: 可选。公告会在该时间点自动取消发布
scheduled_at: 留空的话,公告会立即发布。
starts_at: 可选。你可以让你的公告只在特定时间段显示。
- text: 你可以使用嘟文格式。但是请注意不要让公告占据太多用户屏幕上的空间。
+ text: 你可以使用嘟文格式。但请注意不要让公告占据用户太多屏幕空间。
defaults:
autofollow: 通过邀请链接注册的用户将会自动关注你
avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
@@ -29,7 +35,7 @@ zh-CN:
current_password: 为了安全起见,请输入当前账号的密码
current_username: 请输入当前账号的用户名以确认
digest: 仅在你长时间未登录,且收到了私信时发送
- discoverable: 用户目录能够让您的帐号广为人知
+ discoverable: 用户目录能够让你的帐号广为人知
email: 我们会向你发送一封确认邮件
fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目
header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
@@ -38,46 +44,48 @@ zh-CN:
locale: 用户界面、电子邮件和推送通知中使用的语言
locked: 你需要手动审核所有关注请求
password: 至少需要8个字符
- phrase: 匹配将无视大小写和嘟文的内容警告
- scopes: 哪些 API 被允许使用。如果你选中了更高一级的范围,就不能单个选中了。
- setting_aggregate_reblogs: 请不要显示最近已经被转嘟过的转嘟(只会影响新收到的转嘟)
+ phrase: 匹配将忽略嘟文或内容警告里的字母大小写
+ scopes: 哪些 API 被允许使用。如果你勾选了更高一级的范围,就不用单独选中子项目了。
+ setting_aggregate_reblogs: 不显示最近已经被转嘟过的嘟文(只会影响新收到的转嘟)
setting_default_sensitive: 敏感内容默认隐藏,并在点击后显示
setting_display_media_default: 隐藏被标记为敏感内容的媒体
- setting_display_media_hide_all: 总是隐藏所有媒体
- setting_display_media_show_all: 总是显示被标记为敏感内容的媒体
- setting_hide_network: 你关注的人和关注你的人将不会在你的个人资料页上展示
+ setting_display_media_hide_all: 隐藏所有媒体
+ setting_display_media_show_all: 显示所有的媒体
+ setting_hide_network: 你的关注者和你关注的人将不会在你的个人资料页上展示
setting_noindex: 此设置会影响到你的公开个人资料以及嘟文页面
setting_show_application: 你用来发表嘟文的应用程序将会在你嘟文的详细内容中显示
setting_use_blurhash: 渐变是基于模糊后的隐藏内容生成的
setting_use_pending_items: 关闭自动滚动更新,时间轴会在点击后更新
- username: 你的用户名在 %{domain} 上是独特的
- whole_word: 如果关键词只包含字母和数字,就只会在整个词被匹配时才会套用
+ username: 你的用户名在 %{domain} 上是唯一的
+ whole_word: 如果关键词只包含字母和数字,将只在词语完全匹配时才会应用
domain_allow:
- domain: 该站点将能够从该服务器上拉取数据,并且从那里发过来的数据也会被处理和存储。
+ domain: 该站点将能够从该服务器上拉取数据,并处理和存储收到的数据。
email_domain_block:
domain: 这里可以是邮箱地址中的域名部分、域名解析到的 MX 记录,或者 MX 记录解析到的域名。这些检查会在用户注册时进行,如果邮箱域名被封禁,那么注册会被拒绝。
with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁
featured_tag:
name: 你可能想要使用以下之一:
form_challenge:
- current_password: 您正在进入安全区域
+ current_password: 你正在进入安全区域
imports:
data: 从其他 Mastodon 服务器导出的 CSV 文件
invite_request:
text: 这会有助于我们处理你的申请
ip_block:
- comment: 可选。请记住为什么您添加了此规则。
+ comment: 可选。请记住为什么你添加了此规则。
expires_in: IP 地址是一种有限的资源,它们有时是共享的,并且常常变化。因此,不推荐无限期的 IP 封禁。
- ip: 输入 IPv4 或 IPv6 地址。您可以使用 CIDR 语法屏蔽整个范围。小心不要屏蔽自己!
+ ip: 输入 IPv4 或 IPv6 地址。你可以使用CIDR语法屏蔽IP段。小心不要屏蔽自己!
severities:
no_access: 阻止访问所有资源
- sign_up_requires_approval: 新的注册需要您的批准
+ sign_up_requires_approval: 新注册需要你的批准
severity: 选择如何处理来自此 IP 的请求。
+ rule:
+ text: 描述这个服务器上的用户规则或要求。尽量确保简洁、清晰易懂
sessions:
otp: 输入你手机应用上生成的双重认证码,或者任意一个恢复代码:
webauthn: 如果是 USB 密钥,请确保将其插入,如有必要,请点击它。
tag:
- name: 您只能改变字母的大小写,让它更易读
+ name: 你只能改变字母的大小写,让它更易读
user:
chosen_languages: 仅选中语言的嘟文会出现在公共时间轴上(全不选则显示所有语言的嘟文)
labels:
@@ -98,10 +106,10 @@ zh-CN:
text: 内容警告
type: 动作
types:
- disable: 禁用
+ disable: 冻结
none: 忽略
sensitive: 敏感内容
- silence: 静音
+ silence: 隐藏
suspend: 停用并永久删除账号数据
warning_preset_id: 使用预置警告
announcement:
@@ -137,7 +145,7 @@ zh-CN:
otp_attempt: 双重认证代码
password: 密码
phrase: 关键词
- setting_advanced_layout: 启用高级 web 界面
+ setting_advanced_layout: 启用高级web界面
setting_aggregate_reblogs: 在时间轴中合并转嘟
setting_auto_play_gif: 自动播放 GIF 动画
setting_boost_modal: 在转嘟前询问我
@@ -197,6 +205,8 @@ zh-CN:
reblog: 当有用户转嘟了我的嘟文时,发送电子邮件提醒我
report: 在提交新举报时,发送电子邮件提醒我
trending_tag: 当未经审核的话题成为当前热门时发邮件提醒
+ rule:
+ text: 规则
tag:
listable: 允许这个话题标签在用户目录中显示
name: 话题标签
@@ -209,5 +219,5 @@ zh-CN:
text: 必填
title:
sessions:
- webauthn: 使用您的安全密钥登录
+ webauthn: 使用你的安全密钥登录
'yes': 是
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index eaed6e32b..c9359bfd0 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -14,6 +14,12 @@ zh-HK:
send_email_notification: 使用者將收到帳戶發生之事情的解釋
text_html: 選用。你能使用 toot 語法。你可 新增警告預設 來節省時間
type_html: 設定要使用 %{acct} 做的事
+ types:
+ disable: 禁止該使用者使用他們的帳號,但是不刪除或隱藏他們的內容。
+ none: 用這個來警告該使用者,而不進行其他操作。
+ sensitive: 強制標記此用戶的所有媒體附件為敏感內容。
+ silence: 禁止該使用者發表公開嘟文,沒有跟隨他們的帳號不會看到來自該用戶的嘟文和通知。
+ suspend: 禁止該帳號的所有互動並刪除其內容。此操作在三十日內可以被復原。
warning_preset_id: 選用。你仍可在預設訊息的結尾加入自訂文字
announcement:
all_day: 勾選後,只會顯示出時間範圍中的日期部分
@@ -73,6 +79,8 @@ zh-HK:
no_access: 封鎖所有資源存取
sign_up_requires_approval: 新登記申請正等候你審批
severity: 請設定伺服器將如何處理來自這個 IP 位址的請求
+ rule:
+ text: 請描述在此伺服器上用戶需要遵守的規則或要求。請盡量保持簡短易明。
sessions:
otp: 輸入你手機上生成的雙重認證碼,或者任意一個恢復代碼:
webauthn: 如果它是 USB 安全鑰匙的話,請先插入電腦。如鑰匙設計有需要,請按鍵啟用。
@@ -197,6 +205,8 @@ zh-HK:
reblog: 當有人轉推你的文章時
report: 收到新檢舉時
trending_tag: 當未審核的標籤成為當前熱門時
+ rule:
+ text: 規則
tag:
listable: 允許此主題標籤在搜尋及個人檔案目錄中顯示
name: 主題標籤
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 000ec529b..b815f42c7 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -8,10 +8,18 @@ zh-TW:
acct: 指定欲移動至之帳戶的 使用者名稱@站台
account_warning_preset:
text: 您可使用嘟文語法,例如網址、「#」標籤和提及功能
+ title: 可選。不會向收件者顯示
admin_account_action:
+ include_statuses: 使用者可看到導致檢舉或警告的嘟文
send_email_notification: 使用者將收到帳戶發生之事情的解釋
text_html: 選用。您能使用嘟文語法。您可 新增警告預設 來節省時間
type_html: 設定要使用 %{acct} 做的事
+ types:
+ disable: 禁止該使用者使用他們的帳戶,但是不刪除或隱藏他們的內容。
+ none: 使用這個寄送警告給該使用者,而不進行其他動作。
+ sensitive: 強制標記此使用者所有媒體為敏感內容。
+ silence: 禁止該使用者發公開嘟文,從無跟隨他們的帳戶中隱藏嘟文和通知。
+ suspend: 禁止所有對該帳戶任何互動,並且刪除其內容。三十日內可以撤回。
warning_preset_id: 選用。您仍可在預設的結尾新增自訂文字
announcement:
all_day: 核取後,只會顯示出時間範圍中的日期部分
@@ -53,6 +61,8 @@ zh-TW:
data: 從其他 Mastodon 伺服器匯出的 CSV 檔案
invite_request:
text: 這會協助我們審核您的應用程式
+ rule:
+ text: 說明使用者在此伺服器上需遵守的規則或條款。試著維持各項條款簡短而明瞭。
sessions:
otp: 請輸入產生自您手機 App 的兩步驟驗證碼,或輸入其中一個復原代碼:
tag:
@@ -88,7 +98,7 @@ zh-TW:
defaults:
autofollow: 邀請別人關注你的帳戶
avatar: 大頭貼
- bot: 此帳號是台機器人
+ bot: 此帳戶是台機器人
chosen_languages: 過濾語言
confirm_new_password: 確認新密碼
confirm_password: 確認密碼
@@ -97,14 +107,14 @@ zh-TW:
data: 資料
discoverable: 在目錄列出此帳戶
display_name: 顯示名稱
- email: 電子信箱位址
+ email: 電子信箱地址
expires_in: 失效時間
fields: 個人資料中繼資料
header: 頁面頂端
inbox_url: 中繼收件匣的 URL
irreversible: 放棄而非隱藏
locale: 介面語言
- locked: 鎖定帳號
+ locked: 鎖定帳戶
max_uses: 最大使用次數
new_password: 新密碼
note: 簡介
@@ -119,6 +129,7 @@ zh-TW:
setting_default_privacy: 嘟文可見範圍
setting_default_sensitive: 總是將媒體標記為敏感內容
setting_delete_modal: 刪除嘟文前先詢問我
+ setting_disable_swiping: 停用滑動手勢
setting_display_media: 媒體顯示
setting_display_media_default: 預設
setting_display_media_hide_all: 全部隱藏
@@ -132,12 +143,16 @@ zh-TW:
setting_theme: 站點主題
setting_trends: 顯示本日趨勢
setting_unfollow_modal: 取消關注某人前先詢問我
+ setting_use_blurhash: 將隱藏媒體以彩色漸變圖樣表示
setting_use_pending_items: 限速模式
severity: 優先級
+ sign_in_token_attempt: 安全代碼
type: 匯入類型
username: 使用者名稱
- username_or_email: 使用者名稱或電子信箱位址
+ username_or_email: 使用者名稱或電子信箱地址
whole_word: 整個詞彙
+ email_domain_block:
+ with_dns_records: 包括網域的 MX 記錄和 IP 位址
featured_tag:
name: "「#」標籤"
interactions:
@@ -164,6 +179,8 @@ zh-TW:
pending_account: 需要審核的新帳戶
reblog: 當有使用者轉嘟你的嘟文時,傳送電子信件通知
report: 當提交新檢舉時傳送電子郵件
+ rule:
+ text: 規則
tag:
listable: 允許此主題標籤在搜尋及個人檔案目錄中顯示
name: 主題標籤
@@ -172,7 +189,6 @@ zh-TW:
'no': 否
recommended: 建議
required:
- mark: "*"
text: 必須填寫
title:
sessions:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index bc214a444..51c856b4d 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -7,7 +7,6 @@ sk:
active_count_after: aktívni
active_footnote: Mesačne aktívnych užívateľov (MAU)
administered_by: 'Správcom je:'
- api: API
apps: Aplikácie
apps_platforms: Užívaj Mastodon z iOSu, Androidu, a iných platforiem
browse_directory: Prehľadávaj databázu profilov, a filtruj podľa záujmov
@@ -39,7 +38,6 @@ sk:
terms: Podmienky užitia
unavailable_content: Nedostupný obsah
unavailable_content_description:
- domain: Server
reason: 'Dôvod:'
rejecting_media: 'Mediálne súbory z týchto serverov nebudú spracované, alebo ukladané, a nebudú z nich zobrazované žiadne náhľady, vyžadujúc ručné prekliknutie priamo až k pôvodnému súboru:'
rejecting_media_title: Triedené médiá
@@ -83,10 +81,8 @@ sk:
other: Príspevkov
posts_tab_heading: Príspevky
posts_with_replies: Príspevky s odpoveďami
- reserved_username: Prihlasovacie meno je vyhradené
roles:
admin: Správca
- bot: Bot
group: Skupina
moderator: Moderátor
unavailable: Profil nieje dostupný
@@ -125,7 +121,6 @@ sk:
display_name: Ukáž meno
domain: Doména
edit: Uprav
- email: Email
email_status: Stav emailu
enable: Povoľ
enabled: Povolený
@@ -201,7 +196,6 @@ sk:
unsubscribe: Prestaň odoberať
username: Prezývka
warn: Varuj
- web: Web
whitelisted: Na bielej listine
action_logs:
action_types:
@@ -226,39 +220,6 @@ sk:
silence_account: Utíš účet
suspend_account: Vylúč účet
update_status: Aktualizuj stav
- actions:
- assigned_to_self_report: "%{name} pridelil/a hlásenie užívateľa %{target} sebe"
- change_email_user: "%{name} zmenil/a emailovú adresu užívateľa %{target}"
- confirm_user: "%{name} potvrdil emailovú adresu používateľa %{target}"
- create_account_warning: "%{name} poslal/a varovanie užívateľovi %{target}"
- create_custom_emoji: "%{name} nahral nový emoji %{target}"
- create_domain_allow: "%{name} pridal/a doménu %{target} na zoznam povolených"
- create_domain_block: "%{name} zablokoval doménu %{target}"
- create_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam zakázaných"
- demote_user: "%{name} degradoval používateľa %{target}"
- destroy_custom_emoji: "%{name} zničil/a %{target} emoji"
- destroy_domain_allow: "%{name} odstránil/a doménu %{target} zo zoznamu povolených"
- destroy_domain_block: "%{name} povolil doménu %{target}"
- destroy_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam povolených"
- destroy_status: "%{name} zmazal status %{target}"
- disable_2fa_user: "%{name} vypol požiadavku 2FA pre používateľa %{target}"
- disable_custom_emoji: "%{name} zakázal emoji %{target}"
- disable_user: "%{name} zakázal prihlásenie pre používateľa %{target}"
- enable_custom_emoji: "%{name} povolil emoji %{target}"
- enable_user: "%{name} povolil prihlásenie pre používateľa %{target}"
- memorialize_account: "%{name} zmenil účet %{target} na pamätnú stránku"
- promote_user: "%{name} vyzdvihli užívateľa %{target}"
- remove_avatar_user: "%{name} odstránil/a %{target}ov avatár"
- reopen_report: "%{name} znovu otvoril/a hlásenie užívateľa %{target}"
- reset_password_user: "%{name} resetoval/a heslo pre používateľa %{target}"
- resolve_report: "%{name} vyriešili nahlásenie užívateľa %{target}"
- silence_account: "%{name} utíšil/a účet %{target}"
- suspend_account: "%{name} zablokoval/a účet používateľa %{target}"
- unassigned_report: "%{name} odobral/a report od %{target}"
- unsilence_account: "%{name} zrušil/a stíšenie účtu používateľa %{target}"
- unsuspend_account: "%{name} zrušil/a blokovanie účtu používateľa %{target}"
- update_custom_emoji: "%{name} aktualizoval/a emoji %{target}"
- update_status: "%{name} aktualizoval/a status pre %{target}"
deleted_status: "(zmazaný príspevok)"
filter_by_action: Filtruj podľa úkonu
filter_by_user: Trieď podľa užívateľa
@@ -317,7 +278,6 @@ sk:
feature_profile_directory: Katalóg profilov
feature_registrations: Registrácie
feature_relay: Federovací mostík
- feature_spam_check: Proti spamu
feature_timeline_preview: Náhľad časovej osi
features: Vymoženosti
hidden_service: Federácia so skrytými službami
@@ -502,8 +462,6 @@ sk:
users: Prihláseným, miestnym užívateľom
domain_blocks_rationale:
title: Ukáž zdôvodnenie
- enable_bootstrap_timeline_accounts:
- title: Novým užívateľom povoľ východiskové následovania
hero:
desc_html: Zobrazuje sa na hlavnej stránke. Doporučené je rozlišenie aspoň 600x100px. Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru.
title: Obrázok hrdinu
@@ -554,9 +512,6 @@ sk:
desc_html: Môžeš si napísať svoje vlastné pravidla o súkromí, prevádzke, alebo aj iné legality. Môžeš tu používať HTML kód
title: Vlastné pravidlá prevádzky
site_title: Názov servera
- spam_check_enabled:
- desc_html: Mastodon môže sám stíšiť, a nahlásiť účty v závislosti od rozpoznania parametrov ako napríklad opakované rozosielanie nevyžiadanej komunikácie. Môže dôjsť aj k nesprávnej identifikácii.
- title: Proti spamu
thumbnail:
desc_html: Používané pre náhľady cez OpenGraph a API. Doporučuje sa rozlišenie 1200x630px
title: Miniatúra servera
@@ -591,9 +546,6 @@ sk:
accounts_today: Jedinečných užívateľov za dnešok
accounts_week: Jedinečných užívateľov tento týždeň
breakdown: Rozpis dnešného využitia podľa zdroja
- context: Súvis
- directory: V zozname
- in_directory: "%{count} v zozname"
last_active: Naposledy aktívny
most_popular: Najpopulárnejšie
most_recent: Najnovšie
@@ -639,7 +591,6 @@ sk:
toot_layout: Rozloženie príspevkov
application_mailer:
notification_preferences: Zmeň emailové voľby
- salutation: "%{name},"
settings: 'Zmeň emailové voľby: %{link}'
view: 'Zobraziť:'
view_profile: Zobraz profil
@@ -768,7 +719,6 @@ sk:
request: Vyžiadaj si tvoj archív
size: Veľkosť
blocks: Blokujete
- csv: CSV
domain_blocks: Blokované domény
lists: Zoznamy
mutes: Stíšil/a si
@@ -1064,8 +1014,6 @@ sk:
profile: Profil
relationships: Sledovania a následovatelia
two_factor_authentication: Dvojfázové overenie
- spam_check:
- spam_detected: Toto je automatizované hlásenie. Bol odhalený spam.
statuses:
attached:
description: 'Priložené: %{attached}'
@@ -1074,11 +1022,6 @@ sk:
many: "%{count} obrázkov"
one: "%{count} obrázok"
other: "%{count} obrázky"
- video:
- few: "%{count} videí"
- many: "%{count} videí"
- one: "%{count} video"
- other: "%{count} videá"
boosted_from_html: Vyzdvihnuté od %{acct_link}
content_warning: 'Varovanie o obsahu: %{warning}'
disallowed_hashtags:
@@ -1214,7 +1157,6 @@ sk:
title: Vitaj na palube, %{name}!
users:
follow_limit_reached: Nemôžeš následovať viac ako %{limit} ľudí
- invalid_email: Emailová adresa je neplatná
invalid_otp_token: Neplatný kód pre dvojfaktorovú autentikáciu
otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné.
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 91466c9c2..8d9e6d8e5 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -7,7 +7,6 @@ sl:
active_count_after: dejaven
active_footnote: Aktivni mesečni uporabniki (AMU)
administered_by: 'Upravlja:'
- api: API
apps: Mobilne aplikacije
apps_platforms: Uporabljajte Mastodon iz iOS, Android ali iz drugih platform
browse_directory: Brskajte po imeniku profilov in filtriranje po interesih
@@ -71,11 +70,9 @@ sl:
two: Tuta
posts_tab_heading: Tuti
posts_with_replies: Tuti in odgovori
- reserved_username: Uporabniško ime je zasedeno
roles:
admin: Skrbnik
bot: Robot
- moderator: Mod
unavailable: Profil ni na voljo
unfollow: Prenehaj slediti
admin:
@@ -120,7 +117,6 @@ sl:
header: Glava
inbox_url: URL mape "Prejeto"
invited_by: Povabljen od
- ip: IP
joined: Pridružil
location:
all: Vse
@@ -164,7 +160,6 @@ sl:
role: Dovoljenja
roles:
admin: Skrbnik
- moderator: Moderator
staff: Osebje
user: Uporabnik
search: Iskanje
@@ -188,37 +183,6 @@ sl:
web: Splet
whitelisted: Na belem seznamu
action_logs:
- actions:
- assigned_to_self_report: "%{name} je prijavil %{target} sebi"
- change_email_user: "%{name} je spremenil naslov e-pošte uporabnika %{target}"
- confirm_user: "%{name} je potrdil naslov e-pošte uporabnika %{target}"
- create_account_warning: "%{name} je poslal opozorilo %{target}"
- create_custom_emoji: "%{name} je posodobil emotikone %{target}"
- create_domain_block: "%{name} je blokiral domeno %{target}"
- create_email_domain_block: "%{name} je dal na črni seznam e-pošto domene %{target}"
- demote_user: "%{name} je degradiral uporabnika %{target}"
- destroy_custom_emoji: "%{name} je uničil emotikone %{target}"
- destroy_domain_block: "%{name} je odblokiral domeno %{target}"
- destroy_email_domain_block: "%{name} je dal na beli seznam e-pošto domene %{target}"
- destroy_status: "%{name} je odstranil stanje od %{target}"
- disable_2fa_user: "%{name} je onemogočil dvofaktorsko zahtevo za uporabnika %{target}"
- disable_custom_emoji: "%{name} je onemogočil emotikone %{target}"
- disable_user: "%{name} je onemogočil prijavo za uporabnika %{target}"
- enable_custom_emoji: "%{name} je omogočil emotikone %{target}"
- enable_user: "%{name} je omogočil prijavo za uporabnika %{target}"
- memorialize_account: "%{name} je spremenil račun od %{target} v stran spominov"
- promote_user: "%{name} je promoviral uporabnika %{target}"
- remove_avatar_user: "%{name} je odstranil podobo od %{target}"
- reopen_report: "%{name} je ponovno odprl prijavo %{target}"
- reset_password_user: "%{name} je ponastavil geslo od uporabnika %{target}"
- resolve_report: "%{name} je razrešil prijavo %{target}"
- silence_account: "%{name} je utišal račun od %{target}"
- suspend_account: "%{name} je suspendiral račun od %{target}"
- unassigned_report: "%{name} je nedodeljeno prijavil %{target}"
- unsilence_account: "%{name} je preklical utišanje računa od %{target}"
- unsuspend_account: "%{name} je aktiviral račun od %{target}"
- update_custom_emoji: "%{name} je posodobil emotikone %{target}"
- update_status: "%{name} je posodobil stanje od %{target}"
deleted_status: "(izbrisano stanje)"
title: Dnevnik revizije
custom_emojis:
@@ -254,7 +218,6 @@ sl:
feature_profile_directory: Imenik profilov
feature_registrations: Registracije
feature_relay: Rele federacije
- feature_spam_check: Anti-spam
feature_timeline_preview: Predogled časovnice
features: Zmožnosti
hidden_service: Federacija s skritimi storitvami
@@ -345,7 +308,6 @@ sl:
all: Vse
available: Razpoložljivo
expired: Potekel
- title: Filter
title: Povabila
pending_accounts:
title: "(%{count}) računov na čakanju"
@@ -457,9 +419,6 @@ sl:
desc_html: Lahko napišete svojo pravilnik o zasebnosti, pogoje storitve ali druge pravne dokumente. Lahko uporabite oznake HTML
title: Pogoji storitve po meri
site_title: Ime strežnika
- spam_check_enabled:
- desc_html: Mastodon lahko samodejno utiša in samodejno prijavi račune, ki temeljijo na ukrepih, kot je odkrivanje računov, ki pošiljajo ponavljajoča se neželena sporočila. Lahko pride do zmot.
- title: Anti-spam
thumbnail:
desc_html: Uporablja se za predogled prek OpenGrapha in API-ja. Priporočamo 1200x630px
title: Sličica strežnika
@@ -504,7 +463,6 @@ sl:
sensitive_content: Občutljiva vsebina
application_mailer:
notification_preferences: Spremenite e-poštne nastavitve
- salutation: "%{name},"
settings: 'Spremenite e-poštne nastavitve: %{link}'
view: 'Pogled:'
view_profile: Ogled profila
@@ -532,9 +490,6 @@ sl:
migrate_account: Premakni se na drug račun
migrate_account_html: Če želite ta račun preusmeriti na drugega, ga lahko nastavite tukaj.
or_log_in_with: Ali se prijavite z
- providers:
- cas: CAS
- saml: SAML
register: Vpis
registration_closed: "%{instance} ne sprejema novih članov"
resend_confirmation: Ponovno pošlji navodila za potrditev
@@ -563,18 +518,8 @@ sl:
title: Sledi %{acct}
datetime:
distance_in_words:
- about_x_hours: "%{count}h"
- about_x_months: "%{count}mo"
- about_x_years: "%{count}y"
- almost_x_years: "%{count}y"
half_a_minute: Pravkar
- less_than_x_minutes: "%{count}m"
less_than_x_seconds: Pravkar
- over_x_years: "%{count}y"
- x_days: "%{count}d"
- x_minutes: "%{count}m"
- x_months: "%{count}mo"
- x_seconds: "%{count}s"
deletes:
confirm_password: Vnesite svoje trenutno geslo, da potrdite svojo identiteto
proceed: Izbriši račun
@@ -610,7 +555,6 @@ sl:
request: Zahtevajte svoj arhiv
size: Velikost
blocks: Blokirate
- csv: CSV
domain_blocks: Bloki domene
lists: Seznami
mutes: Utišate
@@ -758,22 +702,11 @@ sl:
body: "%{name} je spodbudil/a vaše stanje:"
subject: "%{name} je spodbudil/a vaše stanje"
title: Nova spodbuda
- number:
- human:
- decimal_units:
- format: "%n%u"
- units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
pagination:
newer: Novejše
next: Naprej
older: Starejše
prev: Nazaj
- truncate: "…"
polls:
errors:
already_voted: Na tej anketi ste že glasovali
@@ -826,40 +759,16 @@ sl:
activity: Zadnja dejavnost
browser: Brskalnik
browsers:
- alipay: Alipay
blackberry: BlackBerry
- chrome: Chrome
- edge: Microsoft Edge
- electron: Electron
- firefox: Firefox
generic: Neznan brskalnik
- ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
- opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
- safari: Safari
uc_browser: UC Browser
- weibo: Weibo
current_session: Trenutna seja
description: "%{browser} na %{platform}"
explanation: To so spletni brskalniki, ki so trenutno prijavljeni v vaš Mastodon račun.
- ip: IP
platforms:
- adobe_air: Adobe Air
- android: Android
blackberry: BlackBerry
- chrome_os: ChromeOS
- firefox_os: Firefox OS
- ios: iOS
- linux: Linux
mac: Mac
other: neznana platforma
- windows: Windows
- windows_mobile: Windows Mobile
- windows_phone: Windows Phone
revoke: Prekliči
revoke_success: Seja je bila uspešno preklicana
title: Seje
@@ -920,7 +829,6 @@ sl:
vote: Glasuj
show_more: Pokaži več
sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru
- title: '%{name}: "%{quote}"'
visibilities:
private: Samo sledilci
private_long: Prikaži samo sledilcem
@@ -1019,10 +927,6 @@ sl:
contrast: Mastodon (Visok kontrast)
default: Mastodon (Temna)
mastodon-light: Mastodon (Svetla)
- time:
- formats:
- default: "%b %d, %Y, %H:%M"
- month: "%b %Y"
two_factor_authentication:
disable: Onemogoči
enabled: Dvofaktorsko preverjanje pristnosti je omogočeno
@@ -1072,7 +976,6 @@ sl:
title: Dobrodošli, %{name}!
users:
follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi
- invalid_email: E-poštni naslov je napačen
invalid_otp_token: Neveljavna dvofaktorska koda
otp_lost_help_html: Če ste izgubili dostop do obeh, stopite v stik z %{email}
seamless_external_login: Prijavljeni ste prek zunanje storitve, tako da nastavitve gesla in e-pošte niso na voljo.
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index e841ab690..76e3a1d30 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -1,11 +1,11 @@
---
sq:
about:
- about_hashtag_html: Këto janë mesazhe publike të etiketuar me #%{hashtag}. Mundeni të ndërveproni me ta, nëse keni një llogari kudo qoftë në fedivers.
+ about_hashtag_html: Këto janë mesazhe publike të etiketuara me #%{hashtag}. Mundeni të ndërveproni me ta, nëse keni një llogari kudo qoftë në fedivers.
about_mastodon_html: 'Rrjeti shoqëror i së ardhmes: Pa reklama, pa survejim nga korporata, konceptim etik dhe decentralizim! Jini zot i të dhënave tuaja, me Mastodon-in!'
about_this: Mbi
active_count_after: aktive
- active_footnote: Përdorues Aktivë Mujor (PAM)
+ active_footnote: Përdorues Aktivë Mujorë (PAM)
administered_by: 'Administruar nga:'
api: API
apps: Aplikacione për celular
@@ -26,12 +26,14 @@ sq:
Përdoret për qëllime federimi dhe s’duhet bllokuar, veç në daçi të bllokoni krejt instancën, me ç’rast do të duhej të përdornit bllokim përkatësie.
learn_more: Mësoni më tepër
privacy_policy: Rregulla privatësie
+ rules: Rregulla shërbyesi
+ rules_html: 'Më poshtë keni një përmbledhje të rregullave që duhet të ndiqni, nëse doni të keni një llogari në këtë shërbyes Mastodon:'
see_whats_happening: Shihni ç'ndodh
server_stats: 'Statistika shërbyesi:'
source_code: Kod burim
status_count_after:
- one: gjendje
- other: gjendje
+ one: mesazh
+ other: mesazhe
status_count_before: Që kanë krijuar
tagline: Ndiqni shokë dhe zbuloni të rinj
terms: Kushte shërbimi
@@ -41,7 +43,7 @@ sq:
reason: Arsye
rejecting_media: 'Kartelat media prej këtyre shërbyesve s’do të përpunohen apo depozitohen, dhe s’do të shfaqet ndonjë miniaturë, duke kërkuar kështu doemos klikim dorazi te kartela origjinale:'
rejecting_media_title: Media e filtruar
- silenced: 'Postimet prej këtyre shërbyesve do të fshihen në rrjedha kohore dhe biseda publike, dhe prej ndërveprimeve të përdoruesve të tyre s’do të prodhohen njoftime, veç në i ndjekshi:'
+ silenced: 'Postimet prej këtyre shërbyesve do të jenë të fshehura në rrjedha kohore dhe biseda publike, dhe prej ndërveprimeve të përdoruesve të tyre s’do të prodhohen njoftime, veç në i ndjekshi:'
silenced_title: Shërbyes të heshtuar
suspended: 'S’do të përpunohen, depozitohen apo shkëmbehen të dhëna prej këtyre shërbyesve, duke e bërë të pamundur çfarëdo ndërveprimi apo komunikimi me përdorues prej këtyre shërbyesve:'
suspended_title: Shërbyes të pezulluar
@@ -78,7 +80,6 @@ sq:
other: Mesazhe
posts_tab_heading: Mesazhe
posts_with_replies: Mesazhe dhe përgjigje
- reserved_username: Emri i përdoruesit është i ruajtur për dikë
roles:
admin: Përgjegjës
bot: Robot
@@ -96,7 +97,7 @@ sq:
delete: Fshije
destroyed_msg: Shënimi i moderimit u asgjësua me sukses!
accounts:
- add_email_domain_block: Vëre përkatësinë email në listë bllokimesh
+ add_email_domain_block: Blloko përkatësi email
approve: Miratojeni
approve_all: Miratojini krejt
approved_msg: U miratua me sukses aplikimi për regjistrim të %{username}
@@ -125,7 +126,7 @@ sq:
edit: Përpunojeni
email: Email
email_status: Gjendje email-i
- enable: Aktivizoje
+ enable: Shkrije
enabled: E aktivizuar
enabled_msg: U hoq me sukses ngrirja për llogarinë e %{username}
followers: Ndjekës
@@ -173,7 +174,7 @@ sq:
remove_avatar: Hiqe avatarin
remove_header: Hiqe kryen
removed_avatar_msg: U hoq me sukses figura e avatarit të %{username}
- removed_header_msg: U hoq me sukses figura e kreut për %{username}
+ removed_header_msg: U hoq me sukses figura e kryes për %{username}
resend_confirmation:
already_confirmed: Ky përdorues është i ripohuar tashmë
send: Ridërgo email ripohimi
@@ -223,7 +224,7 @@ sq:
change_email_user: Ndrysho Email për Përdoruesin
confirm_user: Ripohoje Përdoruesin
create_account_warning: Krijo Sinjalizim
- create_announcement: Krijo Lajmërim
+ create_announcement: Krijoni Lajmërim
create_custom_emoji: Krijo Emotikon Vetjak
create_domain_allow: Krijo Lejim Përkatësie
create_domain_block: Krijo Bllokim Përkatësie
@@ -256,50 +257,52 @@ sq:
unsilence_account: Hiqe Heshtimin e Llogarisë
unsuspend_account: Hiqe Pezullimin e Llogarisë
update_announcement: Përditëso Lajmërimin
- update_custom_emoji: Përditëso Emotikon Vetjak
+ update_custom_emoji: Përditëso Emoxhi Vetjake
update_domain_block: Përditëso Bllok Përkatësish
update_status: Përditëso Gjendjen
actions:
- assigned_to_self_report: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes"
- change_email_user: "%{name} ndryshoi adresën email të përdoruesit %{target}"
- confirm_user: "%{name} ripohoi adresën email të përdoruesit %{target}"
- create_account_warning: "%{name} dërgoi një sinjalizim për %{target}"
- create_announcement: "%{name} krijoi lajmërim të ri për %{target}"
- create_custom_emoji: "%{name} ngarkoi emotikon të ri %{target}"
- create_domain_allow: "%{name} kaloi në listë lejimesh përkatësinë %{target}"
- create_domain_block: "%{name} bllokoi përkatësinë %{target}"
- create_email_domain_block: "%{name} shtoi në listë bllokimesh përkatësinë %{target}"
- create_ip_block: "%{name} krijoi rregull për IP-në %{target}"
- demote_user: "%{name} zhgradoi përdoruesin %{target}"
- destroy_announcement: "%{name} fshiu lajmërimin për %{target}"
- destroy_custom_emoji: "%{name} asgjësoi emotikonin %{target}"
- destroy_domain_allow: "%{name} hoqi përkatësinë %{target} nga listë lejimesh"
- destroy_domain_block: "%{name} zhbllokoi përkatësinë %{target}"
- destroy_email_domain_block: "%{name} e shtoi në listë lejimesh përkatësinë %{target}"
- destroy_ip_block: "%{name} fshiu rregull për IP-në %{target}"
- destroy_status: "%{name} hoqi gjendje nga %{target}"
- disable_2fa_user: "%{name} çaktivizoi domosdoshmëritë për dyfaktorësh për përdoruesin %{target}"
- disable_custom_emoji: "%{name} çaktivizoi emotikonin %{target}"
- disable_user: "%{name} çaktivizoi hyrje për përdoruesin %{target}"
- enable_custom_emoji: "%{name} aktivizoi emotikonin %{target}"
- enable_user: "%{name} aktivizoi hyrje për përdoruesin %{target}"
- memorialize_account: "%{name} e shndërroi llogarinë e %{target} në një faqe përkujtimore"
- promote_user: "%{name} gradoi përdoruesin %{target}"
- remove_avatar_user: "%{name} hoqi avatarin e %{target}"
- reopen_report: "%{name} rihapi raportimin %{target}"
- reset_password_user: "%{name} ricaktoi fjalëkalimi për përdoruesin %{target}"
- resolve_report: "%{name} zgjidhi raportimin %{target}"
- sensitive_account: "%{name} i vuri shenjë si rezervat medias në %{target}"
- silence_account: "%{name} heshtoi llogarinë e %{target}"
- suspend_account: "%{name} pezulloi llogarinë e %{target}"
- unassigned_report: "%{name} rihapi raportimin %{target}"
- unsensitive_account: "%{name} ia hoqi shenjën si rezervat medias në %{target}"
- unsilence_account: "%{name} hoqi heshtimin për llogarinë %{target}"
- unsuspend_account: "%{name} hoqi pezullimin për llogarinë e %{target}"
- update_announcement: "%{name} përditësoi lajmërimin %{target}"
- update_custom_emoji: "%{name} përditësoi emotikonin %{target}"
- update_domain_block: "%{name} përditësoi bllok përkatësish për %{target}"
- update_status: "%{name} përditësoi gjendjen me %{target}"
+ assigned_to_self_report_html: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes"
+ change_email_user_html: "%{name} ndryshoi adresën email të përdoruesit %{target}"
+ confirm_user_html: "%{name} ripohoi adresën email të përdoruesit %{target}"
+ create_account_warning_html: "%{name} dërgoi një sinjalizim për %{target}"
+ create_announcement_html: "%{name} krijoi lajmërim të ri për %{target}"
+ create_custom_emoji_html: "%{name} ngarkoi emoxhi të ri %{target}"
+ create_domain_allow_html: "%{name} lejoi federim me përkatësinë %{target}"
+ create_domain_block_html: "%{name} bllokoi përkatësinë %{target}"
+ create_email_domain_block_html: "%{name} bllokoi përkatësinë email %{target}"
+ create_ip_block_html: "%{name} krijoi rregull për IP-në %{target}"
+ create_unavailable_domain_html: "%{name} ndali dërgimin drejt përkatësisë %{target}"
+ demote_user_html: "%{name} zhgradoi përdoruesin %{target}"
+ destroy_announcement_html: "%{name} fshiu lajmërimin për %{target}"
+ destroy_custom_emoji_html: "%{name} asgjësoi emoxhin %{target}"
+ destroy_domain_allow_html: "%{name} hoqi lejimin për federim me %{target}"
+ destroy_domain_block_html: "%{name} zhbllokoi përkatësinë %{target}"
+ destroy_email_domain_block_html: "%{name} hoqi bllokimin për përkatësinë email %{target}"
+ destroy_ip_block_html: "%{name} fshiu rregull për IP-në %{target}"
+ destroy_status_html: "%{name} hoqi gjendje nga %{target}"
+ destroy_unavailable_domain_html: "%{name} rinisi dërgimin drejt përkatësisë %{target}"
+ disable_2fa_user_html: "%{name} çaktivizoi domosdoshmërinë për dyfaktorësh për përdoruesin %{target}"
+ disable_custom_emoji_html: "%{name} çaktivizoi emoxhin %{target}"
+ disable_user_html: "%{name} çaktivizoi hyrje për përdoruesin %{target}"
+ enable_custom_emoji_html: "%{name} aktivizoi emoxhin %{target}"
+ enable_user_html: "%{name} aktivizoi hyrje për përdoruesin %{target}"
+ memorialize_account_html: "%{name} e shndërroi llogarinë e %{target} në një faqe përkujtimore"
+ promote_user_html: "%{name} gradoi përdoruesin %{target}"
+ remove_avatar_user_html: "%{name} hoqi avatarin e %{target}"
+ reopen_report_html: "%{name} rihapi raportimin %{target}"
+ reset_password_user_html: "%{name} ricaktoi fjalëkalimi për përdoruesin %{target}"
+ resolve_report_html: "%{name} zgjidhi raportimin %{target}"
+ sensitive_account_html: "%{name} i vuri shenjë si rezervat medias në %{target}"
+ silence_account_html: "%{name} heshtoi llogarinë e %{target}"
+ suspend_account_html: "%{name} pezulloi llogarinë e %{target}"
+ unassigned_report_html: "%{name} rihapi raportimin %{target}"
+ unsensitive_account_html: "%{name} ia hoqi shenjën si rezervat medias në %{target}"
+ unsilence_account_html: "%{name} hoqi heshtimin për llogarinë %{target}"
+ unsuspend_account_html: "%{name} hoqi pezullimin për llogarinë e %{target}"
+ update_announcement_html: "%{name} përditësoi lajmërimin %{target}"
+ update_custom_emoji_html: "%{name} përditësoi emoxhin %{target}"
+ update_domain_block_html: "%{name} përditësoi bllokimin e përkatësish për %{target}"
+ update_status_html: "%{name} përditësoi gjendjen me %{target}"
deleted_status: "(fshiu gjendjen)"
empty: S’u gjetën regjistra.
filter_by_action: Filtroji sipas veprimit
@@ -314,44 +317,46 @@ sq:
new:
create: Krijoni lajmërim
title: Lajmërim i ri
+ publish: Publikoje
published_msg: Lajmërimi u botua me sukses!
scheduled_for: Vënë në plan për më %{time}
scheduled_msg: Lajmërimi u vu në plan për botim!
title: Lajmërime
+ unpublish: Hiqi publikimin
unpublished_msg: Lajmërimi u botua me sukses!
updated_msg: Lajmërimi u përditësua me sukses!
custom_emojis:
assign_category: Caktojini kategori
by_domain: Përkatësi
- copied_msg: Kopja vendore e emotikonëve u krijua me sukses
+ copied_msg: Kopja vendore e emoji-ve u krijua me sukses
copy: Kopjoje
- copy_failed_msg: S’u bë dot një kopje vendore e emotikonëve
+ copy_failed_msg: S’u bë dot një kopje vendore e emoji-ve
create_new_category: Krijo kategori të re
- created_msg: Emotikoni u krijua me sukses!
+ created_msg: Emoji u krijua me sukses!
delete: Fshije
- destroyed_msg: Emotikoni u asgjësua me sukses!
+ destroyed_msg: Emojo u asgjësuan me sukses!
disable: Çaktivizoje
disabled: I çaktivizuar
- disabled_msg: Ai emotikon u çaktivizua me sukses
+ disabled_msg: Ai emoxhi u çaktivizua me sukses
emoji: Emotikon
enable: Aktivizoje
enabled: I aktivizuar
- enabled_msg: Ai emotikon u aktivizua me sukses
+ enabled_msg: Ai emoxhi u aktivizua me sukses
image_hint: PNG deri 50KB
list: Vëre në listë
listed: Në listë
new:
- title: Shtoni emotikon të ri vetjak
+ title: Shtoni emoxhi të ri vetjak
not_permitted: S’keni leje të kryeni këtë veprim
overwrite: Mbishkruaje
shortcode: Kod i shkurtër
shortcode_hint: Të paktën 2 shenja, vetëm shenja alfanumerike dhe nënvija
- title: Emotikone vetjake
+ title: Emoxhi vetjake
uncategorized: I pakategorizuar
unlist: Hiqe nga lista
unlisted: Hequr prej liste
- update_failed_msg: S’u përditësua dot ai emotikon
- updated_msg: Emotikoni u përditësua me sukses!
+ update_failed_msg: S’u përditësua dot ai emoxhi
+ updated_msg: Emoji u përditësua me sukses!
upload: Ngarkoje
dashboard:
authorized_fetch_mode: Mënyrë e sigurt
@@ -362,7 +367,6 @@ sq:
feature_profile_directory: Drejtori profilesh
feature_registrations: Regjistrime
feature_relay: Rele federimi
- feature_spam_check: Anti-spam
feature_timeline_preview: Paraparje rrjedhjeje kohore
features: Veçori
hidden_service: Federim me shërbime të fshehura
@@ -440,9 +444,32 @@ sq:
create: Shtoni përkatësi
title: Zë i ri email në listë bllokimesh
title: Listë bllokimesh email-esh
+ follow_recommendations:
+ description_html: "Rekomandimet për ndjekje ndihmojnë përdoruesit e rinj të gjejnë shpejt lëndë me interes. Kur një përdorues nuk ka ndërvepruar mjaftueshëm me të tjerët, që të formohen rekomandime të personalizuara ndjekjeje, rekomandohen këto llogari. Ato përzgjidhen çdo ditë, prej një përzierje llogarish me shkallën më të lartë të angazhimit dhe numrin më të lartë të ndjekësve vendorë për një gjuhë të dhënë."
+ language: Për gjuhën
+ status: Gjendje
+ suppress: Mos shfaq rekomandime ndjekjeje
+ suppressed: Të heshtuara
+ title: Rekomandime ndjekjeje
+ unsuppress: Rikthe rekomandime ndjekjeje
instances:
+ back_to_all: Krejt
+ back_to_limited: E kufizuar
+ back_to_warning: Kujdes
by_domain: Përkatësi
+ delivery:
+ all: Krejt
+ clear: Spastro gabime dërgimi
+ restart: Rinis dërgimin
+ stop: Ndale dërgimin
+ title: Dërgim
+ warning: Kujdes
+ warning_message:
+ one: Dështim dërgimi %{count} ditë
+ other: Dështim dërgimi %{count} ditë
delivery_available: Ka shpërndarje të mundshme
+ delivery_error_days: Ditë gabimi dështimi
+ delivery_error_hint: Nëse dërgimi s’është i mundshëm për %{count} ditë, do t’i vihet shenjë automatikisht si i padërgueshëm.
empty: S’u gjetën përkatësi.
known_accounts:
one: "%{count} llogari e njohur"
@@ -542,13 +569,20 @@ sq:
unassign: Hiqja
unresolved: Të pazgjidhur
updated_at: U përditësua më
+ rules:
+ add_new: Shtoni rregull
+ delete: Fshije
+ description_html: Edhe pse shumica pretendon se kanë lexuar dhe pajtohen me kushtet e shërbimit, zakonisht njerëzit nuk e lexojnë nga fillimi në fund, deri kur del një problem. Bëjeni më të lehtë parjen e rregullave të shërbyesit tuaj me një vështim, duke i dhënë në një listë të thjeshtë me pika. Përpiquni që rregullat të jenë secili të shkurtër dhe të thjeshtë, por as mos u përpiqni t’i ndani në shumë zëra të veçantë.
+ edit: Përpunoni rregull
+ empty: S’janë përcaktuar ende rregulla shërbyesi.
+ title: Rregulla shërbyesi
settings:
activity_api_enabled:
- desc_html: Numër gjendjesh të postuara lokalisht, përdorues aktivë, dhe regjistrime të reja në kosha javorë
- title: Botoni statistika përmbledhëse mbi veprimtarinë e përdoruesve
+ desc_html: Numër postimesh të postuara lokalisht, përdorues aktivë, dhe regjistrime të reja në kosha javorë
+ title: Botoni statistika përmbledhëse mbi veprimtarinë e përdoruesve te API
bootstrap_timeline_accounts:
- desc_html: Emrat e përdoruesve ndajini prej njëri-tjetrit me presje. Do të funksionojë vetëm për llogari vendore dhe të pakyçura. Si parazgjedhje, kur lihet e zbrazët, është krejt përgjegjësit vendorë.
- title: Ndjekje parazgjedhje për përdorues të rinj
+ desc_html: Emrat e përdoruesve ndajini prej njëri-tjetrit me presje. Për këto llogari do të garantohet shfaqja te rekomandime ndjekjeje
+ title: Rekomandoji këto llogari për përdorues të rinj
contact_information:
email: Email biznesi
username: Emër përdoruesi kontakti
@@ -565,9 +599,6 @@ sq:
users: Për përdorues vendorë që kanë bërë hyrjen
domain_blocks_rationale:
title: Shfaq arsye
- enable_bootstrap_timeline_accounts:
- desc_html: Bëj që përdoruesit e rinj automatikisht të ndjekin llogaritë e formësuara, që prurja e tyre bazë të mos nisë e zbrazët
- title: Aktivizo ndjekje parazgjedhje për përdorues të rinj
hero:
desc_html: E shfaqur në faqen ballore. Këshillohet të paktën 600x100px. Kur nuk caktohet gjë, përdoret miniaturë e shërbyesit
title: Figurë heroi
@@ -603,7 +634,7 @@ sq:
open: Mund të regjistrohet gjithkush
title: Mënyrë regjistrimi
show_known_fediverse_at_about_page:
- desc_html: Kur përdoret, do të shfaqë mesazhe prej krejt fediversit të njohur, si paraparje. Përndryshe do të shfaqë vetëm mesazhe vendore.
+ desc_html: Kur përdoret, do të shfaqë mesazhe prej krejt fediversit të njohur, si paraparje. Përndryshe do të shfaqë vetëm mesazhe vendore
title: Përfshi lëndë të federuar në faqe rrjedhe publike kohore të pamirëfilltësuar
show_staff_badge:
desc_html: Shfaq një stemë stafi në faqen e një përdoruesi
@@ -621,9 +652,6 @@ sq:
desc_html: Mund të shkruani rregullat tuaja të privatësisë, kushtet e shërbimit ose gjëra të tjera ligjore. Mund të përdorni etiketa HTML
title: Kushte vetjake shërbimi
site_title: Emër shërbyesi
- spam_check_enabled:
- desc_html: Mastodon-i mund të bëjë raportime automatike për llogari që dërgojnë në mënyrë të përsëritur mesazhe të padëshiruar. Në to mund të ketë edhe alarme të rremë.
- title: Automatizim anti-spami
thumbnail:
desc_html: I përdorur për paraparje përmes OpenGraph-it dhe API-t. Këshillohet 1200x630px
title: Miniaturë shërbyesi
@@ -654,18 +682,23 @@ sq:
no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë
title: Gjendje llogarish
with_media: Me media
+ system_checks:
+ database_schema_check:
+ message_html: Ka migrime bazash të dhënash pezull. Ju lutemi, kryejini, për të qenë të sigurt se aplikacioni sillet siç priteet
+ rules_check:
+ action: Administroni rregulla shërbyesi
+ message_html: S’keni përcaktuar ndonjë rregull shërbyesi.
+ sidekiq_process_check:
+ message_html: S’ka proces Sidekiq në punë për %{value} radhë. Ju lutemi, shqyrtoni formësimin tuaj për Sidekiq-un
tags:
accounts_today: Përdorime unike sot
accounts_week: Përdorime unike këtë javë
breakdown: Përdorimi sot, analizuar sipas burimesh
- context: Kontekst
- directory: Në drejtori
- in_directory: "%{count} në drejtori"
last_active: Aktive së fundi më
most_popular: Më populloret
most_recent: Më të rejat
name: Hashtag
- review: Gjendja e rishikimit
+ review: Gjendje rishikimi
reviewed: E shqyrtuar
title: Hashtag-ë
trending_right_now: Popullore mu tani
@@ -677,6 +710,7 @@ sq:
add_new: Shtoni të ri
delete: Fshije
edit_preset: Përpunoni sinjalizim të paracaktuar
+ empty: S’keni përcaktuar ende sinjalizime të gatshme.
title: Administroni sinjalizime të paracaktuara
admin_mailer:
new_pending_account:
@@ -790,7 +824,7 @@ sq:
invalid_signature: s’është nënshkrim Ed25519 i vlefshëm
date:
formats:
- default: "%b %d, %Y"
+ default: "%d %b, %Y"
with_month_name: "%d %B, %Y"
datetime:
distance_in_words:
@@ -861,7 +895,7 @@ sq:
domain_blocks: Bllokime përkatësish
lists: Lista
mutes: Heshtoni
- storage: Depozitim për media
+ storage: Depozitë media
featured_tags:
add_new: Shtoni të re
errors:
@@ -1038,10 +1072,14 @@ sq:
body: 'U përmendët nga %{name} në:'
subject: U përmendët nga %{name}
title: Përmendje e re
+ poll:
+ subject: Përfundoi një pyetësor nga %{name}
reblog:
body: 'Gjendja juaj u përforcua nga %{name}:'
subject: "%{name} përforcoi gjendjen tuaj"
title: Përforcim i ri
+ status:
+ subject: "%{name} sapo postoi"
notifications:
email_events: Akte për njoftim me email
email_events_hint: 'Përzgjidhni akte për të cilët doni të merrni njoftime:'
@@ -1150,7 +1188,7 @@ sq:
weibo: Weibo
current_session: Sesioni i tanishëm
description: "%{browser} në %{platform}"
- explanation: Këta janë shfletuesit e futur në këtë çast te llogaria juaj Mastodon.
+ explanation: Këta janë shfletuesit e përdorur tani për hyrje te llogaria juaj Mastodon.
ip: IP
platforms:
adobe_air: Adobe Air
@@ -1190,8 +1228,6 @@ sq:
relationships: Ndjekje dhe ndjekës
two_factor_authentication: Mirëfilltësim Dyfaktorësh
webauthn_authentication: Kyçe sigurie
- spam_check:
- spam_detected: Ky është një raportim i automatizuar. Është pikasur mesazh i padëshiruar.
statuses:
attached:
audio:
@@ -1234,6 +1270,7 @@ sq:
sign_in_to_participate: Bëni hyrjen, që të merrni pjesë te biseda
title: '%{name}: "%{quote}"'
visibilities:
+ direct: I drejtpërdrejtë
private: Vetëm ndjekësve
private_long: Shfaqua vetëm ndjekësve
public: Publike
@@ -1385,7 +1422,7 @@ sq:
silence: Llogari e kufizuar
suspend: Llogari e pezulluar
welcome:
- edit_profile_action: Rregullim profili
+ edit_profile_action: Ujdisje profili
edit_profile_step: Profilin mund ta personalizoni duke ngarkuar një avatar, figurë kryesh, duke ndryshuar emrin tuaj në ekran, etj. Nëse dëshironi të shqyrtoni ndjekës të rinj, përpara se të jenë lejuar t’ju ndjekin, mund të kyçni llogarinë tuaj.
explanation: Ja disa ndihmëza, sa për t’ia filluar
final_action: Filloni të postoni
@@ -1402,14 +1439,11 @@ sq:
tips: Ndihmëza
title: Mirë se vini, %{name}!
users:
- blocked_email_provider: Ky furnizues shërbimi email nuk lejohet
follow_limit_reached: S’mund të ndiqni më tepër se %{limit} persona
generic_access_help_html: Problem me hyrjen në llogarinë tuaj? Për asistencë mund të lidheni me %{email}
- invalid_email: Adresa email është e pavlefshme
- invalid_email_mx: Adresa email s’duket se ekziston
invalid_otp_token: Kod dyfaktorësh i pavlefshëm
invalid_sign_in_token: Kod sigurie i pavlefshëm
- otp_lost_help_html: Nëse humbi hyrjen te të dy, mund të lidheni me %{email}
+ otp_lost_help_html: Nëse humbët hyrjen te të dy, mund të lidheni me %{email}
seamless_external_login: Jeni futur përmes një shërbimi të jashtëm, ndaj s’ka rregullime fjalëkalimi dhe email.
signed_in_as: 'I futur si:'
suspicious_sign_in_confirmation: Duket se s’keni hyrë më parë nga kjo pajisje, dhe se keni kohë pa bërë hyrje, ndaj po ju dërgojmë një kod sigurie te adresa juaj email, që të ripohoni se jeni ju.
@@ -1417,7 +1451,7 @@ sq:
explanation_html: 'Mundeni të verifikoni veten si i zoti i lidhjeve te tejtëdhënat e profilit tuaj. Për këtë, sajti i lidhur duhet të përmbajë një lidhje për te profili juaj Mastodon. Lidhje për te ajo duhet të ketë një atribut rel="me". Lënda tekst e lidhjes nuk ngre peshë. Ja një shembull:'
verification: Verifikim
webauthn_credentials:
- add: Shton kyç të ri sigurie
+ add: Shtoni kyç të ri sigurie
create:
error: Pati një problem me shtimin e kyçeve tuaj të sigurisë. Ju lutemi, riprovoni.
success: Kyçi juaj i sigurisë u shtua me sukses.
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index da8eda86f..e762126ad 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -19,7 +19,6 @@ sr-Latn:
people_followed_by: Ljudi koje %{name} prati
people_who_follow: Ljudi koji prate %{name}
posts_with_replies: Tutovi i odgovori
- reserved_username: Korisničko ime je rezervisano
roles:
admin: Administrator
moderator: Moderator
@@ -98,30 +97,6 @@ sr-Latn:
username: Korisničko ime
web: Veb
action_logs:
- actions:
- confirm_user: "%{name} je potvrdio adresu e-pošte korisnika %{target}"
- create_custom_emoji: "%{name} je otpremio novi emotikon %{target}"
- create_domain_block: "%{name} je blokirao domen %{target}"
- create_email_domain_block: "%{name} je stavio na crnu listu domen e-pošte %{target}"
- demote_user: "%{name} je ražalovao korisnika %{target}"
- destroy_domain_block: "%{name} je odblokirao domen %{target}"
- destroy_email_domain_block: "%{name} je stavio na belu listu domen e-pošte %{target}"
- destroy_status: "%{name} je uklonio status korisnika %{target}"
- disable_2fa_user: "%{name} je isključio obaveznu dvofaktorsku identifikaciju za korisnika %{target}"
- disable_custom_emoji: "%{name} je onemogućio emotikon %{target}"
- disable_user: "%{name} je onemogućio prijavljivanje korisniku %{target}"
- enable_custom_emoji: "%{name} je omogućio emotikon %{target}"
- enable_user: "%{name} je omogućio prijavljivanje za korisnika %{target}"
- memorialize_account: "%{name} je pretvorio stranu naloga %{target} kao in memoriam stranu"
- promote_user: "%{name} je unapredio korisnika %{target}"
- reset_password_user: "%{name} je resetovao lozinku korisniku %{target}"
- resolve_report: "%{name} je odbacio prijavu %{target}"
- silence_account: "%{name} je ućutkao nalog %{target}"
- suspend_account: "%{name} je suspendovao nalog %{target}"
- unsilence_account: "%{name} je ukinuo ćutanje nalogu %{target}"
- unsuspend_account: "%{name} je ukinuo suspenziju nalogu %{target}"
- update_custom_emoji: "%{name} je izmenio emotikon %{target}"
- update_status: "%{name} je izmenio status korisnika %{target}"
title: Zapisnik
custom_emojis:
by_domain: Domen
@@ -481,6 +456,5 @@ sr-Latn:
recovery_codes_regenerated: Kodovi za oporavak uspešno regenerisani
recovery_instructions_html: Ako ikada izgubite pristup telefonu, možete iskoristiti kodove za oporavak date ispod da povratite pristup nalogu. Držite kodove za oporavak na sigurnom. Na primer, odštampajte ih i čuvajte ih sa ostalim važnim dokumentima.
users:
- invalid_email: Adresa e-pošte nije ispravna
invalid_otp_token: Neispravni dvofaktorski kod
signed_in_as: 'Prijavljen kao:'
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index e26682891..8f7639cda 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -50,7 +50,6 @@ sr:
other: Трубе
posts_tab_heading: Трубе
posts_with_replies: Трубе и одговори
- reserved_username: Корисничко име је резервисано
roles:
admin: Администратор
bot: Бот
@@ -156,37 +155,6 @@ sr:
warn: Упозори
web: Веб
action_logs:
- actions:
- assigned_to_self_report: "%{name} је доделио/ла извештај %{target} себи"
- change_email_user: "%{name} је променио/ла адресу Е-поште коисника/це %{target}"
- confirm_user: "%{name} је потврдио адресу е-поште корисника %{target}"
- create_account_warning: "%{name} је послао пријаву %{target}"
- create_custom_emoji: "%{name} је отпремио нови емоџи %{target}"
- create_domain_block: "%{name} је блокирао домен %{target}"
- create_email_domain_block: "%{name} је ставио на црну листу домен е-поште %{target}"
- demote_user: "%{name} је ражаловао корисника %{target}"
- destroy_custom_emoji: "%{name} је уништио емоџи %{target}"
- destroy_domain_block: "%{name} је одблокирао домен %{target}"
- destroy_email_domain_block: "%{name} је ставио на белу листу домен е-поште %{target}"
- destroy_status: "%{name} је уклонио статус корисника %{target}"
- disable_2fa_user: "%{name} је искључио обавезну двофакторску идентификацију за корисника %{target}"
- disable_custom_emoji: "%{name} је онемогућио емотикон %{target}"
- disable_user: "%{name} је онемогућио пријављивање кориснику %{target}"
- enable_custom_emoji: "%{name} је омогућио емотикон %{target}"
- enable_user: "%{name} је омогућио пријављивање за корисника %{target}"
- memorialize_account: "%{name} је претворио страну налога %{target} као in memoriam страну"
- promote_user: "%{name} је унапредио корисника %{target}"
- remove_avatar_user: "%{name} је уклонио/ла %{target}'s аватар"
- reopen_report: "%{name} је поново отворио/ла извештај %{target}"
- reset_password_user: "%{name} је ресетовао лозинку кориснику %{target}"
- resolve_report: "%{name} је одбацио пријаву %{target}"
- silence_account: "%{name} је ућуткао налог %{target}"
- suspend_account: "%{name} је суспендовао налог %{target}"
- unassigned_report: "%{name} недодељен извештај %{target}"
- unsilence_account: "%{name} је укинуо ћутање налогу %{target}"
- unsuspend_account: "%{name} је укинуо суспензију налогу %{target}"
- update_custom_emoji: "%{name} је изменио емотикон %{target}"
- update_status: "%{name} је изменио статус корисника %{target}"
deleted_status: "(обрисан статус)"
title: Записник
custom_emojis:
@@ -805,7 +773,6 @@ sr:
title: Добродошли, %{name}!
users:
follow_limit_reached: Не можете пратити више од %{limit} људи
- invalid_email: Адреса Е-поште није исправна
invalid_otp_token: Неисправни двофакторски код
otp_lost_help_html: Ако изгубите приступ за оба, можете ступити у контакт са %{email}
seamless_external_login: Пријављени сте путем спољашње услуге, тако да лозинка и подешавања Е-поште нису доступни.
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 36154b49b..c00d1915c 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -21,14 +21,17 @@ sv:
federation_hint_html: Med ett konto på %{instance} kommer du att kunna följa personer på alla Mastodon-servers och mer än så.
get_apps: Prova en mobilapp
hosted_on: Mastodon-värd på %{domain}
- instance_actor_flash: 'Detta konto är en virtuell agent som används för att representera servern själv och inte någon individuell användare. Det används av sammanslutningsskäl och ska inte blockeras såvitt du inte vill blockera hela instansen, och för detta fall ska domänblockering användas.
-
-'
+ instance_actor_flash: "Detta konto är en virtuell agent som används för att representera servern själv och inte någon individuell användare. Det används av sammanslutningsskäl och ska inte blockeras såvitt du inte vill blockera hela instansen, och för detta fall ska domänblockering användas. \n"
learn_more: Lär dig mer
privacy_policy: Integritetspolicy
+ rules: Serverns regler
+ rules_html: 'Nedan en sammanfattning av kontoreglerna för denna Mastodonserver:'
see_whats_happening: Se vad som händer
server_stats: 'Serverstatistik:'
source_code: Källkod
+ status_count_after:
+ one: status
+ other: statusar
status_count_before: Som skapat
tagline: Följ vänner och upptäck nya
terms: Användarvillkor
@@ -69,9 +72,11 @@ sv:
people_who_follow: Personer som följer %{name}
pin_errors:
following: Du måste vara följare av den person du vill godkänna
- posts_tab_heading: Toots
+ posts:
+ one: Tuta
+ other: Tutor
+ posts_tab_heading: Tutor
posts_with_replies: Toots med svar
- reserved_username: Användarnamnet är reserverat
roles:
admin: Administratör
bot: Robot
@@ -86,7 +91,7 @@ sv:
account_moderation_notes:
create: Lämna kommentar
created_msg: Modereringsnotering skapad utan problem!
- delete: Ta bort
+ delete: Radera
destroyed_msg: Modereringsnotering borttagen utan problem!
accounts:
add_email_domain_block: Blockera e-postdomän
@@ -105,6 +110,7 @@ sv:
confirm: Bekräfta
confirmed: Bekräftad
confirming: Bekräftande
+ delete: Radera data
deleted: Raderad
demote: Degradera
disable: inaktivera
@@ -121,6 +127,7 @@ sv:
follows: Följs
header: Rubrik
inbox_url: Inkorgs URL
+ invite_request_text: Anledningar att gå med
invited_by: Inbjuden av
ip: IP-adress
joined: Gick med
@@ -151,7 +158,7 @@ sv:
protocol: Protokoll
public: Offentlig
push_subscription_expires: PuSH-prenumerationen löper ut
- redownload: Uppdatera avatar
+ redownload: Uppdatera profil
reject: Förkasta
reject_all: Förkasta allt / Avvisa alla
remove_avatar: Ta bort avatar
@@ -172,6 +179,8 @@ sv:
search: Sök
search_same_email_domain: Andra användare med samma e-postdomän
search_same_ip: Annan användare med samma IP-adress
+ sensitive: Känsligt
+ sensitized: markerad som känsligt
shared_inbox_url: Delad inkorg URL
show:
created_reports: Anmälningar som skapats av det här kontot
@@ -201,10 +210,13 @@ sv:
create_custom_emoji: Skapa egen emoji
create_domain_allow: Skapa tillåten domän
create_domain_block: Skapa blockerad domän
+ create_ip_block: Skapa IP-regel
+ demote_user: Degradera användare
destroy_announcement: Ta bort anslag
- destroy_custom_emoji: Ta bort egen emoji
+ destroy_custom_emoji: Radera egen emoji
destroy_domain_allow: Ta bort tillåten domän
destroy_domain_block: Ta bort blockerad domän
+ destroy_ip_block: Radera IP-regel
destroy_status: Ta bort status
disable_2fa_user: Inaktivera 2FA
disable_custom_emoji: Inaktivera egna emojis
@@ -214,8 +226,10 @@ sv:
memorialize_account: Minnesmärk konto
promote_user: Befordra användare
remove_avatar_user: Ta bort avatar
+ reopen_report: Öppna rapporten igen
reset_password_user: Återställ lösenord
resolve_report: Lös rapport
+ sensitive_account: Markera mediet i ditt konto som känsligt
silence_account: Tysta konto
suspend_account: Stäng av konto
unsuspend_account: Återaktivera konto
@@ -223,49 +237,17 @@ sv:
update_custom_emoji: Uppdatera egna emojis
update_domain_block: Uppdatera blockerad domän
update_status: Uppdatera status
- actions:
- assigned_to_self_report: "%{name} tilldelade anmälan %{target} till sig själv"
- change_email_user: "%{name} bytte e-postadress för användare %{target}"
- confirm_user: "%{name} bekräftade e-postadress för användare %{target}"
- create_account_warning: "%{name} sände en varning till %{target}"
- create_announcement: "%{name} skapade nytt meddelande %{target}"
- create_custom_emoji: "%{name} laddade upp ny emoji %{target}"
- create_domain_allow: "%{name} vitlistade domän %{target}"
- create_domain_block: "%{name} blockerade domän %{target}"
- create_email_domain_block: "%{name} svartlistade e-postdomän %{target}"
- demote_user: "%{name} degraderade användare %{target}"
- destroy_announcement: "%{name} raderade meddelanden %{target}"
- destroy_custom_emoji: "%{name} förstörde emoji %{target}"
- destroy_domain_allow: "%{name} raderade domän %{target} från vitlistan"
- destroy_domain_block: "%{name} avblockerade domän %{target}"
- destroy_email_domain_block: "%{name} vitlistade e-postdomän %{target}"
- destroy_status: "%{name} tog bort status av %{target}"
- disable_2fa_user: "%{name} inaktiverade tvåfaktorsautentiseringskrav för användare %{target}"
- disable_custom_emoji: "%{name} inaktiverade emoji %{target}"
- disable_user: "%{name} inaktiverade inloggning för användare %{target}"
- enable_custom_emoji: "%{name} aktiverade emoji %{target}"
- enable_user: "%{name} aktiverade inloggning för användare %{target}"
- memorialize_account: "%{name} omvandlade %{target}s konto till en memoriam-sida"
- promote_user: "%{name} flyttade upp användare %{target}"
- remove_avatar_user: "%{name} tog bort %{target}s avatar"
- reopen_report: "%{name} återupptog anmälan %{target}"
- reset_password_user: "%{name} återställde lösenord för användaren %{target}"
- resolve_report: "%{name} löste anmälan %{target}"
- silence_account: "%{name} tystade ner %{target}s konto"
- suspend_account: "%{name} suspenderade %{target}s konto"
- unassigned_report: "%{name} otilldelade anmälan %{target}"
- unsilence_account: "%{name} återljudade %{target}s konto"
- unsuspend_account: "%{name} aktiverade %{target}s konto"
- update_custom_emoji: "%{name} uppdaterade emoji %{target}"
- update_domain_block: "%{name} uppdaterade blockerad domän för %{target}"
- update_status: "%{name} uppdaterade status för %{target}"
deleted_status: "(raderad status)"
empty: Inga loggar hittades.
+ filter_by_action: Filtrera efter åtgärd
+ filter_by_user: Filtrera efter användare
title: Revisionslogg
announcements:
+ live: Direkt
+ publish: Publicera
scheduled_for: Schemalagd för %{time}
custom_emojis:
- assign_category: Ange kategori
+ assign_category: Tilldela kategori
by_domain: Domän
copied_msg: Skapade en lokal kopia av emoji utan problem
copy: Kopia
@@ -306,7 +288,6 @@ sv:
feature_profile_directory: Profilkatalog
feature_registrations: Registreringar
feature_relay: Förbundsmöte
- feature_spam_check: Anti-skräp
feature_timeline_preview: Förhandsgranskning av tidslinje
features: Funktioner
hidden_service: Sammanslutning med gömda tjänster
@@ -378,8 +359,16 @@ sv:
create: Skapa domän
title: Ny E-postdomänblocklistningsinmatning
title: E-postdomänblock
+ follow_recommendations:
+ status: Status
instances:
+ back_to_all: Alla
+ back_to_warning: Varning
by_domain: Domän
+ delivery:
+ all: Alla
+ unavailable: Ej tillgänglig
+ warning: Varning
empty: Inga domäner hittades.
moderation:
all: Alla
@@ -399,6 +388,19 @@ sv:
expired: Utgångna
title: Filtrera
title: Inbjudningar
+ ip_blocks:
+ add_new: Skapa regel
+ delete: Radera
+ expires_in:
+ '1209600': 2 veckor
+ '15778476': 6 månader
+ '2629746': 1 månad
+ '31556952': 1 år
+ '86400': 1 dag
+ '94670856': 3 år
+ new:
+ title: Skapa ny IP-regel
+ title: IP-regler
pending_accounts:
title: Väntande konton (%{count})
relays:
@@ -414,6 +416,10 @@ sv:
created_msg: Anmälningsanteckning har skapats!
destroyed_msg: Anmälningsanteckning har raderats!
reports:
+ account:
+ reports:
+ one: "%{count} rapport"
+ other: "%{count} rapporter"
action_taken_by: Åtgärder vidtagna av
are_you_sure: Är du säker?
assign_to_self: Tilldela till mig
@@ -438,11 +444,15 @@ sv:
reported_by: Anmäld av
resolved: Löst
resolved_msg: Anmälan har lösts framgångsrikt!
- status: Status
title: Anmälningar
unassign: Otilldela
unresolved: Olösta
updated_at: Uppdaterad
+ rules:
+ add_new: Lägg till regel
+ delete: Radera
+ edit: Ändra regel
+ title: Serverns regler
settings:
activity_api_enabled:
desc_html: Räkning av lokalt postade statusar, aktiva användare och nyregistreringar per vecka
@@ -466,8 +476,6 @@ sv:
users: För inloggade lokala användare
domain_blocks_rationale:
title: Visa motiv
- enable_bootstrap_timeline_accounts:
- title: Aktivera standard följer för nya användare
hero:
desc_html: Visas på framsidan. Minst 600x100px rekommenderas. Om inte angiven faller den tillbaka på instansens miniatyrbild
title: Hjältebild
@@ -481,7 +489,7 @@ sv:
desc_html: Visas på framsidan när registreringen är stängd. Du kan använda HTML-taggar
title: Stängt registreringsmeddelande
deletion:
- desc_html: Tillåt alla att ta bort sitt konto
+ desc_html: Tillåt vem som helst att radera sitt konto
title: Öppen kontoradering
min_invite_role:
disabled: Ingen
@@ -512,6 +520,8 @@ sv:
desc_html: Visa offentlig tidslinje på landingsidan
title: Förhandsgranska tidslinje
title: Sidans inställningar
+ trends:
+ title: Trendande hashtaggar
site_uploads:
delete: Radera uppladdad fil
statuses:
@@ -529,6 +539,11 @@ sv:
accounts_today: Unika användare idag
accounts_week: Unika användare den här veckan
last_active: Senast aktiv
+ name: Hashtag
+ title: Hashtaggar
+ trending_right_now: Trenderar just nu
+ unreviewed: Ej granskad
+ title: Administration
warning_presets:
add_new: Lägg till ny
delete: Radera
@@ -546,10 +561,12 @@ sv:
discovery: Upptäck
localization:
body: Mastodon översätts av volontärer.
+ guide_link: https://crowdin.com/project/mastodon
guide_link_text: Alla kan bidra.
sensitive_content: Känsligt innehåll
application_mailer:
notification_preferences: Ändra e-postinställningar
+ salutation: "%{name},"
settings: 'Ändra e-postinställningar: %{link}'
view: 'Granska:'
view_profile: Visa profil
@@ -563,9 +580,13 @@ sv:
warning: Var mycket försiktig med denna data. Dela aldrig den med någon!
your_token: Din access token
auth:
+ apply_for_account: Be om en inbjudan
change_password: Lösenord
- delete_account: Ta bort konto
+ delete_account: Radera konto
delete_account_html: Om du vill radera ditt konto kan du fortsätta här. Du kommer att bli ombedd att bekräfta.
+ description:
+ prefix_invited_by_user: "@%{name} bjuder in dig att gå med i en Mastodon-server!"
+ prefix_sign_up: Registrera dig på Mastodon idag!
didnt_get_confirmation: Fick du inte instruktioner om bekräftelse?
forgot_password: Glömt ditt lösenord?
invalid_reset_password_token: Lösenordsåterställningstoken är ogiltig eller utgått. Vänligen be om en ny.
@@ -623,10 +644,13 @@ sv:
x_seconds: "%{count}sek"
deletes:
confirm_password: Ange ditt lösenord för att verifiera din identitet
- proceed: Ta bort konto
+ proceed: Radera konto
success_msg: Ditt konto har raderats
warning:
+ email_change_html: Du kan ändra din e-postadress utan att radera ditt konto
irreversible: Du kan inte återställa eller återaktivera ditt konto
+ directories:
+ explore_mastodon: Utforska %{title}
domain_validator:
invalid_domain: är inte ett giltigt domännamn
errors:
@@ -662,6 +686,7 @@ sv:
add_new: Lägg till ny
filters:
contexts:
+ account: Profiler
notifications: Aviseringar
thread: Konversationer
edit:
@@ -675,15 +700,22 @@ sv:
footer:
developers: Utvecklare
more: Mer…
+ resources: Resurser
+ trending_now: Trendar nu
generic:
all: Alla
changes_saved_msg: Ändringar sparades framgångsrikt!
+ copy: Kopiera
+ delete: Radera
+ order_by: Sortera efter
save_changes: Spara ändringar
validation_errors:
one: Något är inte riktigt rätt ännu! Kontrollera felet nedan
other: Något är inte riktigt rätt ännu! Kontrollera dom %{count} felen nedan
identity_proofs:
active: Aktiv
+ i_am_html: Jag är %{username} på %{service}.
+ identity: Identitet
inactive: Inaktiv
imports:
errors:
@@ -730,6 +762,7 @@ sv:
acct: användarnamn@domän av det nya kontot
cancel_explanation: Avstängning av omdirigeringen kommer att återaktivera ditt nuvarande konto, men kommer inte att återskapa följare som har flyttats till det kontot.
incoming_migrations: Flyttar från ett annat konto
+ proceed_with_move: Flytta följare
redirected_msg: Ditt konto dirigeras om till %{acct}.
moderation:
title: Moderera
@@ -767,13 +800,18 @@ sv:
body: 'Din status knuffades av %{name}:'
subject: "%{name} knuffade din status"
title: Ny knuff
+ status:
+ subject: "%{name} publicerade nyss"
notifications:
other_settings: Andra aviseringsinställningar
+ otp_authentication:
+ enable: Aktivera
pagination:
newer: Nyare
next: Nästa
older: Äldre
prev: Tidigare
+ truncate: "…"
polls:
errors:
invalid_choice: Det valda röstalternativet finns inte
@@ -784,11 +822,13 @@ sv:
follow_selected_followers: Följ valda personer
followers: Följare
following: Följer
+ invited: Inbjuden
last_active: Senast aktiv
status: Kontostatus
remote_follow:
acct: Ange ditt användarnamn@domän du vill följa från
missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto
+ no_account_html: Har du inget konto? Du kan registrera dig här
proceed: Fortsätt för att följa
prompt: 'Du kommer att följa:'
reason_html: "Varför är det här steget nödvändigt? %{instance} är kanske inte den server du är registrerad vid, så vi behöver dirigera dig till din hemserver först."
@@ -796,25 +836,23 @@ sv:
activity: Senaste aktivitet
browser: Webbläsare
browsers:
+ alipay: Alipay
+ blackberry: Blackberry
+ chrome: Chrome
edge: Microsoft Edge
electron: Electron
firefox: Firefox
generic: Okänd browser
ie: Internet Explorer
- micro_messenger: MicroMessenger
opera: Opera
- otter: Otter
- phantom_js: PhantomJS
safari: Safari
current_session: Nuvarande session
description: "%{browser} på %{platform}"
explanation: Detta är inloggade webbläsare på Mastodon just nu.
- ip: IP
platforms:
- adobe_air: Adobe Air
android: Android
blackberry: Blackberry
- chrome_os: ChromeOS
+ chrome_os: Chrome OS
firefox_os: Firefox OS
ios: iOS
linux: Linux
@@ -842,8 +880,7 @@ sv:
profile: Profil
relationships: Följer och följare
two_factor_authentication: Tvåfaktorsautentisering
- spam_check:
- spam_detected: Det här är en automatisk rapport. Spam har upptäckts.
+ webauthn_authentication: Säkerhetsnycklar
statuses:
attached:
description: 'Bifogad: %{attached}'
@@ -865,8 +902,18 @@ sv:
ownership: Någon annans toot kan inte fästas
private: Icke-offentliga toot kan inte fästas
reblog: Knuffar kan inte fästas
+ poll:
+ total_people:
+ one: "%{count} person"
+ other: "%{count} personer"
+ total_votes:
+ one: "%{count} röst"
+ other: "%{count} röster"
+ vote: Rösta
show_more: Visa mer
show_thread: Visa tråd
+ sign_in_to_participate: Logga in för att delta i konversationen
+ title: '%{name}: "%{quote}"'
visibilities:
private: Endast följare
private_long: Visa endast till följare
@@ -966,7 +1013,9 @@ sv:
default: Mastodon
mastodon-light: Mastodon (ljust)
two_factor_authentication:
+ add: Lägg till
disable: Inaktivera
+ edit: Redigera
enabled: Tvåfaktorsautentisering är aktiverad
enabled_success: Tvåfaktorsautentisering aktiverad
generate_recovery_codes: Generera återställningskoder
@@ -974,11 +1023,15 @@ sv:
recovery_codes: Backup återställningskod
recovery_codes_regenerated: Återställningskoder genererades på nytt
recovery_instructions_html: Om du någonsin tappar åtkomst till din telefon kan du använda någon av återställningskoderna nedan för att återställa åtkomst till ditt konto. Håll återställningskoderna säkra . Du kan till exempel skriva ut dem och lagra dem med andra viktiga dokument.
+ webauthn: Säkerhetsnycklar
user_mailer:
backup_ready:
explanation: Du begärde en fullständig säkerhetskopiering av ditt Mastodon-konto. Det är nu klart för nedladdning!
subject: Ditt arkiv är klart för nedladdning
title: Arkivuttagning
+ warning:
+ title:
+ none: Varning
welcome:
edit_profile_action: Profilinställning
edit_profile_step: Du kan anpassa din profil genom att ladda upp en avatar, bakgrundsbild, ändra ditt visningsnamn och mer. Om du vill granska nya följare innan de får följa dig kan du låsa ditt konto.
@@ -996,10 +1049,15 @@ sv:
tip_mobile_webapp: Om din mobila webbläsare erbjuder dig att lägga till Mastodon på din hemskärm kan du få push-aviseringar. Det fungerar som en inbyggd app på många sätt!
title: Välkommen ombord, %{name}!
users:
- blocked_email_provider: Denna e-postleverantör är inte tillåten
- invalid_email: E-postadressen är ogiltig
- invalid_email_mx: E-postadressen verkar inte finnas
+ follow_limit_reached: Du kan inte följa fler än %{limit} personer
invalid_otp_token: Ogiltig tvåfaktorskod
otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email}
seamless_external_login: Du är inloggad via en extern tjänst, så lösenord och e-postinställningar är inte tillgängliga.
signed_in_as: 'Inloggad som:'
+ webauthn_credentials:
+ add: Lägg till ny säkerhetsnyckel
+ delete: Radera
+ delete_confirmation: Är du säker på att du vill ta bort denna säkerhetsnyckel?
+ destroy:
+ success: Din säkerhetsnyckel har raderats.
+ not_enabled: Du har inte aktiverat WebAuthn än
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 18a207715..cfa138304 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -63,7 +63,6 @@ ta:
following: தாங்கள் அங்கீகரிக்க விரும்பும் நபரை தாங்கள் ஏற்கனவே பின்தொடரந்து கொண்டு இருக்க வேண்டும்
posts_tab_heading: பிளிறல்கள்
posts_with_replies: பிளிறல்கள் மற்றும் மறுமொழிகள்
- reserved_username: பயனர்பெயர் முன்பதிவு செய்யப்பட்டுள்ளது
roles:
admin: நிர்வாகி
bot: பொறி
@@ -202,10 +201,6 @@ ta:
update_announcement: அறிவிப்பைப் புதுப்பி
update_custom_emoji: தனிப்பயனான எமோஜியைப் புதுப்பி
update_status: பதிவைப் புதுப்பி
- actions:
- create_announcement: "%{name} %{target} என்றொரு புதிய அறிவிப்பை உருவாக்கியிருக்கிறார்"
- destroy_announcement: "%{name} %{target} அறிவிப்பை நீக்கிவிட்டார்"
- update_announcement: "%{name} %{target} அறிவிப்பைப் புதுப்பித்துள்ளார்"
empty: குறிப்புகள் எவையும் காணப்படவில்லை.
filter_by_action: செயலின் அடிப்படையில் வடிகட்டு
filter_by_user: பயனரின் அடிப்படையில் வடிகட்டு
@@ -280,9 +275,6 @@ ta:
errors:
invalid_key: ஒரு முறையான Ed25519 அல்லது Curve25519 key அல்ல
invalid_signature: ஒரு முறையான Ed25519 அடையாளம் அல்ல
- date:
- formats:
- default: "%b %d, %Y"
errors:
'400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page.
diff --git a/config/locales/tai.yml b/config/locales/tai.yml
index 3b22e9999..f7451a906 100644
--- a/config/locales/tai.yml
+++ b/config/locales/tai.yml
@@ -1,5 +1,10 @@
---
tai:
+ about:
+ see_whats_happening: Khòaⁿ hoat-seng siáⁿ-mih tāi-chì
+ unavailable_content_description:
+ reason: Lí-iû
+ what_is_mastodon: Siáⁿ-mih sī Mastodon?
errors:
'400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page.
diff --git a/config/locales/te.yml b/config/locales/te.yml
index 0028ac325..2030f02b7 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -47,7 +47,6 @@ te:
other: టూట్లు
posts_tab_heading: టూట్లు
posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు
- reserved_username: ఈ username రిజర్వ్ చేయబడింది
roles:
admin: నిర్వాహకులు
bot: బోట్
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 63ce98d4b..89a553c46 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -2,7 +2,7 @@
th:
about:
about_hashtag_html: มีการแท็กโพสต์สาธารณะเหล่านี้ด้วย #%{hashtag} คุณสามารถโต้ตอบกับโพสต์หากคุณมีบัญชีที่ใดก็ตามในเฟดิเวิร์ส
- about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา, ไม่มีการสอดแนมโดยองค์กร, การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!'
+ about_mastodon_html: 'เครือข่ายสังคมแห่งอนาคต: ไม่มีโฆษณา ไม่มีการสอดแนมโดยองค์กร การออกแบบตามหลักจริยธรรม และการกระจายศูนย์! เป็นเจ้าของข้อมูลของคุณด้วย Mastodon!'
about_this: เกี่ยวกับ
active_count_after: ใช้งานอยู่
active_footnote: ผู้ใช้งานรายเดือน (MAU)
@@ -23,12 +23,13 @@ th:
hosted_on: Mastodon ที่โฮสต์ที่ %{domain}
learn_more: เรียนรู้เพิ่มเติม
privacy_policy: นโยบายความเป็นส่วนตัว
+ rules: กฎของเซิร์ฟเวอร์
see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น
server_stats: 'สถิติเซิร์ฟเวอร์:'
source_code: โค้ดต้นฉบับ
status_count_after:
- other: สถานะ
- status_count_before: ผู้สร้าง
+ other: โพสต์
+ status_count_before: ผู้เผยแพร่
tagline: ติดตามเพื่อน ๆ และค้นพบเพื่อนใหม่ ๆ
terms: เงื่อนไขการให้บริการ
unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม
@@ -65,7 +66,6 @@ th:
other: โพสต์
posts_tab_heading: โพสต์
posts_with_replies: โพสต์และการตอบกลับ
- reserved_username: ชื่อผู้ใช้ถูกสงวนไว้
roles:
admin: ผู้ดูแล
bot: บอต
@@ -86,6 +86,7 @@ th:
add_email_domain_block: ปิดกั้นโดเมนอีเมล
approve: อนุมัติ
approve_all: อนุมัติทั้งหมด
+ approved_msg: อนุมัติใบสมัครลงทะเบียนของ %{username} สำเร็จ
are_you_sure: คุณแน่ใจหรือไม่?
avatar: ภาพประจำตัว
by_domain: โดเมน
@@ -112,6 +113,7 @@ th:
email_status: สถานะอีเมล
enable: เลิกอายัด
enabled: เปิดใช้งานอยู่
+ enabled_msg: เลิกอายัดบัญชีของ %{username} สำเร็จ
followers: ผู้ติดตาม
follows: การติดตาม
header: ส่วนหัว
@@ -128,6 +130,7 @@ th:
login_status: สถานะการเข้าสู่ระบบ
media_attachments: ไฟล์แนบสื่อ
memorialize: เปลี่ยนเป็นอนุสรณ์
+ memorialized: เป็นอนุสรณ์แล้ว
memorialized_msg: เปลี่ยน %{username} เป็นบัญชีอนุสรณ์สำเร็จ
moderation:
active: ใช้งานอยู่
@@ -150,6 +153,7 @@ th:
redownload: รีเฟรชโปรไฟล์
reject: ปฏิเสธ
reject_all: ปฏิเสธทั้งหมด
+ rejected_msg: ปฏิเสธใบสมัครลงทะเบียนของ %{username} สำเร็จ
remove_avatar: เอาภาพประจำตัวออก
remove_header: เอาส่วนหัวออก
removed_avatar_msg: เอาภาพประจำตัวของ %{username} ออกสำเร็จ
@@ -169,20 +173,24 @@ th:
search: ค้นหา
search_same_email_domain: ผู้ใช้อื่น ๆ ที่มีโดเมนอีเมลเดียวกัน
search_same_ip: ผู้ใช้อื่น ๆ ที่มี IP เดียวกัน
+ sensitive: ละเอียดอ่อน
+ sensitized: ทำเครื่องหมายว่าละเอียดอ่อนแล้ว
shared_inbox_url: URL กล่องขาเข้าที่แบ่งปัน
show:
created_reports: รายงานที่สร้าง
targeted_reports: รายงานโดยผู้อื่น
silence: จำกัด
silenced: จำกัดอยู่
- statuses: สถานะ
+ statuses: โพสต์
subscribe: บอกรับ
suspended: ระงับอยู่
time_in_queue: กำลังรออยู่ในคิว %{time}
title: บัญชี
unconfirmed_email: อีเมลที่ยังไม่ได้ยืนยัน
+ undo_sensitized: เลิกทำการละเอียดอ่อน
undo_silenced: เลิกทำการทำให้เงียบ
undo_suspension: เลิกทำการระงับ
+ unsilenced_msg: เลิกจำกัดบัญชีของ %{username} สำเร็จ
unsubscribe: เลิกบอกรับ
unsuspended_msg: เลิกระงับบัญชีของ %{username} สำเร็จ
username: ชื่อผู้ใช้
@@ -208,7 +216,7 @@ th:
destroy_domain_block: ลบการปิดกั้นโดเมน
destroy_email_domain_block: ลบการปิดกั้นโดเมนอีเมล
destroy_ip_block: ลบกฎ IP
- destroy_status: ลบสถานะ
+ destroy_status: ลบโพสต์
disable_2fa_user: ปิดใช้งาน 2FA
disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง
disable_user: ปิดใช้งานผู้ใช้
@@ -230,49 +238,49 @@ th:
update_announcement: อัปเดตประกาศ
update_custom_emoji: อัปเดตอีโมจิที่กำหนดเอง
update_domain_block: อัปเดตการปิดกั้นโดเมน
- update_status: อัปเดตสถานะ
+ update_status: อัปเดตโพสต์
actions:
- assigned_to_self_report: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง"
- change_email_user: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}"
- confirm_user: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}"
- create_account_warning: "%{name} ได้ส่งคำเตือนไปยัง %{target}"
- create_announcement: "%{name} ได้สร้างประกาศใหม่ %{target}"
- create_custom_emoji: "%{name} ได้อัปโหลดอีโมจิใหม่ %{target}"
- create_domain_allow: "%{name} ได้อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}"
- create_domain_block: "%{name} ได้ปิดกั้นโดเมน %{target}"
- create_email_domain_block: "%{name} ได้ปิดกั้นโดเมนอีเมล %{target}"
- create_ip_block: "%{name} ได้สร้างกฎสำหรับ IP %{target}"
- demote_user: "%{name} ได้ลดขั้นผู้ใช้ %{target}"
- destroy_announcement: "%{name} ได้ลบประกาศ %{target}"
- destroy_custom_emoji: "%{name} ได้ทำลายอีโมจิ %{target}"
- destroy_domain_allow: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}"
- destroy_domain_block: "%{name} ได้เลิกปิดกั้นโดเมน %{target}"
- destroy_email_domain_block: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}"
- destroy_ip_block: "%{name} ได้ลบกฎสำหรับ IP %{target}"
- destroy_status: "%{name} ได้เอาสถานะโดย %{target} ออก"
- disable_2fa_user: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}"
- disable_custom_emoji: "%{name} ได้ปิดใช้งานอีโมจิ %{target}"
- disable_user: "%{name} ได้ปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
- enable_custom_emoji: "%{name} ได้เปิดใช้งานอีโมจิ %{target}"
- enable_user: "%{name} ได้เปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
- memorialize_account: "%{name} ได้เปลี่ยนบัญชีของ %{target} เป็นหน้าอนุสรณ์"
- promote_user: "%{name} ได้เลื่อนขั้นผู้ใช้ %{target}"
- remove_avatar_user: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก"
- reopen_report: "%{name} ได้เปิดรายงาน %{target} ใหม่"
- reset_password_user: "%{name} ได้ตั้งรหัสผ่านของผู้ใช้ %{target} ใหม่"
- resolve_report: "%{name} ได้แก้ปัญหารายงาน %{target}"
- sensitive_account: "%{name} ได้ทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน"
- silence_account: "%{name} ได้ทำให้บัญชีของ %{target} เงียบ"
- suspend_account: "%{name} ได้ระงับบัญชีของ %{target}"
- unassigned_report: "%{name} ได้เลิกมอบหมายรายงาน %{target}"
- unsensitive_account: "%{name} ได้เลิกทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน"
- unsilence_account: "%{name} ได้เลิกทำให้บัญชีของ %{target} เงียบ"
- unsuspend_account: "%{name} ได้เลิกระงับบัญชีของ %{target}"
- update_announcement: "%{name} ได้อัปเดตประกาศ %{target}"
- update_custom_emoji: "%{name} ได้อัปเดตอีโมจิ %{target}"
- update_domain_block: "%{name} ได้อัปเดตการปิดกั้นโดเมนสำหรับ %{target}"
- update_status: "%{name} ได้อัปเดตสถานะโดย %{target}"
- deleted_status: "(สถานะที่ลบแล้ว)"
+ assigned_to_self_report_html: "%{name} ได้มอบหมายรายงาน %{target} ให้กับตนเอง"
+ change_email_user_html: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}"
+ confirm_user_html: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}"
+ create_account_warning_html: "%{name} ได้ส่งคำเตือนไปยัง %{target}"
+ create_announcement_html: "%{name} ได้สร้างประกาศใหม่ %{target}"
+ create_custom_emoji_html: "%{name} ได้อัปโหลดอีโมจิใหม่ %{target}"
+ create_domain_allow_html: "%{name} ได้อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}"
+ create_domain_block_html: "%{name} ได้ปิดกั้นโดเมน %{target}"
+ create_email_domain_block_html: "%{name} ได้ปิดกั้นโดเมนอีเมล %{target}"
+ create_ip_block_html: "%{name} ได้สร้างกฎสำหรับ IP %{target}"
+ demote_user_html: "%{name} ได้ลดขั้นผู้ใช้ %{target}"
+ destroy_announcement_html: "%{name} ได้ลบประกาศ %{target}"
+ destroy_custom_emoji_html: "%{name} ได้ทำลายอีโมจิ %{target}"
+ destroy_domain_allow_html: "%{name} ได้ไม่อนุญาตการติดต่อกับภายนอกกับโดเมน %{target}"
+ destroy_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมน %{target}"
+ destroy_email_domain_block_html: "%{name} ได้เลิกปิดกั้นโดเมนอีเมล %{target}"
+ destroy_ip_block_html: "%{name} ได้ลบกฎสำหรับ IP %{target}"
+ destroy_status_html: "%{name} ได้เอาโพสต์โดย %{target} ออก"
+ disable_2fa_user_html: "%{name} ได้ปิดใช้งานความต้องการสองปัจจัยสำหรับผู้ใช้ %{target}"
+ disable_custom_emoji_html: "%{name} ได้ปิดใช้งานอีโมจิ %{target}"
+ disable_user_html: "%{name} ได้ปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
+ enable_custom_emoji_html: "%{name} ได้เปิดใช้งานอีโมจิ %{target}"
+ enable_user_html: "%{name} ได้เปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
+ memorialize_account_html: "%{name} ได้เปลี่ยนบัญชีของ %{target} เป็นหน้าอนุสรณ์"
+ promote_user_html: "%{name} ได้เลื่อนขั้นผู้ใช้ %{target}"
+ remove_avatar_user_html: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก"
+ reopen_report_html: "%{name} ได้เปิดรายงาน %{target} ใหม่"
+ reset_password_user_html: "%{name} ได้ตั้งรหัสผ่านของผู้ใช้ %{target} ใหม่"
+ resolve_report_html: "%{name} ได้แก้ปัญหารายงาน %{target}"
+ sensitive_account_html: "%{name} ได้ทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน"
+ silence_account_html: "%{name} ได้ทำให้บัญชีของ %{target} เงียบ"
+ suspend_account_html: "%{name} ได้ระงับบัญชีของ %{target}"
+ unassigned_report_html: "%{name} ได้เลิกมอบหมายรายงาน %{target}"
+ unsensitive_account_html: "%{name} ได้เลิกทำเครื่องหมายสื่อของ %{target} ว่าละเอียดอ่อน"
+ unsilence_account_html: "%{name} ได้เลิกทำให้บัญชีของ %{target} เงียบ"
+ unsuspend_account_html: "%{name} ได้เลิกระงับบัญชีของ %{target}"
+ update_announcement_html: "%{name} ได้อัปเดตประกาศ %{target}"
+ update_custom_emoji_html: "%{name} ได้อัปเดตอีโมจิ %{target}"
+ update_domain_block_html: "%{name} ได้อัปเดตการปิดกั้นโดเมนสำหรับ %{target}"
+ update_status_html: "%{name} ได้อัปเดตโพสต์โดย %{target}"
+ deleted_status: "(โพสต์ที่ลบแล้ว)"
empty: ไม่พบรายการบันทึก
filter_by_action: กรองตามการกระทำ
filter_by_user: กรองตามผู้ใช้
@@ -286,10 +294,12 @@ th:
new:
create: สร้างประกาศ
title: ประกาศใหม่
+ publish: เผยแพร่
published_msg: เผยแพร่ประกาศสำเร็จ!
scheduled_for: จัดกำหนดไว้สำหรับ %{time}
scheduled_msg: จัดกำหนดการเผยแพร่ประกาศแล้ว!
title: ประกาศ
+ unpublish: เลิกเผยแพร่
unpublished_msg: เลิกเผยแพร่ประกาศสำเร็จ!
updated_msg: อัปเดตประกาศสำเร็จ!
custom_emojis:
@@ -333,7 +343,6 @@ th:
feature_profile_directory: ไดเรกทอรีโปรไฟล์
feature_registrations: การลงทะเบียน
feature_relay: รีเลย์การติดต่อกับภายนอก
- feature_spam_check: การป้องกันสแปม
feature_timeline_preview: ตัวอย่างเส้นเวลา
features: คุณลักษณะ
hidden_service: การติดต่อกับภายนอกกับบริการที่ซ่อนอยู่
@@ -377,6 +386,7 @@ th:
reject_media: ปฏิเสธไฟล์สื่อ
reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ
reject_reports: ปฏิเสธรายงาน
+ reject_reports_hint: เพิกเฉยรายงานทั้งหมดที่มาจากโดเมนนี้ ไม่เกี่ยวข้องกับการระงับ
rejecting_media: กำลังปฏิเสธไฟล์สื่อ
rejecting_reports: กำลังปฏิเสธรายงาน
severity:
@@ -404,6 +414,13 @@ th:
create: เพิ่มโดเมน
title: ปิดกั้นโดเมนอีเมลใหม่
title: โดเมนอีเมลที่ปิดกั้นอยู่
+ follow_recommendations:
+ language: สำหรับภาษา
+ status: สถานะ
+ suppress: ระงับคำแนะนำการติดตาม
+ suppressed: ระงับอยู่
+ title: คำแนะนำการติดตาม
+ unsuppress: คืนค่าคำแนะนำการติดตาม
instances:
by_domain: โดเมน
empty: ไม่พบโดเมน
@@ -457,6 +474,7 @@ th:
inbox_url: URL รีเลย์
pending: กำลังรอการอนุมัติของรีเลย์
save_and_enable: บันทึกแล้วเปิดใช้งาน
+ setup: ตั้งค่าการเชื่อมต่อแบบรีเลย์
status: สถานะ
title: รีเลย์
report_notes:
@@ -495,9 +513,14 @@ th:
unassign: เลิกมอบหมาย
unresolved: ยังไม่ได้แก้ปัญหา
updated_at: อัปเดตเมื่อ
+ rules:
+ add_new: เพิ่มกฎ
+ delete: ลบ
+ edit: แก้ไขกฎ
+ title: กฎของเซิร์ฟเวอร์
settings:
bootstrap_timeline_accounts:
- title: การติดตามเริ่มต้นสำหรับผู้ใช้ใหม่
+ title: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่
contact_information:
email: อีเมลธุรกิจ
username: ชื่อผู้ใช้ในการติดต่อ
@@ -513,8 +536,6 @@ th:
users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ
domain_blocks_rationale:
title: แสดงคำชี้แจงเหตุผล
- enable_bootstrap_timeline_accounts:
- title: เปิดใช้งานการติดตามเริ่มต้นสำหรับผู้ใช้ใหม่
hero:
desc_html: แสดงในหน้าแรก อย่างน้อย 600x100px ที่แนะนำ เมื่อไม่ได้ตั้ง กลับไปใช้ภาพขนาดย่อเซิร์ฟเวอร์
title: ภาพแบนเนอร์หลัก
@@ -523,7 +544,7 @@ th:
title: ภาพมาสคอต
peers_api_enabled:
desc_html: ชื่อโดเมนที่เซิร์ฟเวอร์นี้ได้พบในเฟดิเวิร์ส
- title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบ
+ title: เผยแพร่รายการเซิร์ฟเวอร์ที่ค้นพบใน API
preview_sensitive_media:
title: แสดงสื่อที่ละเอียดอ่อนในตัวอย่าง OpenGraph
profile_directory:
@@ -545,6 +566,8 @@ th:
none: ไม่มีใครสามารถลงทะเบียน
open: ใครก็ตามสามารถลงทะเบียน
title: โหมดการลงทะเบียน
+ show_known_fediverse_at_about_page:
+ title: รวมเนื้อหาที่ติดต่อกับภายนอกไว้ในหน้าเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง
show_staff_badge:
desc_html: แสดงป้ายพนักงานในหน้าผู้ใช้
title: แสดงป้ายพนักงาน
@@ -555,6 +578,7 @@ th:
desc_html: สถานที่ที่ดีสำหรับแนวทางปฏิบัติ, กฎ, หลักเกณฑ์ และสิ่งอื่น ๆ ของคุณที่ทำให้เซิร์ฟเวอร์ของคุณแตกต่าง คุณสามารถใช้แท็ก HTML
title: ข้อมูลแบบขยายที่กำหนดเอง
site_short_description:
+ desc_html: แสดงในแถบข้างและแท็กเมตา อธิบายว่า Mastodon คืออะไรและสิ่งที่ทำให้เซิร์ฟเวอร์นี้พิเศษในย่อหน้าเดียว
title: คำอธิบายเซิร์ฟเวอร์แบบสั้น
site_terms:
desc_html: คุณสามารถเขียนนโยบายความเป็นส่วนตัว, เงื่อนไขการให้บริการ หรือภาษากฎหมายอื่น ๆ ของคุณเอง คุณสามารถใช้แท็ก HTML
@@ -581,18 +605,22 @@ th:
nsfw_off: ทำเครื่องหมายว่าไม่ละเอียดอ่อน
nsfw_on: ทำเครื่องหมายว่าละเอียดอ่อน
deleted: ลบแล้ว
+ failed_to_execute: ไม่สามารถปฏิบัติการ
media:
title: สื่อ
no_media: ไม่มีสื่อ
- title: สถานะบัญชี
+ title: โพสต์ของบัญชี
with_media: มีสื่อ
+ system_checks:
+ rules_check:
+ action: จัดการกฎของเซิร์ฟเวอร์
+ message_html: คุณไม่ได้กำหนดกฎของเซิร์ฟเวอร์ใด ๆ
tags:
- context: บริบท
- directory: ในไดเรกทอรี
- in_directory: "%{count} ในไดเรกทอรี"
+ accounts_today: การใช้งานที่ไม่ซ้ำกันในวันนี้
+ accounts_week: การใช้งานที่ไม่ซ้ำกันในสัปดาห์นี้
last_active: ใช้งานล่าสุด
most_popular: ยอดนิยม
- most_recent: ล่าสุด
+ most_recent: สร้างล่าสุด
name: แฮชแท็ก
review: สถานะการตรวจทาน
reviewed: ตรวจทานแล้ว
@@ -635,7 +663,7 @@ th:
settings: 'เปลี่ยนการกำหนดลักษณะอีเมล: %{link}'
view: 'มุมมอง:'
view_profile: ดูโปรไฟล์
- view_status: ดูสถานะ
+ view_status: ดูโพสต์
applications:
created: สร้างแอปพลิเคชันสำเร็จ
destroyed: ลบแอปพลิเคชันสำเร็จ
@@ -653,6 +681,7 @@ th:
description:
prefix_invited_by_user: "@%{name} เชิญคุณเข้าร่วมเซิร์ฟเวอร์ Mastodon นี้!"
prefix_sign_up: ลงทะเบียนใน Mastodon วันนี้!
+ suffix: เมื่อมีบัญชี คุณจะสามารถติดตามผู้คน โพสต์การอัปเดต และแลกเปลี่ยนข้อความกับผู้ใช้จากเซิร์ฟเวอร์ Mastodon และอื่น ๆ!
didnt_get_confirmation: ไม่ได้รับคำแนะนำการยืนยัน?
dont_have_your_security_key: ไม่มีกุญแจความปลอดภัยของคุณ?
forgot_password: ลืมรหัสผ่านของคุณ?
@@ -680,6 +709,7 @@ th:
account_status: สถานะบัญชี
confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์
functional: บัญชีของคุณทำงานได้อย่างเต็มที่
+ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง
trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ?
use_security_key: ใช้กุญแจความปลอดภัย
authorize_follow:
@@ -726,9 +756,11 @@ th:
proceed: ลบบัญชี
success_msg: ลบบัญชีของคุณสำเร็จ
warning:
+ caches: เนื้อหาที่ได้รับการแคชโดยเซิร์ฟเวอร์อื่น ๆ อาจยังคงอยู่
data_removal: จะเอาโพสต์และข้อมูลอื่น ๆ ของคุณออกโดยถาวร
email_change_html: คุณสามารถ เปลี่ยนที่อยู่อีเมลของคุณ โดยไม่ต้องลบบัญชีของคุณ
email_reconfirmation_html: หากคุณไม่ได้รับอีเมลยืนยัน คุณสามารถ ขออีเมลอีกครั้ง
+ irreversible: คุณจะไม่สามารถคืนค่าหรือเปิดใช้งานบัญชีของคุณใหม่
more_details_html: สำหรับรายละเอียดเพิ่มเติม ดู นโยบายความเป็นส่วนตัว
username_available: ชื่อผู้ใช้ของคุณจะพร้อมใช้งานอีกครั้ง
username_unavailable: ชื่อผู้ใช้ของคุณจะยังคงไม่พร้อมใช้งาน
@@ -759,6 +791,7 @@ th:
archive_takeout:
date: วันที่
download: ดาวน์โหลดการเก็บถาวรของคุณ
+ in_progress: กำลังคอมไพล์การเก็บถาวรของคุณ...
request: ขอการเก็บถาวรของคุณ
size: ขนาด
blocks: คุณปิดกั้น
@@ -850,7 +883,7 @@ th:
title: เชิญผู้คน
media_attachments:
validations:
- images_and_video: ไม่สามารถแนบวิดีโอกับสถานะที่มีภาพอยู่แล้ว
+ images_and_video: ไม่สามารถแนบวิดีโอกับโพสต์ที่มีภาพอยู่แล้ว
too_many: ไม่สามารถแนบมากกว่า 4 ไฟล์
migrations:
acct: ย้ายไปยัง
@@ -884,8 +917,8 @@ th:
other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ \U0001F418"
title: เมื่อคุณไม่อยู่...
favourite:
- body: 'สถานะของคุณได้รับการชื่นชอบโดย %{name}:'
- subject: "%{name} ได้ชื่นชอบสถานะของคุณ"
+ body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:'
+ subject: "%{name} ได้ชื่นชอบโพสต์ของคุณ"
title: รายการโปรดใหม่
follow:
body: "%{name} กำลังติดตามคุณ!"
@@ -902,9 +935,11 @@ th:
subject: คุณได้รับการกล่าวถึงโดย %{name}
title: การกล่าวถึงใหม่
reblog:
- body: 'สถานะของคุณได้รับการดันโดย %{name}:'
- subject: "%{name} ได้ดันสถานะของคุณ"
+ body: 'โพสต์ของคุณได้รับการดันโดย %{name}:'
+ subject: "%{name} ได้ดันโพสต์ของคุณ"
title: การดันใหม่
+ status:
+ subject: "%{name} เพิ่งโพสต์"
notifications:
email_events: เหตุการณ์สำหรับการแจ้งเตือนอีเมล
email_events_hint: 'เลือกเหตุการณ์ที่คุณต้องการรับการแจ้งเตือน:'
@@ -973,29 +1008,22 @@ th:
browser: เบราว์เซอร์
browsers:
alipay: Alipay
- blackberry: Blackberry
chrome: Chrome
edge: Microsoft Edge
electron: Electron
firefox: Firefox
generic: เบราว์เซอร์ที่ไม่รู้จัก
ie: Internet Explorer
- micro_messenger: MicroMessenger
- nokia: Nokia S40 Ovi Browser
opera: Opera
- otter: Otter
- phantom_js: PhantomJS
- qq: QQ Browser
safari: Safari
- uc_browser: UCBrowser
weibo: Weibo
current_session: เซสชันปัจจุบัน
+ description: "%{browser} ใน %{platform}"
ip: IP
platforms:
adobe_air: Adobe Air
android: Android
- blackberry: Blackberry
- chrome_os: ChromeOS
+ chrome_os: Chrome OS
firefox_os: Firefox OS
ios: iOS
linux: Linux
@@ -1029,8 +1057,6 @@ th:
relationships: การติดตามและผู้ติดตาม
two_factor_authentication: การรับรองความถูกต้องด้วยสองปัจจัย
webauthn_authentication: กุญแจความปลอดภัย
- spam_check:
- spam_detected: นี่คือรายงานแบบอัตโนมัติ ตรวจพบสแปม
statuses:
attached:
audio:
@@ -1063,6 +1089,7 @@ th:
sign_in_to_participate: ลงชื่อเข้าเพื่อเข้าร่วมการสนทนา
title: '%{name}: "%{quote}"'
visibilities:
+ direct: โดยตรง
private: ผู้ติดตามเท่านั้น
private_long: แสดงแก่ผู้ติดตามเท่านั้น
public: สาธารณะ
@@ -1098,6 +1125,8 @@ th:
recovery_codes_regenerated: สร้างรหัสกู้คืนใหม่สำเร็จ
webauthn: กุญแจความปลอดภัย
user_mailer:
+ backup_ready:
+ subject: การเก็บถาวรของคุณพร้อมสำหรับการดาวน์โหลดแล้ว
sign_in_token:
details: 'นี่คือรายละเอียดของความพยายาม:'
explanation: 'เราตรวจพบความพยายามลงชื่อเข้าบัญชีของคุณจากที่อยู่ IP ที่ไม่รู้จัก หากนี่คือคุณ โปรดป้อนรหัสความปลอดภัยด้านล่างในหน้าตรวจสอบการลงชื่อเข้า:'
@@ -1109,21 +1138,23 @@ th:
subject:
none: คำเตือนสำหรับ %{acct}
title:
+ disable: อายัดบัญชีอยู่
none: คำเตือน
silence: จำกัดบัญชีอยู่
suspend: ระงับบัญชีอยู่
welcome:
+ edit_profile_action: ตั้งค่าโปรไฟล์
review_preferences_action: เปลี่ยนการกำหนดลักษณะ
subject: ยินดีต้อนรับสู่ Mastodon
+ tip_following: คุณติดตามผู้ดูแลเซิร์ฟเวอร์ของคุณเป็นค่าเริ่มต้น เพื่อค้นหาผู้คนที่น่าสนใจเพิ่มเติม ตรวจสอบเส้นเวลาในเซิร์ฟเวอร์และที่ติดต่อกับภายนอก
tips: เคล็ดลับ
title: ยินดีต้อนรับ %{name}!
users:
- blocked_email_provider: ไม่อนุญาตผู้ให้บริการอีเมลนี้
follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน
- invalid_email: ที่อยู่อีเมลไม่ถูกต้อง
- invalid_email_mx: ดูเหมือนว่าไม่มีที่อยู่อีเมลอยู่
+ generic_access_help_html: มีปัญหาในการเข้าถึงบัญชีของคุณ? คุณสามารถติดต่อ %{email} สำหรับความช่วยเหลือ
invalid_otp_token: รหัสสองปัจจัยไม่ถูกต้อง
invalid_sign_in_token: รหัสความปลอดภัยไม่ถูกต้อง
+ otp_lost_help_html: หากคุณสูญเสียการเข้าถึงทั้งสองอย่าง คุณสามารถติดต่อ %{email}
seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล
signed_in_as: 'ลงชื่อเข้าเป็น:'
verification:
@@ -1139,6 +1170,7 @@ th:
error: มีปัญหาในการลบกุญแจความปลอดภัยของคุณ โปรดลองอีกครั้ง
success: ลบกุญแจความปลอดภัยของคุณสำเร็จ
invalid_credential: กุญแจความปลอดภัยไม่ถูกต้อง
+ nickname_hint: ป้อนชื่อเล่นของกุญแจความปลอดภัยใหม่ของคุณ
not_enabled: คุณยังไม่ได้เปิดใช้งาน WebAuthn
not_supported: เบราว์เซอร์นี้ไม่รองรับกุญแจความปลอดภัย
otp_required: เพื่อใช้กุญแจความปลอดภัย โปรดเปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยก่อน
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 62247bf56..9e65a7c62 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -26,6 +26,8 @@ tr:
Federasyon amaçlı kullanılır ve tüm yansıyı engellemek istemediğiniz sürece engellenmemelidir; bu durumda bir etki alanı bloğu kullanmanız gerekir.
learn_more: Daha fazla bilgi edinin
privacy_policy: Gizlilik politikası
+ rules: Sunucu kuralları
+ rules_html: 'Aşağıda, bu Mastodon sunucusu üzerinde bir hesap açmak istiyorsanız uymanız gereken kuralların bir özeti var:'
see_whats_happening: Neler olduğunu görün
server_stats: 'Sunucu istatistikleri:'
source_code: Kaynak kodu
@@ -60,6 +62,7 @@ tr:
one: Takipçi
other: Takipçi
following: Takip edilenler
+ instance_actor_flash: Bu hesap, herhangi bir bireysel kullanıcı değil, sunucunun kendisini temsil etmek için kullanılan sanal bir aktördür. Birleştirme amacıyla kullanılmaktadır ve askıya alınmamalıdır.
joined: "%{date} tarihinde katıldı"
last_active: son etkinlik
link_verified_on: Bu bağlantının mülkiyeti %{date} tarihinde kontrol edildi
@@ -77,7 +80,6 @@ tr:
other: Toot
posts_tab_heading: Tootlar
posts_with_replies: Tootlar ve yanıtlar
- reserved_username: Kullanıcı adı rezerve edildi
roles:
admin: Yönetici
bot: Bot
@@ -131,6 +133,7 @@ tr:
follows: Takip edilen
header: Üstbilgi
inbox_url: Gelen kutusu bağlantısı
+ invite_request_text: Katılma gerekçeleri
invited_by: Tarafından davet edildi
ip: IP
joined: Katıldı
@@ -227,6 +230,7 @@ tr:
create_domain_block: Engellenen Alan Adı Oluştur
create_email_domain_block: E-Posta Alan Adı Engeli Oluştur
create_ip_block: IP kuralı oluştur
+ create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur
demote_user: Kullanıcıyı Düşür
destroy_announcement: Duyuru Sil
destroy_custom_emoji: Özel İfadeyi Sil
@@ -235,6 +239,7 @@ tr:
destroy_email_domain_block: E-posta alan adı engelini sil
destroy_ip_block: IP kuralını sil
destroy_status: Durumu Sil
+ destroy_unavailable_domain: Mevcut Olmayan Alan Adı Sil
disable_2fa_user: 2AD Kapat
disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak
disable_user: Kullanıcıyı Devre Dışı Bırak
@@ -258,46 +263,48 @@ tr:
update_domain_block: Engellenen Alan Adını Güncelle
update_status: Durumu Güncelle
actions:
- assigned_to_self_report: "%{name} kendilerine %{target} adlı raporu verdi"
- change_email_user: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi"
- confirm_user: "%{name} %{target} kullanıcısının e-posta adresini onayladı"
- create_account_warning: "%{name} %{target} 'a bir uyarı gönderdi"
- create_announcement: "%{name}, yeni %{target} duyurusunu oluşturdu"
- create_custom_emoji: "%{name} yeni ifade yükledi %{target}"
- create_domain_allow: "%{target} alan adı, %{name} tarafından beyaz listeye alındı"
- create_domain_block: "%{target} alanı, %{name} tarafından engellendi"
- create_email_domain_block: "%{target} e-posta alanı, %{name} tarafından kara listeye alınmış"
- create_ip_block: "%{name}, IP %{target} için kural oluşturdu"
- demote_user: "%{name} %{target} kullanıcısını düşürdü"
- destroy_announcement: "%{name}, %{target} duyurusunu sildi"
- destroy_custom_emoji: "%{target} emoji, %{name} tarafından kaldırıldı"
- destroy_domain_allow: "%{target} alan adı, %{name} tarafından beyaz listeden çıkartıldı"
- destroy_domain_block: "%{target} alan adının engeli %{name} tarafından kaldırıldı"
- destroy_email_domain_block: "%{target} e-posta sunucusu, %{name} tarafından beyaz listeye alındı"
- destroy_ip_block: "%{name}, IP %{target} için kuralı sildi"
- destroy_status: "%{name}, %{target} kullanıcısının durumunu kaldırdı"
- disable_2fa_user: "%{name}, %{target} kullanıcısı için iki adım gereksinimini kapattı"
- disable_custom_emoji: "%{target} emoji, %{name} tarafından devre dışı bırakıldı"
- disable_user: "%{name} %{target} kullanıcısı için oturum açmayı devre dışı bıraktı"
- enable_custom_emoji: "%{name} %{target} için emojiyi etkinleştirdi"
- enable_user: "%{name} %{target} için oturum açmayı etkinleştirdi"
- memorialize_account: "%{name}, %{target} kişisinin hesabını anıt sayfasına dönüştürdü"
- promote_user: "%{name} %{target} kullanıcısını yükseltti"
- remove_avatar_user: "%{name} %{target}'in avatarını kaldırdı"
- reopen_report: "%{name} %{target} şikayetini yeniden açtı"
- reset_password_user: "%{name} %{target} kullanıcısının parolasını resetledi"
- resolve_report: "%{name} %{target} şikayetini çözdü"
- sensitive_account: "%{name}, %{target} kişisinin medyasını hassas olarak işaretledi"
- silence_account: "%{name} %{target}'in hesabını susturdu"
- suspend_account: "%{name} %{target}'in hesabını uzaklaştırdı"
- unassigned_report: "%{name} %{target} şikayetinin atamasını geri aldı"
- unsensitive_account: "%{name}, %{target} kişisinin medyasını hassas olarak işaretlemedi"
- unsilence_account: "%{name} %{target}'in hesabının susturmasını kaldırdı"
- unsuspend_account: "%{name} %{target}'in hesabının uzaklaştırmasını kaldırdı"
- update_announcement: "%{name}, %{target} duyurusunu güncelledi"
- update_custom_emoji: "%{name} %{target} emojiyi güncelledi"
- update_domain_block: "%{name}, %{target} için alan adı engelini güncelledi"
- update_status: "%{name}, %{target} kullanıcısının durumunu güncelledi"
+ assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi"
+ change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi"
+ confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı"
+ create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi"
+ create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu"
+ create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi"
+ create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi"
+ create_domain_block_html: "%{name}, %{target} alan adını engelledi"
+ create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi"
+ create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu"
+ create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu"
+ demote_user_html: "%{name}, %{target} kullanıcısını düşürdü"
+ destroy_announcement_html: "%{name}, %{target} duyurusunu sildi"
+ destroy_custom_emoji_html: "%{name}, %{target} emojisini yok etti"
+ destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı"
+ destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı"
+ destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı"
+ destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi"
+ destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı"
+ destroy_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı sürdürdü"
+ disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı"
+ disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı"
+ disable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı devre dışı bıraktı"
+ enable_custom_emoji_html: "%{name}, %{target} emojisini etkinleştirdi"
+ enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi"
+ memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü"
+ promote_user_html: "%{name}, %{target} kullanıcısını yükseltti"
+ remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı"
+ reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı"
+ reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı"
+ resolve_report_html: "%{name}, %{target} şikayetini çözdü"
+ sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi"
+ silence_account_html: "%{name}, %{target} kullanıcısının hesabını sessize aldı"
+ suspend_account_html: "%{name}, %{target} kullanıcısının hesabını askıya aldı"
+ unassigned_report_html: "%{name}, %{target} şikayetinin atamasını kaldırdı"
+ unsensitive_account_html: "%{name}, %{target} kullanıcısının medyasının hassas işaretini kaldırdı"
+ unsilence_account_html: "%{name}, %{target} kullanıcısının hesabının sessizliğini kaldırdı"
+ unsuspend_account_html: "%{name}, %{target} kullanıcısının hesabının askı durumunu kaldırdı"
+ update_announcement_html: "%{name}, %{target} duyurusunu güncelledi"
+ update_custom_emoji_html: "%{name}, %{target} emojisini güncelledi"
+ update_domain_block_html: "%{name}, %{target} alan adının engelini güncelledi"
+ update_status_html: "%{name}, %{target} kullanıcısının gönderisini güncelledi"
deleted_status: "(silinmiş durum)"
empty: Kayıt bulunamadı.
filter_by_action: Eyleme göre filtre
@@ -312,10 +319,12 @@ tr:
new:
create: Duyuru oluştur
title: Yeni duyuru
+ publish: Yayınla
published_msg: Duyuru başarıyla yayınlandı!
scheduled_for: "%{time} için zamanlandı"
scheduled_msg: Duyuru yayınlanmak üzere zamanlandı!
title: Duyurular
+ unpublish: Yayından kaldır
unpublished_msg: Duyuru başarıyla yayından kaldırıldı!
updated_msg: Duyuru başarıyla güncellendi!
custom_emojis:
@@ -360,7 +369,6 @@ tr:
feature_profile_directory: Profil Dizini
feature_registrations: Kayıtlar
feature_relay: Federasyon aktarıcısı
- feature_spam_check: Anti-spam
feature_timeline_preview: Zaman çizelgesi önizlemesi
features: Özellikler
hidden_service: Gizli servislere sahip federasyon
@@ -400,6 +408,8 @@ tr:
silence: Sustur
suspend: Uzaklaştır
title: Yeni domain bloğu
+ obfuscate: Alan adını gizle
+ obfuscate_hint: Alan adı kısıtlamaları listelerinin duyurulması etkinleştirilmişse alan adını listede kısmen gizle
private_comment: Özel yorum
private_comment_hint: Denetleyiciler tarafından dahili kullanım için bu alan adı sınırlaması hakkında yorum.
public_comment: Genel yorum
@@ -436,9 +446,34 @@ tr:
create: Alan adı ekle
title: Yeni e-posta kara liste girişi
title: E-posta kara listesi
+ follow_recommendations:
+ description_html: "Takip önerileri yeni kullanıcıların hızlı bir şekilde ilginç içerik bulmalarını sağlar. Eğer bir kullanıcı, kişisel takip önerileri almaya yetecek kadar başkalarıyla etkileşime girmediğinde, onun yerine bu hesaplar önerilir. Bu öneriler, verili bir dil için en yüksek takipçi sayısına ve en yüksek güncel meşguliyete sahip hesapların bir karışımdan günlük olarak hesaplanıyorlar."
+ language: Dil için
+ status: Durum
+ suppress: Takip önerisini baskıla
+ suppressed: Baskılandı
+ title: Takip önerileri
+ unsuppress: Takip önerisini geri getir
instances:
+ back_to_all: Tümü
+ back_to_limited: Sınırlı
+ back_to_warning: Uyarı
by_domain: Alan adı
+ delivery:
+ all: Tümü
+ clear: Teslimat hatalarını temizle
+ restart: Teslimatı yeniden başlat
+ stop: Teslimatı durdur
+ title: Teslimat
+ unavailable: Mevcut Değil
+ unavailable_message: Teslimat mevcut değil
+ warning: Uyarı
+ warning_message:
+ one: Teslimat %{count} gündür başarısız
+ other: Teslimat %{count} gündür başarısız
delivery_available: Teslimat mevcut
+ delivery_error_days: Teslimat hatası günleri
+ delivery_error_hint: Eğer teslimat %{count} gün boyunca mümkün olmazsa, otomatik olarak teslim edilemiyor olarak işaretlenecek.
empty: Alan adı bulunamadı.
known_accounts:
one: "%{count} bilinen hesap"
@@ -517,6 +552,8 @@ tr:
comment:
none: Yok
created_at: Şikayet edildi
+ forwarded: İletildi
+ forwarded_to: "%{domain}'e iletildi"
mark_as_resolved: Giderildi olarak işaretle
mark_as_unresolved: Çözümlenmemiş olarak işaretle
notes:
@@ -536,6 +573,13 @@ tr:
unassign: Atamayı geri al
unresolved: Giderilmedi
updated_at: Güncellendi
+ rules:
+ add_new: Kural ekle
+ delete: Sil
+ description_html: Her ne kadar çoğu hizmet kullanım şartlarını okuyup kabul ettiğini söylese de, insanlar onu ancak bir sorun çıktığında gözden geçiriyorlar. Sunucunuzun kurallarını bir bakışta kolayca görülecek şekilde düz bir madde listesi şeklinde sunun. Tekil kuralları kısa ve yalın tutmaya çalışan ama onları çok sayıda maddeye bölmemeye de çalışın.
+ edit: Kuralı düzenle
+ empty: Henüz bir sunucu kuralı tanımlanmadı.
+ title: Sunucu kuralları
settings:
activity_api_enabled:
desc_html: Yerel olarak yayınlanan durumların, aktif kullanıcıların, ve haftalık kovalardaki yeni kayıtların sayısı
@@ -559,8 +603,6 @@ tr:
users: Oturum açan yerel kullanıcılara
domain_blocks_rationale:
title: Gerekçeyi göster
- enable_bootstrap_timeline_accounts:
- title: Yeni kullanıcılar için varsayılan takipleri etkinleştir
hero:
desc_html: Önsayfada görüntülenir. En az 600x100px önerilir. Ayarlanmadığında, sunucu küçük resmi kullanılır
title: Kahraman görseli
@@ -586,6 +628,9 @@ tr:
min_invite_role:
disabled: Hiç kimse
title: tarafından yapılan davetlere izin ver
+ require_invite_text:
+ desc_html: Kayıtlar elle doğrulama gerektiriyorsa, "Neden katılmak istiyorsunuz?" metin girdisini isteğe bağlı yerine zorunlu yapın
+ title: Yeni kullanıcıların katılmak için bir gerekçe sunmasını gerektir
registrations_mode:
modes:
approved: Kayıt için onay gerekli
@@ -611,9 +656,6 @@ tr:
desc_html: Kendi gizlilik politikanızı, hizmet şartlarınızı ya da diğer hukuki metinlerinizi yazabilirsiniz. HTML etiketleri kullanabilirsiniz
title: Özel hizmet şartları
site_title: Site başlığı
- spam_check_enabled:
- desc_html: Mastodon, tekrar eden istenmeyen mesajlar gönderen hesapları otomatik olarak susturabilir ve şikayet edebilir. Yanlışlar olabilir.
- title: Anti-spam otomasyonu
thumbnail:
desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir
title: Sunucu küçük resmi
@@ -644,13 +686,18 @@ tr:
no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi
title: Hesap durumları
with_media: Medya ile
+ system_checks:
+ database_schema_check:
+ message_html: Beklemede olan veritabanı güncellemeleri mevcut. Uygulamanın beklenildiği gibi çalışması için lütfen onları çalıştırın
+ rules_check:
+ action: Sunucu kurallarını yönet
+ message_html: Herhangi bir sunucu kuralı belirlemediniz.
+ sidekiq_process_check:
+ message_html: "%{value} kuyruk(lar)ı için herhangi bir Sidekiq süreci çalışmıyor. Lütfen Sidekiq yapılandırmanızı gözden geçirin"
tags:
accounts_today: Bugünkü eşsiz kullanımlar
accounts_week: Bu haftaki eşsiz kullanımlar
breakdown: Bugünkü kullanımın kaynağa göre dağılımı
- context: İçerik
- directory: Dizinde
- in_directory: Dizinde %{count}
last_active: Son etkinlik
most_popular: En popüler
most_recent: En yeni
@@ -667,6 +714,7 @@ tr:
add_new: Yeni ekle
delete: Sil
edit_preset: Uyarı ön-ayarını düzenle
+ empty: Henüz önceden ayarlanmış bir uyarı tanımlanmadı.
title: Uyarı ön-ayarlarını yönet
admin_mailer:
new_pending_account:
@@ -914,6 +962,8 @@ tr:
status: Doğrulama durumu
view_proof: Kanıtı görüntüle
imports:
+ errors:
+ over_rows_processing_limit: "%{count} satırdan fazlasını içeriyor"
modes:
merge: Birleştir
merge_long: Mevcut kayıtları sakla ve yenileri ekle
@@ -1026,10 +1076,14 @@ tr:
body: "%{name} senden bahsetti:"
subject: "%{name} senden bahsetti"
title: Yeni bahsetme
+ poll:
+ subject: Anket %{name} tarafından sonlandırıldı
reblog:
body: "%{name} durumunuzu boostladı:"
subject: "%{name} durumunuzu boostladı"
title: Yeni boost
+ status:
+ subject: "%{name} az önce gönderdi"
notifications:
email_events: E-posta bildirimi gönderilecek etkinlikler
email_events_hint: 'Bildirim almak istediğiniz olayları seçin:'
@@ -1178,8 +1232,6 @@ tr:
relationships: Takip edilenler ve takipçiler
two_factor_authentication: İki adımlı doğrulama
webauthn_authentication: Güvenlik anahtarları
- spam_check:
- spam_detected: Bu otomatik bir şikayettir. Spam tespit edildi.
statuses:
attached:
audio:
@@ -1222,6 +1274,7 @@ tr:
sign_in_to_participate: Sohbete katılmak için oturum açın
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Doğrudan
private: Sadece takipçiler
private_long: Sadece takipçilerime gönder
public: Herkese açık
@@ -1390,11 +1443,8 @@ tr:
tips: İpuçları
title: Gemiye hoşgeldin, %{name}!
users:
- blocked_email_provider: Bu e-posta sağlayıcısına izin verilmiyor
follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz"
generic_access_help_html: Hesabınıza erişirken sorun mu yaşıyorsunuz? Yardım için %{email} ile iletişime geçebilirsiniz
- invalid_email: E-posta adresi geçersiz
- invalid_email_mx: E-posta adresi mevcut görünmüyor
invalid_otp_token: Geçersiz iki adımlı doğrulama kodu
invalid_sign_in_token: Geçersiz güvenlik kodu
otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz
diff --git a/config/locales/tt.yml b/config/locales/tt.yml
index e35b5da21..d9f99a9b2 100644
--- a/config/locales/tt.yml
+++ b/config/locales/tt.yml
@@ -1,5 +1,146 @@
---
tt:
+ about:
+ about_this: Хакында
+ api: API
+ contact_unavailable: Юк
+ privacy_policy: Хосусыйлык сәясәте
+ unavailable_content_description:
+ domain: Сервер
+ user_count_after:
+ other: кулланучы
+ accounts:
+ follow: Языл
+ following: Язылгансыз
+ media: Медиа
+ never_active: Беркайчан да
+ roles:
+ admin: Админ
+ bot: Бот
+ group: Törkem
+ unfollow: Язылынмау
+ admin:
+ account_moderation_notes:
+ delete: Бетерү
+ accounts:
+ avatar: Аватар
+ by_domain: Домен
+ change_email:
+ label: Emailны үзгәртү
+ submit: Emailны үзгәртү
+ confirm: Раслау
+ deleted: Бетерелде
+ domain: Домен
+ edit: Үзгәртү
+ email: Эл. почта
+ header: Башлам
+ ip: ІР
+ location:
+ all: Бөтенесе
+ local: Җирле
+ title: Урын
+ moderation:
+ all: Бөтенесе
+ perform_full_suspension: Искә алмау
+ reset: Ташлату
+ role: Рөхсәтләр
+ roles:
+ user: Кулланучы
+ search: Эзләү
+ sensitive: Sizmäle
+ username: Кулланучы исеме
+ web: Веб
+ custom_emojis:
+ by_domain: Домен
+ copy: Күчереп алу
+ delete: Бетерү
+ disable: Cүндерү
+ disabled: Cүндерелгән
+ enable: Кабызу
+ list: Исемлек
+ upload: Йөкләү
+ dashboard:
+ features: Үзенчәлекләр
+ domain_blocks:
+ domain: Домен
+ new:
+ severity:
+ noop: Бернинди дә
+ suspend: Искә алмау
+ show:
+ undo: Кире алу
+ email_domain_blocks:
+ delete: Бетерү
+ domain: Домен
+ instances:
+ by_domain: Домен
+ moderation:
+ all: Бөтенесе
+ invites:
+ filter:
+ all: Бөтенесе
+ expired: Гамәлдән чыкты
+ title: Sözgeç
+ ip_blocks:
+ delete: Бетерү
+ expires_in:
+ '1209600': 2 атна
+ '15778476': 6 months
+ '2629746': 1 ай
+ '31556952': 1 ел
+ '86400': 1 көн
+ '94670856': 3 ел
+ relays:
+ delete: Бетерү
+ disable: Cүндерү
+ disabled: Cүндерелгән
+ enable: Кабызу
+ status: Халәт
+ reports:
+ comment:
+ none: Бернинди дә
+ notes:
+ create: Язу кушу
+ delete: Бетерү
+ status: Халәт
+ updated_at: Яңартылды
+ statuses:
+ batch:
+ delete: Бетерү
+ deleted: Бетерелде
+ media:
+ title: Медиа
+ warning_presets:
+ delete: Бетерү
+ application_mailer:
+ salutation: "%{name},"
+ auth:
+ change_password: Парол
+ login: Керү
+ providers:
+ cas: САS
+ saml: SАML
+ register: Теркәлү
+ security: Хәвефсезлек
+ authorize_follow:
+ follow: Язылу
+ challenge:
+ confirm: Дәвам итү
+ date:
+ formats:
+ default: "%d %b %Y"
+ with_month_name: "%d %B %Y"
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}сәг"
+ about_x_months: "%{count}ай"
+ half_a_minute: Хәзер генә
+ less_than_x_minutes: "%{count}м"
+ less_than_x_seconds: Хәзер генә
+ x_days: "%{count}к"
+ x_minutes: "%{count}м"
+ x_months: "%{count}ай"
+ x_seconds: "%{count}сек"
errors:
'400': The request you submitted was invalid or malformed.
'403': You don't have permission to view this page.
@@ -10,3 +151,107 @@ tt:
'429': Too many requests
'500':
'503': The page could not be served due to a temporary server failure.
+ exports:
+ archive_takeout:
+ date: Көне
+ size: Olılıq
+ bookmarks: Кыстыргычлар
+ csv: СSV
+ filters:
+ contexts:
+ thread: Әңгәмәләр
+ index:
+ delete: Бетерү
+ title: Сөзгечләр
+ footer:
+ more: Тагы…
+ generic:
+ all: Бөтенесе
+ copy: Күчереп алу
+ delete: Бетерү
+ imports:
+ types:
+ bookmarks: Кыстыргычлар
+ upload: Йөкләү
+ invites:
+ expired: Гамәлдән чыкты
+ expires_in:
+ '1800': 30 минут
+ '21600': 6 сәгать
+ '3600': 1 сәгать
+ '43200': 12 сәгать
+ '604800': 1 атна
+ '86400': 1 көн
+ expires_in_prompt: Беркайчан да
+ number:
+ human:
+ decimal_units:
+ format: "%n%u"
+ otp_authentication:
+ enable: Кабызу
+ pagination:
+ next: Киләсе
+ prev: Алдыгы
+ truncate: "…"
+ preferences:
+ other: Башка
+ relationships:
+ following: Язылгансыз
+ sessions:
+ browser: Браузер
+ browsers:
+ alipay: Аlipay
+ blackberry: Blаckberry
+ chrome: Chrоme
+ edge: Microsоft Edge
+ electron: Electrоn
+ firefox: Firеfox
+ ie: Internet Explоrer
+ micro_messenger: MicroMеssenger
+ nokia: Nokia S40 Ovi Brоwser
+ opera: Opеra
+ otter: Ottеr
+ phantom_js: PhаntomJS
+ qq: QQ Brоwser
+ safari: Safаri
+ uc_browser: UCBrоwser
+ weibo: Weibо
+ description: "%{browser} - %{platform}"
+ ip: ІР
+ platforms:
+ adobe_air: Adobе Air
+ android: Andrоid
+ chrome_os: ChromеOS
+ firefox_os: Firеfox OS
+ ios: iОS
+ linux: Lіnux
+ mac: macOS
+ windows: Windоws
+ windows_mobile: Windows Mоbile
+ windows_phone: Windоws Phone
+ settings:
+ account: Хисап язмасы
+ appearance: Küreneş
+ development: Эшләнмә
+ edit_profile: Профильны үзгәртү
+ import: Импортлау
+ preferences: Caylaw
+ profile: Профиль
+ statuses:
+ attached:
+ video:
+ other: "%{count} видео"
+ title: '%{name}: "%{quote}"'
+ time:
+ formats:
+ default: "%d %b %Y, %H:%M"
+ month: "%b %Y"
+ two_factor_authentication:
+ add: Өстәү
+ edit: Үзгәртү
+ user_mailer:
+ warning:
+ title:
+ none: Игътибар
+ webauthn_credentials:
+ delete: Бетерү
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index dee947dc6..6bbd67621 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -21,11 +21,11 @@ uk:
federation_hint_html: З обліковим записом на %{instance} ви зможете слідкувати за людьми на будь-якому сервері Mastodon та поза ним.
get_apps: Спробуйте мобільний додаток
hosted_on: Mastodon розміщено на %{domain}
- instance_actor_flash: 'Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену.
-
-'
+ instance_actor_flash: "Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену. \n"
learn_more: Дізнатися більше
privacy_policy: Політика приватності
+ rules: Правила сервера
+ rules_html: 'Внизу наведено підсумок правил, яких ви повинні дотримуватися, якщо хочете мати обліковий запис на цьому сервері Mastodon:'
see_whats_happening: Погляньте, що відбувається
server_stats: 'Статистика серверу:'
source_code: Вихідний код
@@ -66,6 +66,7 @@ uk:
one: Підписник
other: Підписників
following: Підписаний(-а)
+ instance_actor_flash: Цей обліковий запис є віртуальним персонажем, який використовується для показу самого сервера, а не будь-якого окремого користувача. Він використовується з метою федералізації і не повинен бути зупинений.
joined: Приєднався %{date}
last_active: остання активність
link_verified_on: Права власності на це посилання були перевірені %{date}
@@ -85,7 +86,6 @@ uk:
other: Дмухів
posts_tab_heading: Дмухи
posts_with_replies: Дмухи та відповіді
- reserved_username: Це ім'я користувача зарезервоване
roles:
admin: Адміністратор
bot: Бот
@@ -106,6 +106,7 @@ uk:
add_email_domain_block: Додати поштовий домен до чорного списку
approve: Схвалити
approve_all: Схвалити всіх
+ approved_msg: Заявку на реєстрацію %{username} затверджено
are_you_sure: Ви впевнені?
avatar: Аватар
by_domain: Домен
@@ -119,8 +120,10 @@ uk:
confirm: Зберегти
confirmed: Збережено
confirming: Зберігається
+ delete: Видалити дані
deleted: Видалено
demote: Усунути
+ destroyed_msg: Дані %{username} тепер в черзі на негайне видалення
disable: Вимкнути
disable_two_factor_authentication: Вимкнути двофакторну авторизацію
disabled: Вимкнено
@@ -131,10 +134,12 @@ uk:
email_status: Статус електронної пошти
enable: Увімкнути
enabled: Увімкнено
+ enabled_msg: Обліковий запис %{username} успішно розморожено
followers: Підписники
follows: Підписки
header: Заголовок
inbox_url: URL вхідних повідомлень
+ invite_request_text: Причини приєднатися
invited_by: 'Запросив:'
ip: IP
joined: Приєднався
@@ -146,6 +151,8 @@ uk:
login_status: Статус авторизації
media_attachments: Мультимедійні вкладення
memorialize: Зробити пам'ятником
+ memorialized: Перетворено на пам'ятник
+ memorialized_msg: "%{username} успішно перетворено на пам'ятний обліковий запис"
moderation:
active: Активний
all: Усі
@@ -166,10 +173,14 @@ uk:
public: Публічний
push_subscription_expires: Підписка PuSH спливає
redownload: Оновити аватар
+ redownloaded_msg: Профіль %{username} оновлено з джерела походження
reject: Відхилити
reject_all: Відхилити усе
+ rejected_msg: Заявку на реєстрацію %{username} відхилено
remove_avatar: Видалити аватар
remove_header: Видалити заголовок
+ removed_avatar_msg: Зображення користувача %{username} вилучено
+ removed_header_msg: Зображення обкладинки %{username} вилучено
resend_confirmation:
already_confirmed: Цей користувач уже підтверджений
send: Надіслати електронний лист-підтвердження ще раз
@@ -186,6 +197,8 @@ uk:
search: Пошук
search_same_email_domain: Інші користувачі з тим самим поштовим доменом
search_same_ip: Інші користувачі з тим самим IP
+ sensitive: Делікатне
+ sensitized: позначено делікатним
shared_inbox_url: URL спільного вхідного кошика
show:
created_reports: Скарги, створені цим акаунтом
@@ -195,13 +208,19 @@ uk:
statuses: Статуси
subscribe: Підписатися
suspended: Призупинені
+ suspension_irreversible: Дані цього облікового запису безповоротно видалено. Ви можете розблокувати обліковий запис, щоб могти ним користуватися, але будь-які його дані не відновляться.
+ suspension_reversible_hint_html: Обліковий запис заблоковано, а дані буде повністю вилучено %{date}. До цього часу обліковий запис можна відновити без будь-яких негативних наслідків. Якщо ви бажаєте вилучити всі дані облікового запису негайно, ви можете зробити це внизу.
time_in_queue: Очікує в черзі %{time}
title: Облікові записи
unconfirmed_email: Непідтверджена адреса електронної пошти
+ undo_sensitized: Скасувати позначення делікатним
undo_silenced: Зняти глушення
undo_suspension: Зняти призупинення
+ unsilenced_msg: Успішно знято обмеження з облікового запису %{username}
unsubscribe: Відписатися
+ unsuspended_msg: Обліковий запис %{username} успішно розблоковано
username: Ім'я користувача
+ view_domain: Переглянути резюме для домену
warn: Попередження
web: Веб
whitelisted: У білому списку
@@ -216,13 +235,17 @@ uk:
create_domain_allow: Створити дозвіл на домен
create_domain_block: Створити блокування домену
create_email_domain_block: Створити блокування поштового домену
+ create_ip_block: Створити правило IP
+ create_unavailable_domain: Створити недоступний домен
demote_user: Понизити користувача
destroy_announcement: Видалити оголошення
destroy_custom_emoji: Видалити користувацьке емодзі
destroy_domain_allow: Видалити дозвіл на домен
destroy_domain_block: Видалити блокування домену
destroy_email_domain_block: Видалити блокування поштового домену
+ destroy_ip_block: Видалити правило IP
destroy_status: Видалити пост
+ destroy_unavailable_domain: Видалити недоступний домен
disable_2fa_user: Вимкнути 2FA
disable_custom_emoji: Вимкнути користувацькі емодзі
disable_user: Відключити користувача
@@ -234,50 +257,60 @@ uk:
reopen_report: Перевідкрити скаргу
reset_password_user: Скинути пароль
resolve_report: Розв'язати скаргу
+ sensitive_account: Позначити делікатним медіа вашого облікового запису
silence_account: Заглушити обліковий запис
suspend_account: Призупинити обліковий запис
unassigned_report: Видалити скаргу
+ unsensitive_account: Прибрати позначку "делікатне" з медіа вашого облікового запису
unsilence_account: Розглушити обліковий запис
unsuspend_account: Розморозити обліковий запис
update_announcement: Оновити оголошення
update_custom_emoji: Оновити користувацькі емодзі
+ update_domain_block: Оновити блокування домену
update_status: Оновити статус
actions:
- assigned_to_self_report: "%{name} призначив(-ла) скаргу %{target} на себе"
- change_email_user: "%{name} змінив(-ла) поштову адресу користувача %{target}"
- confirm_user: "%{name} підтвердив(-ла) статус поштової адреси користувача %{target}"
- create_account_warning: "%{name} надіслав попередження до %{target}"
- create_announcement: "%{name} створив нове оголошення %{target}"
- create_custom_emoji: "%{name} вивантажив(-ла) нове емодзі %{target}"
- create_domain_allow: "%{name} додав(-ла) домен %{target} до білого списку"
- create_domain_block: "%{name} заблокував(-ла) домен %{target}"
- create_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до чорного списку"
- demote_user: "%{name} понизив(-ла) %{target}"
- destroy_announcement: "%{name} видалив оголошення %{target}"
- destroy_custom_emoji: "%{name} знищив(-ла) емодзі %{target}"
- destroy_domain_allow: "%{name} видалив(-ла) домен %{target} з білого списку"
- destroy_domain_block: "%{name} розблокував(-ла) домен %{target}"
- destroy_email_domain_block: "%{name} додав(-ла) поштовий домен %{target} до білого списку"
- destroy_status: "%{name} видалив(-ла) статус користувача %{target}"
- disable_2fa_user: "%{name} вимкнув(-ла) двофакторну авторизацію для користувача %{target}"
- disable_custom_emoji: "%{name} вимкнув(-ла) емодзі %{target}"
- disable_user: "%{name} заборонив(-ла) авторизацію користувачу %{target}"
- enable_custom_emoji: "%{name} увімкнув(-ла) емодзі %{target}"
- enable_user: "%{name} увімкнув(-ла) авторизацію користувачу %{target}"
- memorialize_account: "%{name} перетворив(-ла) обліковий запис %{target} на сторінку пам'яті"
- promote_user: "%{name} підвищив(-ла) користувача %{target}"
- remove_avatar_user: "%{name} прибрав(-ла) аватар користувача %{target}"
- reopen_report: "%{name} перевідкрив(-ла) скаргу %{target}"
- reset_password_user: "%{name} скинув(-ла) пароль користувача %{target}"
- resolve_report: "%{name} розв'язав(-ла) скаргу %{target}"
- silence_account: "%{name} заглушив(-ла) обліковий запис %{target}"
- suspend_account: "%{name} заморозив(-ла) обліковий запис %{target}"
- unassigned_report: "%{name} зняв(-ла) призначення скарги %{target}"
- unsilence_account: "%{name} розглушив(-ла) обліковий запис %{target}"
- unsuspend_account: "%{name} розморозив(-ла) обліковий запис %{target}"
- update_announcement: "%{name} оновив оголошення %{target}"
- update_custom_emoji: "%{name} оновив(-ла) емодзі %{target}"
- update_status: "%{name} змінив(-ла) статус користуача %{target}"
+ assigned_to_self_report_html: "%{name} створює скаргу %{target} на себе"
+ change_email_user_html: "%{name} змінює поштову адресу користувача %{target}"
+ confirm_user_html: "%{name} підтверджує стан поштової адреси користувача %{target}"
+ create_account_warning_html: "%{name} надсилає попередження до %{target}"
+ create_announcement_html: "%{name} створює нове оголошення %{target}"
+ create_custom_emoji_html: "%{name} завантажує нові емодзі %{target}"
+ create_domain_allow_html: "%{name} дозволяє федерацію з доменом %{target}"
+ create_domain_block_html: "%{name} блокує домен %{target}"
+ create_email_domain_block_html: "%{name} блокує домен електронної пошти %{target}"
+ create_ip_block_html: "%{name} створює правило для IP %{target}"
+ create_unavailable_domain_html: "%{name} зупиняє доставляння на домен %{target}"
+ demote_user_html: "%{name} понижує користувача %{target}"
+ destroy_announcement_html: "%{name} видаляє оголошення %{target}"
+ destroy_custom_emoji_html: "%{name} знищує емодзі %{target}"
+ destroy_domain_allow_html: "%{name} скасовує федерацію з доменом %{target}"
+ destroy_domain_block_html: "%{name} розблокує домен %{target}"
+ destroy_email_domain_block_html: "%{name} розблоковує домен електронної пошти %{target}"
+ destroy_ip_block_html: "%{name} видаляє правило для IP %{target}"
+ destroy_status_html: "%{name} видаляє статус %{target}"
+ destroy_unavailable_domain_html: "%{name} відновлює доставляння на домен %{target}"
+ disable_2fa_user_html: "%{name} вимикає двоетапну перевірку для користувача %{target}"
+ disable_custom_emoji_html: "%{name} вимикає емодзі %{target}"
+ disable_user_html: "%{name} вимикає вхід для користувача %{target}"
+ enable_custom_emoji_html: "%{name} вмикає емодзі %{target}"
+ enable_user_html: "%{name} вмикає вхід для користувача %{target}"
+ memorialize_account_html: "%{name} перетворює обліковий запис %{target} на сторінку пам'яті"
+ promote_user_html: "%{name} підвищує користувача %{target}"
+ remove_avatar_user_html: "%{name} прибирає аватар %{target}"
+ reopen_report_html: "%{name} знову відкриває звіт %{target}"
+ reset_password_user_html: "%{name} скидає пароль користувача %{target}"
+ resolve_report_html: "%{name} розв'язує скаргу %{target}"
+ sensitive_account_html: "%{name} позначає медіа від %{target} делікатним"
+ silence_account_html: "%{name} приглушує обліковий запис %{target}"
+ suspend_account_html: "%{name} заморожує обліковий запис %{target}"
+ unassigned_report_html: "%{name} прибирає призначення скарги %{target}"
+ unsensitive_account_html: '%{name} прибирає позначку "делікатне" з медіа від %{target}'
+ unsilence_account_html: "%{name} розглушує обліковий запис %{target}"
+ unsuspend_account_html: "%{name} розморожує обліковий запис %{target}"
+ update_announcement_html: "%{name} оновлює оголошення %{target}"
+ update_custom_emoji_html: "%{name} оновлює емодзі %{target}"
+ update_domain_block_html: "%{name} оновлює блокування домену для %{target}"
+ update_status_html: "%{name} змінює статус користувача %{target}"
deleted_status: "(видалений статус)"
empty: Не знайдено жодного журналу.
filter_by_action: Фільтрувати за дією
@@ -292,10 +325,12 @@ uk:
new:
create: Створити оголошення
title: Нове оголошення
+ publish: Опублікувати
published_msg: Оголошення успішно опубліковано!
scheduled_for: Заплановано на %{time}
scheduled_msg: Оголошення додано в чергу публікації!
title: Оголошення
+ unpublish: Скасувати публікацію
unpublished_msg: Оголошення успішно приховано!
updated_msg: Оголошення успішно оновлено!
custom_emojis:
@@ -340,7 +375,6 @@ uk:
feature_profile_directory: Каталог профілів
feature_registrations: Реєстрації
feature_relay: Ретранслятор дмухів між серверами
- feature_spam_check: Анти-спам
feature_timeline_preview: Передпоказ стрічки
features: Можливості
hidden_service: Федерація з прихованими сервісами
@@ -380,6 +414,8 @@ uk:
silence: Глушення
suspend: Блокування
title: Нове блокування домену
+ obfuscate: Сховати назву домена
+ obfuscate_hint: Частково приховувати доменне ім'я в списку, якщо ввімкнено показ списку обмежень домену
private_comment: Приватний коментар
private_comment_hint: Прокоментуйте обмеження для цього домену, а модератори прочитають.
public_comment: Публічний коментар
@@ -418,9 +454,37 @@ uk:
create: Додати домен
title: Нове блокування поштового домену
title: Чорний список поштових доменів
+ follow_recommendations:
+ description_html: "Слідувати рекомендаціям та допомогти новим користувачам швидко знайти цікавий вміст. Коли користувачі не взаємодіяли з іншими людьми достатньо, щоб сформувати персоналізовані рекомендації, радимо замість цього вказувати ці облікові записи. Вони щоденно переобчислюються з масиву облікових записів з найбільшою кількістю недавніх взаємодій і найбільшою кількістю місцевих підписників розраховується для цієї мови."
+ language: Для мови
+ status: Стан
+ suppress: Приховати поради щодо підписок
+ suppressed: Приховати
+ title: Поради щодо підписок
+ unsuppress: Відновити поради щодо підписок
instances:
+ back_to_all: Усі
+ back_to_limited: Обмежені
+ back_to_warning: Попередження
by_domain: Домен
+ delivery:
+ all: Усі
+ clear: Очистити помилки доставляння
+ restart: Перезапустити доставляння
+ stop: Припинити доставляння
+ title: Доставляння
+ unavailable: Недоступно
+ unavailable_message: Доставлення недоступне
+ warning: Попередження
+ warning_message:
+ few: Збій доставляння %{count} дні
+ many: Збій доставляння %{count} днів
+ one: Збій доставляння %{count} день
+ other: Збій доставляння %{count} днів
delivery_available: Доставлення доступне
+ delivery_error_days: Днів помилок доставляння
+ delivery_error_hint: Якщо доставляння неможливе впродовж %{count} днів, воно автоматично позначиться недоставленим.
+ empty: Доменів не знайдено.
known_accounts:
few: "%{count} відомих облікових записів"
many: "%{count} відомих облікових записів"
@@ -446,6 +510,21 @@ uk:
expired: Просрочено
title: Фільтр
title: Запрошення
+ ip_blocks:
+ add_new: Створити правило
+ created_msg: Нове правило IP успішно додано
+ delete: Видалити
+ expires_in:
+ '1209600': 2 тижні
+ '15778476': 6 місяців
+ '2629746': 1 місяць
+ '31556952': 1 рік
+ '86400': 1 день
+ '94670856': 3 роки
+ new:
+ title: Створити нове правило IP
+ no_ip_block_selected: Жодних правил IP не було змінено, оскільки жодного не було вибрано
+ title: Правила IP
pending_accounts:
title: Облікові записи у черзі (%{count})
relationships:
@@ -489,6 +568,8 @@ uk:
comment:
none: Немає
created_at: Створено
+ forwarded: Переслано
+ forwarded_to: Переслано до %{domain}
mark_as_resolved: Відмітити як вирішену
mark_as_unresolved: Відмітити як невирішену
notes:
@@ -508,6 +589,13 @@ uk:
unassign: Зняти призначення
unresolved: Невирішені
updated_at: Оновлені
+ rules:
+ add_new: Додати правило
+ delete: Видалити
+ description_html: Хоча більшість заявляє про прочитання та погодження з умовами обслуговування, як правило, люди не читають їх до появи проблеми. Спростіть перегляд правил вашого сервера, зробивши їх у вигляді маркованого списку. Спробуйте створити короткі та просі правила, але не розділяйте їх на багато окремих частин.
+ edit: Змінити правило
+ empty: Жодних правил сервера ще не визначено.
+ title: Правила сервера
settings:
activity_api_enabled:
desc_html: Кількість локальних постів, активних та нових користувачів у тижневих розрізах
@@ -531,8 +619,6 @@ uk:
users: Для авторизованих локальних користувачів
domain_blocks_rationale:
title: Обґрунтування
- enable_bootstrap_timeline_accounts:
- title: Увімкнути підписки за замовчуванням для нових користувачів
hero:
desc_html: Відображається на головній сторінці. Рекомендовано як мінімум 600x100 пікселів. Якщо не вказано, буде використано передпоказ інстанції
title: Банер інстанції
@@ -558,6 +644,9 @@ uk:
min_invite_role:
disabled: Ніхто
title: Дозволити запрошення від
+ require_invite_text:
+ desc_html: Якщо реєстрація вимагає власноручного затвердження, зробіть текстове поле «Чому ви хочете приєднатися?» обов'язковим, а не додатковим
+ title: Вимагати повідомлення причини приєднання від нових користувачів
registrations_mode:
modes:
approved: Для входу потрібне схвалення
@@ -585,9 +674,6 @@ uk:
Можете використовувати HTML теги
title: Особливі умови використання
site_title: Назва сайту
- spam_check_enabled:
- desc_html: Mastodon може автоматично глушити та автоматично звітувати про облікові записи, які надсилають повторні небажані повідомлення. Можливі хибно-позитивні спрацьовування.
- title: Автоматизація антиспаму
thumbnail:
desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів
title: Мініатюра інстанції
@@ -618,13 +704,18 @@ uk:
no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано
title: Статуси облікових записів
with_media: З медіа
+ system_checks:
+ database_schema_check:
+ message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми
+ rules_check:
+ action: Керування правилами сервера
+ message_html: Ви не визначили будь-які правила сервера.
+ sidekiq_process_check:
+ message_html: Не працює процес Sidekiq для %{value} черги. Перегляньте конфігурації вашого Sidekiq
tags:
accounts_today: Унікальних використань за сьогодні
accounts_week: Унікальних використань за тиждень
breakdown: Аналіз використання за сьогодні за джерелом
- context: Контекст
- directory: У каталозі
- in_directory: "%{count} у каталозі"
last_active: За активністю
most_popular: За популярністю
most_recent: За часом створення
@@ -641,6 +732,7 @@ uk:
add_new: Додати новий
delete: Видалити
edit_preset: Редагувати шаблон попередження
+ empty: Ви ще не визначили жодних попереджень.
title: Управління шаблонами попереджень
admin_mailer:
new_pending_account:
@@ -728,6 +820,7 @@ uk:
functional: Ваш обліковий запис повністю робочій.
pending: Ваша заява очікує на розгляд нашим персоналом. Це може зайняти деякий час. Ви отримаєте електронний лист, якщо ваша заява буде схвалена.
redirecting_to: Ваш обліковий запис наразі неактивний, тому що він перенаправлений до %{acct}.
+ too_fast: Форму подано занадто швидко, спробуйте ще раз.
trouble_logging_in: Проблема під час входу?
use_security_key: Використовувати ключ безпеки
authorize_follow:
@@ -819,6 +912,7 @@ uk:
request: Зробити запит на архів
size: Розмір
blocks: Список блокувань
+ bookmarks: Закладки
csv: CSV
domain_blocks: Блокування доменів
lists: Списки
@@ -888,6 +982,8 @@ uk:
status: Стан перевірки
view_proof: Переглянути доказ
imports:
+ errors:
+ over_rows_processing_limit: містить більше ніж %{count} рядків
modes:
merge: Злиття
merge_long: Зберегти існуючі записи та додати нові
@@ -897,6 +993,7 @@ uk:
success: Ваші дані були успішно загружені та будуть оброблені в найближчий момент
types:
blocking: Список блокувань
+ bookmarks: Закладки
domain_blocking: Список заблокованих сайтів
following: Підписки
muting: Список глушення
@@ -1005,10 +1102,14 @@ uk:
body: 'Вас згадав(-ла) %{name} в:'
subject: Вас згадав(-ла) %{name}
title: Нова згадка
+ poll:
+ subject: Опитування від %{name} завершено
reblog:
body: 'Ваш статус було передмухнуто %{name}:'
subject: "%{name} передмухнув(-ла) ваш статус"
title: Нове передмухування
+ status:
+ subject: "%{name} щойно опубліковано"
notifications:
email_events: Події, про які сповіщати електронною поштою
email_events_hint: 'Оберіть події, про які ви хочете отримувати сповіщення:'
@@ -1059,6 +1160,7 @@ uk:
relationships:
activity: Діяльність облікового запису
dormant: Неактивні
+ follow_selected_followers: Стежити за вибраними підписниками
followers: Підписники
following: Підписник(-ця)
invited: Запрошені
@@ -1156,8 +1258,6 @@ uk:
relationships: Підписки та підписники
two_factor_authentication: Двофакторна авторизація
webauthn_authentication: Ключі безпеки
- spam_check:
- spam_detected: Це автоматична скарга. Було виявлено спам.
statuses:
attached:
audio:
@@ -1206,10 +1306,13 @@ uk:
other: "%{count} голоси"
vote: Проголосувати
show_more: Розгорнути
+ show_newer: Показати новіші
+ show_older: Показати давніші
show_thread: Відкрити обговорення
sign_in_to_participate: Увійдіть, щоб брати участь у бесіді
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Особисто
private: Для підписників
private_long: Показувати тільки підписникам
public: Для всіх
@@ -1262,6 +1365,7 @@ uk:
warning:
explanation:
disable: Поки ваш обліковий запис заморожений, його дані залишаються незмінними. Проте ви не зможете виконувати будь-які дії над обліковим записом, доки його не буде розблоковано.
+ sensitive: Ваші завантажені медіа-файли та пов'язані медіа вважатимуться делікатними.
silence: Поки ваш обліковий запис обмежено, ваші дмухи на цьому сервері бачитимуть лише ті люди, які вже слідкують за вами, а вас може бути виключено з різних публічних списків. Тим не менш, інші можуть слідкувати за вами вручну.
suspend: Ваш обліковий запис було призупинено, а всі ваші дмухи і вивантажені медіафайли - безповоротно видалено з цього сервера та серверів, де ви мали послідовників.
get_in_touch: Ви можете відповісти на цей електронний лист, щоб зконтактувати з працівниками %{instance}.
@@ -1270,11 +1374,13 @@ uk:
subject:
disable: Ваш обліковий запис %{acct} було заморожено
none: Попередження для %{acct}
+ sensitive: Ваш обліковий запис %{acct} надсилав медіа позначені делікатними
silence: Ваш обліковий запис %{acct} було обмежено
suspend: Ваш обліковий запис %{acct} було призупинено
title:
disable: Обліковий запис заморожено
none: Попередження
+ sensitive: Ваші медіа позначено делікатними
silence: Ообліковий запис обмежено
suspend: Обліковий запис призупинено
welcome:
@@ -1295,11 +1401,8 @@ uk:
tips: Поради
title: Ласкаво просимо, %{name}!
users:
- blocked_email_provider: Цей поштовий провайдер не дозволений
follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей
generic_access_help_html: Не вдається отримати доступ до облікового запису? Ви можете зв'язатися з %{email} для допомоги
- invalid_email: Введена адреса e-mail неправильна
- invalid_email_mx: Вказана електронна адреса не існує
invalid_otp_token: Введено неправильний код
invalid_sign_in_token: Хибний код безпеки
otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email}
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index e11c9f308..34cc2988d 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -10,24 +10,24 @@ vi:
api: API
apps: Ứng dụng di động
apps_platforms: Lướt Mastodon trên iOS, Android và các nền tảng khác
- browse_directory: Tìm những người cùng chung sở thích
+ browse_directory: Bạn bè từ khắp mọi nơi trên thế giới
browse_local_posts: Xem những gì đang xảy ra
- browse_public_posts: Xem thử những tút công khai trên mạng Mastodon
+ browse_public_posts: Đọc thử những tút công khai trên Mastodon
contact: Liên lạc
contact_missing: Chưa thiết lập
contact_unavailable: N/A
discover_users: Thành viên
documentation: Tài liệu
- federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với mọi người trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa.
+ federation_hint_html: Đăng ký tài khoản %{instance} là bạn có thể giao tiếp với bất cứ ai trên bất kỳ máy chủ Mastodon nào và còn hơn thế nữa.
get_apps: Ứng dụng di động
hosted_on: "%{domain} vận hành nhờ Mastodon"
- instance_actor_flash: 'Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ.
-
-'
+ instance_actor_flash: "Đây là một tài khoản ảo được sử dụng để đại diện cho máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên chặn trừ khi bạn muốn chặn toàn bộ máy chủ. \n"
learn_more: Tìm hiểu
privacy_policy: Chính sách bảo mật
+ rules: Quy tắc máy chủ
+ rules_html: 'Bên dưới là những quy tắc của máy chủ Mastodon này, bạn phải đọc kỹ trước khi đăng ký:'
see_whats_happening: Dòng thời gian
- server_stats: 'Cộng đồng:'
+ server_stats: 'Thống kê:'
source_code: Mã nguồn
status_count_after:
other: tút
@@ -44,14 +44,14 @@ vi:
silenced_title: Những máy chủ bị ẩn
suspended: 'Những máy chủ sau sẽ không được xử lý, lưu trữ hoặc trao đổi nội dung. Mọi tương tác hoặc giao tiếp với người dùng từ các máy chủ này đều bị cấm:'
suspended_title: Những máy chủ bị vô hiệu hóa
- unavailable_content_html: Mastodon cho phép bạn xem nội dung và tương tác với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.
+ unavailable_content_html: Mastodon cho phép bạn tương tác nội dung và giao tiếp với người dùng từ bất kỳ máy chủ nào khác trong mạng liên hợp. Còn máy chủ này có những ngoại lệ riêng.
user_count_after:
other: người dùng
user_count_before: Nhà của
what_is_mastodon: Mastodon là gì?
accounts:
- choices_html: "%{name} vinh danh:"
- endorsements_hint: Bạn có thể vinh danh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web.
+ choices_html: "%{name} tôn vinh:"
+ endorsements_hint: Bạn có thể tôn vinh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web.
featured_tags_hint: Bạn có thể cho biết những hashtag thường dùng ở đây.
follow: Theo dõi
followers:
@@ -61,7 +61,7 @@ vi:
joined: Đã tham gia %{date}
last_active: online
link_verified_on: Liên kết này đã được xác thực quyền sở hữu vào %{date}
- media: Bộ sưu tập
+ media: Media
moved_html: "%{name} đã dời sang %{new_profile_link}:"
network_hidden: Dữ liệu đã bị ẩn
never_active: Chưa có
@@ -69,12 +69,11 @@ vi:
people_followed_by: Những người %{name} theo dõi
people_who_follow: Những người theo dõi %{name}
pin_errors:
- following: Để vinh danh người nào đó, bạn phải theo dõi họ trước
+ following: Để tôn vinh người nào đó, bạn phải theo dõi họ trước
posts:
other: Tút
posts_tab_heading: Tút
- posts_with_replies: Tương tác
- reserved_username: Tên này đã sử dụng rồi
+ posts_with_replies: Trả lời
roles:
admin: Quản trị viên
bot: Tài khoản Bot
@@ -87,10 +86,10 @@ vi:
action: Thực hiện hành động
title: Áp đặt kiểm duyệt với %{acct}
account_moderation_notes:
- create: Gửi tin nhắn kiểm duyệt
- created_msg: Gửi tin nhắn kiểm duyệt thành công!
+ create: Thêm ghi chú
+ created_msg: Thêm ghi chú kiểm duyệt thành công!
delete: Xóa bỏ
- destroyed_msg: Đã ghi chú kiểm duyệt xong!
+ destroyed_msg: Đã xóa ghi chú kiểm duyệt!
accounts:
add_email_domain_block: Chặn tên miền email
approve: Phê duyệt
@@ -181,7 +180,7 @@ vi:
roles:
admin: Quản trị viên
moderator: Kiểm duyệt viên
- staff: Đội ngũ quản lý
+ staff: Nhân viên
user: Người dùng
search: Tìm kiếm
search_same_email_domain: Tra cứu email
@@ -210,7 +209,7 @@ vi:
unsuspended_msg: Đã kích hoạt lại %{username} thành công
username: Tài khoản
view_domain: Xem mô tả tài khoản này
- warn: Cấm upload
+ warn: Cảnh cáo
web: Web
whitelisted: Danh sách trắng
action_logs:
@@ -225,6 +224,7 @@ vi:
create_domain_block: Chặn máy chủ
create_email_domain_block: Chặn tên miền email
create_ip_block: Chặn IP
+ create_unavailable_domain: Tạo máy chủ không khả dụng
demote_user: Xóa chức vụ
destroy_announcement: Xóa thông báo
destroy_custom_emoji: Xóa Emoji
@@ -233,6 +233,7 @@ vi:
destroy_email_domain_block: Bỏ chặn email
destroy_ip_block: Bỏ chặn IP
destroy_status: Xóa tút
+ destroy_unavailable_domain: Xóa máy chủ không khả dụng
disable_2fa_user: Xóa xác thực hai bước
disable_custom_emoji: Vô hiệu hóa Emoji
disable_user: Tạm khóa người dùng
@@ -256,46 +257,48 @@ vi:
update_domain_block: Cập nhật máy chủ chặn
update_status: Cập nhật tút
actions:
- assigned_to_self_report: "%{name} tự xử lý báo cáo %{target}"
- change_email_user: "%{name} đã thay đổi địa chỉ email cho %{target}"
- confirm_user: "%{name} xác nhận địa chỉ email của người dùng %{target}"
- create_account_warning: "%{name} đã gửi cảnh cáo %{target}"
- create_announcement: "%{name} tạo thông báo mới %{target}"
- create_custom_emoji: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}"
- create_domain_allow: "%{name} kích hoạt liên hợp với %{target}"
- create_domain_block: "%{name} chặn máy chủ %{target}"
- create_email_domain_block: "%{name} chặn tên miền email %{target}"
- create_ip_block: "%{name} đã chặn IP %{target}"
- demote_user: "%{name} đã xóa chức vụ %{target}"
- destroy_announcement: "%{name} xóa thông báo %{target}"
- destroy_custom_emoji: "%{name} đã xóa emoji %{target}"
- destroy_domain_allow: "%{name} đã xóa tên miền %{target} khỏi danh sách trắng"
- destroy_domain_block: "%{name} bỏ chặn máy chủ %{target}"
- destroy_email_domain_block: "%{name} bỏ chặn tên miền email %{target}"
- destroy_ip_block: "%{name} bỏ chặn IP %{target}"
- destroy_status: "%{name} đã xóa tút của %{target}"
- disable_2fa_user: "%{name} đã vô hiệu hóa xác thực hai bước của %{target}"
- disable_custom_emoji: "%{name} đã ẩn emoji %{target}"
- disable_user: "%{name} vô hiệu hóa đăng nhập %{target}"
- enable_custom_emoji: "%{name} cho phép Emoji %{target}"
- enable_user: "%{name} mở khóa cho người dùng %{target}"
- memorialize_account: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm"
- promote_user: "%{name} đã chỉ định chức vụ cho %{target}"
- remove_avatar_user: "%{name} đã xóa ảnh đại diện của %{target}"
- reopen_report: "%{name} mở lại báo cáo %{target}"
- reset_password_user: "%{name} đặt lại mật khẩu của người dùng %{target}"
- resolve_report: "%{name} đã giải quyết báo cáo %{target}"
- sensitive_account: "%{name} đánh dấu nội dung của %{target} là nhạy cảm"
- silence_account: "%{name} đã ẩn %{target}"
- suspend_account: "%{name} đã vô hiệu hóa %{target}"
- unassigned_report: "%{name} báo cáo chưa được chỉ định %{target}"
- unsensitive_account: "%{name} đánh dấu nội dung của %{target} là bình thường"
- unsilence_account: "%{name} đã bỏ ẩn %{target}"
- unsuspend_account: "%{name} đã ngừng vô hiệu hóa %{target}"
- update_announcement: "%{name} cập nhật thông báo cho %{target}"
- update_custom_emoji: "%{name} đã cập nhật biểu tượng cảm xúc %{target}"
- update_domain_block: "%{name} cập nhật chặn máy chủ %{target}"
- update_status: "%{name} cập nhật tút của %{target}"
+ assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}"
+ change_email_user_html: "%{name} đã thay đổi địa chỉ email cho %{target}"
+ confirm_user_html: "%{name} xác nhận địa chỉ email của người dùng %{target}"
+ create_account_warning_html: "%{name} đã gửi cảnh cáo %{target}"
+ create_announcement_html: "%{name} tạo thông báo mới %{target}"
+ create_custom_emoji_html: "%{name} đã tải lên biểu tượng cảm xúc mới %{target}"
+ create_domain_allow_html: "%{name} kích hoạt liên hợp với %{target}"
+ create_domain_block_html: "%{name} chặn máy chủ %{target}"
+ create_email_domain_block_html: "%{name} chặn tên miền email %{target}"
+ create_ip_block_html: "%{name} đã chặn IP %{target}"
+ create_unavailable_domain_html: "%{name} ngưng phân phối với máy chủ %{target}"
+ demote_user_html: "%{name} đã xóa chức vụ %{target}"
+ destroy_announcement_html: "%{name} xóa thông báo %{target}"
+ destroy_custom_emoji_html: "%{name} đã xóa emoji %{target}"
+ destroy_domain_allow_html: "%{name} đã ngừng liên hợp với %{target}"
+ destroy_domain_block_html: "%{name} bỏ chặn tên miền email %{target}"
+ destroy_email_domain_block_html: "%{name} bỏ chặn tên miền email %{target}"
+ destroy_ip_block_html: "%{name} bỏ chặn IP %{target}"
+ destroy_status_html: "%{name} đã xóa tút của %{target}"
+ destroy_unavailable_domain_html: "%{name} tiếp tục phân phối với máy chủ %{target}"
+ disable_2fa_user_html: "%{name} đã vô hiệu hóa xác thực hai bước của %{target}"
+ disable_custom_emoji_html: "%{name} đã ẩn emoji %{target}"
+ disable_user_html: "%{name} vô hiệu hóa đăng nhập %{target}"
+ enable_custom_emoji_html: "%{name} cho phép Emoji %{target}"
+ enable_user_html: "%{name} mở khóa cho người dùng %{target}"
+ memorialize_account_html: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm"
+ promote_user_html: "%{name} đã chỉ định chức vụ cho %{target}"
+ remove_avatar_user_html: "%{name} đã xóa ảnh đại diện của %{target}"
+ reopen_report_html: "%{name} mở lại báo cáo %{target}"
+ reset_password_user_html: "%{name} đặt lại mật khẩu của người dùng %{target}"
+ resolve_report_html: "%{name} đã xử lý báo cáo %{target}"
+ sensitive_account_html: "%{name} đánh dấu nội dung của %{target} là nhạy cảm"
+ silence_account_html: "%{name} đã ẩn %{target}"
+ suspend_account_html: "%{name} đã vô hiệu hóa %{target}"
+ unassigned_report_html: "%{name} đã xử lý báo cáo %{target} chưa xử lí"
+ unsensitive_account_html: "%{name} đánh dấu nội dung của %{target} là bình thường"
+ unsilence_account_html: "%{name} đã bỏ ẩn %{target}"
+ unsuspend_account_html: "%{name} đã ngừng vô hiệu hóa %{target}"
+ update_announcement_html: "%{name} cập nhật thông báo %{target}"
+ update_custom_emoji_html: "%{name} đã cập nhật emoji %{target}"
+ update_domain_block_html: "%{name} cập nhật chặn máy chủ %{target}"
+ update_status_html: "%{name} cập nhật tút của %{target}"
deleted_status: "(tút đã xóa)"
empty: Không tìm thấy bản ghi.
filter_by_action: Lọc theo hành động
@@ -310,10 +313,12 @@ vi:
new:
create: Tạo thông báo
title: Tạo thông báo mới
+ publish: Đăng
published_msg: Truyền đi thông báo thành công!
scheduled_for: Đã lên lịch %{time}
scheduled_msg: Thông báo đã lên lịch!
title: Thông báo
+ unpublish: Hủy đăng
unpublished_msg: Xóa bỏ thông báo thành xong!
updated_msg: Cập nhật thông báo thành công!
custom_emojis:
@@ -358,7 +363,6 @@ vi:
feature_profile_directory: Danh sách thành viên
feature_registrations: Đăng ký
feature_relay: Mạng liên hợp
- feature_spam_check: Chống thư rác
feature_timeline_preview: Xem trước bảng tin
features: Tính năng
hidden_service: Liên kết với các dịch vụ ẩn
@@ -393,7 +397,7 @@ vi:
create: Tạo chặn
hint: Chặn máy chủ sẽ không ngăn việc hiển thị tút của máy chủ đó trong cơ sở dữ liệu, nhưng sẽ khiến tự động áp dụng các phương pháp kiểm duyệt cụ thể trên các tài khoản đó.
severity:
- desc_html: "Ẩn sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không theo dõi họ. Vô hiệu hóa sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Dùng Cấm upload nếu bạn chỉ muốn cấm tải lên ảnh và video."
+ desc_html: "Ẩn sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không theo dõi họ. Vô hiệu hóa sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Dùng Cảnh cáo nếu bạn chỉ muốn cấm tải lên ảnh và video."
noop: Không hoạt động
silence: Ẩn
suspend: Vô hiệu hóa
@@ -435,9 +439,33 @@ vi:
create: Thêm địa chỉ
title: Chặn tên miền email mới
title: Tên miền email đã chặn
+ follow_recommendations:
+ description_html: "Gợi ý theo dõi là cách giúp những người dùng mới nhanh chóng tìm thấy những nội dung thú vị. Khi một người dùng chưa đủ tương tác với những người khác để hình thành các đề xuất theo dõi được cá nhân hóa, thì những tài khoản này sẽ được đề xuất. Nó bao gồm các tài khoản có số lượt tương tác gần đây cao nhất và số lượng người theo dõi cao nhất cho một ngôn ngữ nhất định trong máy chủ."
+ language: Theo ngôn ngữ
+ status: Trạng thái
+ suppress: Tắt gợi ý theo dõi
+ suppressed: Đã tắt
+ title: Gợi ý theo dõi
+ unsuppress: Mở lại gợi ý theo dõi
instances:
+ back_to_all: Toàn bộ
+ back_to_limited: Hạn chế
+ back_to_warning: Cảnh báo
by_domain: Máy chủ
+ delivery:
+ all: Toàn bộ
+ clear: Xóa phân phối lỗi
+ restart: Khởi động lại phân phối
+ stop: Ngưng phân phối
+ title: Phân phối
+ unavailable: Không khả dụng
+ unavailable_message: Không thể phân phối
+ warning: Cảnh báo
+ warning_message:
+ other: Phân phối thất bại %{count} ngày
delivery_available: Cho phép liên kết
+ delivery_error_days: Ngày lỗi phân phối
+ delivery_error_hint: Nếu không thể phân phối sau %{count} ngày, nó sẽ tự dộng đánh dấu là không thể phân phối.
empty: Không có máy chủ nào.
known_accounts:
other: "%{count} tài khoản đã biết"
@@ -452,7 +480,7 @@ vi:
total_followed_by_them: Được họ theo dõi
total_followed_by_us: Được quản trị viên theo dõi
total_reported: Toàn bộ báo cáo
- total_storage: Ảnh và video
+ total_storage: Media
invites:
deactivate_all: Vô hiệu hóa tất cả
filter:
@@ -497,8 +525,8 @@ vi:
status: Trạng thái hiện tại
title: Mạng liên hợp
report_notes:
- created_msg: Ghi chú kiểm duyệt đã tạo xong!
- destroyed_msg: Đã xóa báo cáo kiểm duyệt!
+ created_msg: Đã thêm ghi chú kiểm duyệt!
+ destroyed_msg: Đã xóa ghi chú kiểm duyệt!
reports:
account:
notes:
@@ -515,11 +543,11 @@ vi:
created_at: Báo cáo lúc
forwarded: Chuyển tiếp
forwarded_to: Chuyển tiếp tới %{domain}
- mark_as_resolved: Đánh dấu là đã giải quyết
- mark_as_unresolved: Đánh dấu là chưa giải quyết
+ mark_as_resolved: Đã xử lý xong!
+ mark_as_unresolved: Mở lại
notes:
- create: Bổ sung ghi chú
- create_and_resolve: Xử lý kiểm duyệt
+ create: Ghi chú
+ create_and_resolve: Xử lý
create_and_unresolve: Mở lại kèm ghi chú mới
delete: Xóa bỏ
placeholder: Mô tả vi phạm của người này, mức độ xử lý và những cập nhật liên quan khác...
@@ -528,18 +556,25 @@ vi:
reported_account: Tài khoản bị báo cáo
reported_by: Báo cáo bởi
resolved: Đã xử lý xong
- resolved_msg: Đã giải quyết báo cáo xong!
+ resolved_msg: Đã xử lý báo cáo xong!
status: Trạng thái
title: Báo cáo
unassign: Bỏ qua
unresolved: Chờ xử lý
updated_at: Cập nhật lúc
+ rules:
+ add_new: Thêm quy tắc
+ delete: Xóa bỏ
+ description_html: Mặc dù được yêu cầu chấp nhận điều khoản dịch vụ khi đăng ký, nhưng người dùng thường không đọc cho đến khi vấn đề gì đó xảy ra. Hãy làm điều này rõ ràng hơn bằng cách liệt kê quy tắc máy chủ theo gạch đầu dòng. Cố gắng viết ngắn và đơn giản, nhưng đừng tách ra quá nhiều mục.
+ edit: Sửa quy tắc
+ empty: Chưa có quy tắc máy chủ.
+ title: Quy tắc máy chủ
settings:
activity_api_enabled:
desc_html: Thu thập số lượng tút được đăng, người dùng hoạt động và người dùng đăng ký mới hàng tuần
- title: Công khai số liệu thống kê về hoạt động người dùng
+ title: Công khai số liệu thống kê về hoạt động người dùng trong API
bootstrap_timeline_accounts:
- desc_html: Tách tên người dùng bằng dấu phẩy. Chỉ có hiệu lực với các tài khoản công khai thuộc máy chủ. Mặc định khi trống là tất cả quản trị viên.
+ desc_html: Tách tên người dùng bằng dấu phẩy. Những người dùng này sẽ xuất hiện trong mục gợi ý theo dõi
title: Gợi ý theo dõi cho người dùng mới
contact_information:
email: Email liên hệ
@@ -557,9 +592,6 @@ vi:
users: Để đăng nhập người dùng cục bộ
domain_blocks_rationale:
title: Hiển thị lý do
- enable_bootstrap_timeline_accounts:
- desc_html: Thiết lập người mới đăng ký sẽ tự động theo dõi những tài khoản cho trước nhằm tránh việc bảng tin trống
- title: Gợi ý theo dõi cho người dùng mới
hero:
desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ
title: Hình ảnh giới thiệu
@@ -568,7 +600,7 @@ vi:
title: Logo máy chủ
peers_api_enabled:
desc_html: Tên miền mà máy chủ này đã kết giao trong mạng liên hợp
- title: Danh sách công khai các máy chủ được phát hiện
+ title: Công khai danh sách những máy chủ đã khám phá trong API
preview_sensitive_media:
desc_html: Liên kết xem trước trên các trang web khác sẽ hiển thị hình thu nhỏ ngay cả khi phương tiện được đánh dấu là nhạy cảm
title: Hiển thị phương tiện nhạy cảm trong bản xem trước OpenGraph
@@ -613,9 +645,6 @@ vi:
desc_html: Bạn có thể viết điều khoản dịch vụ, quyền riêng tư hoặc các vấn đề pháp lý khác. Dùng thẻ HTML
title: Điều khoản dịch vụ tùy chỉnh
site_title: Tên máy chủ
- spam_check_enabled:
- desc_html: Mastodon có thể tự động báo cáo các tài khoản gửi tin nhắn không mong muốn lặp đi lặp lại. Có thể có dương tính giả.
- title: Tự động chống thư rác
thumbnail:
desc_html: Bản xem trước thông qua OpenGraph và API. Khuyến nghị 1200x630px
title: Hình thu nhỏ của máy chủ
@@ -641,18 +670,23 @@ vi:
deleted: Đã xóa
failed_to_execute: Không thể thực thi
media:
- title: Bộ sưu tập
+ title: Media
no_media: Toàn bộ
no_status_selected: Bạn chưa chọn bất kỳ tút nào
title: Toàn bộ tút
- with_media: Có ảnh hoặc video
+ with_media: Có media
+ system_checks:
+ database_schema_check:
+ message_html: Có cơ sở dữ liệu đang chờ xử lý. Xin khởi động nó để ứng dụng có thể hoạt động một cách ổn định nhất
+ rules_check:
+ action: Sửa quy tắc máy chủ
+ message_html: Bạn chưa cập nhật quy tắc máy chủ.
+ sidekiq_process_check:
+ message_html: Sidekiq không hoạt động khi truy vấn %{value}. Hãy kiểm tra lại cấu hình Sidekiq
tags:
accounts_today: Sử dụng hôm nay
accounts_week: Sử dụng trong tuần
breakdown: Thống kê số lượt dùng hôm nay
- context: Bối cảnh
- directory: Có trên tiểu sử
- in_directory: "%{count} có trên tiểu sử"
last_active: Hôm nay
most_popular: Phổ biến nhất
most_recent: Gần đây
@@ -668,8 +702,9 @@ vi:
warning_presets:
add_new: Thêm mới
delete: Xóa bỏ
- edit_preset: Chỉnh sửa cảnh báo cài sẵn
- title: Quản lý cảnh báo cài sẵn
+ edit_preset: Sửa mẫu có sẵn
+ empty: Bạn chưa thêm mẫu có sẵn nào cả.
+ title: Quản lý mẫu cảnh cáo
admin_mailer:
new_pending_account:
body: Thông tin chi tiết của tài khoản mới ở phía dưới. Bạn có thể phê duyệt hoặc từ chối người này.
@@ -786,17 +821,17 @@ vi:
with_month_name: "%B %d, %Y"
datetime:
distance_in_words:
- about_x_hours: "%{count}h"
- about_x_months: "%{count}th"
- about_x_years: "%{count}y"
- almost_x_years: "%{count}y"
+ about_x_hours: "%{count} giờ"
+ about_x_months: "%{count} tháng"
+ about_x_years: "%{count} năm"
+ almost_x_years: "%{count} năm"
half_a_minute: Vừa xong
- less_than_x_minutes: "%{count}p"
+ less_than_x_minutes: "%{count} phút"
less_than_x_seconds: Vừa xong
- over_x_years: "%{count}y"
- x_days: "%{count}d"
- x_minutes: "%{count}p"
- x_months: "%{count}th"
+ over_x_years: "%{count} năm"
+ x_days: "%{count} ngày"
+ x_minutes: "%{count} phút"
+ x_months: "%{count} tháng"
x_seconds: "%{count}s"
deletes:
challenge_not_passed: Thông tin bạn nhập không chính xác
@@ -812,12 +847,12 @@ vi:
email_contact_html: Nếu vẫn không nhận được, bạn có thể liên hệ %{email} để được giúp đỡ
email_reconfirmation_html: Nếu bạn không nhận được email xác nhận, hãy thử yêu cầu lại
irreversible: Bạn sẽ không thể khôi phục hoặc kích hoạt lại tài khoản của mình
- more_details_html: Để biết thêm chi tiết, xem chính sách bảo mật.
+ more_details_html: Đọc chính sách bảo mật để biết thêm chi tiết.
username_available: Tên người dùng của bạn sẽ có thể đăng ký lại
username_unavailable: Tên người dùng của bạn sẽ không thể đăng ký mới
directories:
directory: Khám phá
- explanation: Tìm và theo dõi những người cùng sở thích
+ explanation: Tìm những người chung sở thích
explore_mastodon: Thành viên %{title}
domain_validator:
invalid_domain: không phải là một tên miền hợp lệ
@@ -848,7 +883,7 @@ vi:
request: Tải về dữ liệu của bạn
size: Dung lượng
blocks: Người bạn chặn
- bookmarks: Đã lưu
+ bookmarks: Tút đã lưu
csv: CSV
domain_blocks: Máy chủ bạn chặn
lists: Danh sách
@@ -926,7 +961,7 @@ vi:
success: Dữ liệu của bạn đã được tải lên thành công và hiện đang xử lý
types:
blocking: Danh sách chặn
- bookmarks: Đã lưu
+ bookmarks: Tút đã lưu
domain_blocking: Danh sách máy chủ đã chặn
following: Danh sách người theo dõi
muting: Danh sách người đã ẩn
@@ -968,13 +1003,13 @@ vi:
cancelled_msg: Đã hủy chuyển hướng xong.
errors:
already_moved: là tài khoản bạn đã dời sang rồi
- missing_also_known_as: không phải tham chiếu của tài khoản này
+ missing_also_known_as: chưa kết nối với tài khoản này
move_to_self: không thể là tài khoản hiện tại
not_found: không thể tìm thấy
on_cooldown: Bạn đang trong thời gian chiêu hồi
followers_count: Số người theo dõi tại thời điểm chuyển hướng
incoming_migrations: Chuyển từ một tài khoản khác
- incoming_migrations_html: Để chuyển từ tài khoản khác sang tài khoản này, trước tiên bạn cần tạo tham chiếu tài khoản.
+ incoming_migrations_html: Để chuyển từ tài khoản khác sang tài khoản này, trước tiên bạn cần kết nối tài khoản.
moved_msg: Tài khoản của bạn hiện đang chuyển hướng đến %{acct} và những người theo dõi bạn cũng sẽ được chuyển đi.
not_redirecting: Tài khoản của bạn hiện không chuyển hướng đến bất kỳ tài khoản nào khác.
on_cooldown: Bạn vừa mới chuyển tài khoản của bạn đi nơi khác. Chỉ có thể sử dụng tiếp tính năng này sau %{count} ngày.
@@ -1026,10 +1061,14 @@ vi:
body: 'Bạn vừa được nhắc đến bởi %{name} trong:'
subject: Bạn vừa được nhắc đến bởi %{name}
title: Lượt nhắc mới
+ poll:
+ subject: Cuộc bình chọn của %{name} kết thúc
reblog:
body: Tút của bạn vừa được chia sẻ bởi %{name}
subject: "%{name} vừa chia sẻ tút của bạn"
title: Lượt chia sẻ mới
+ status:
+ subject: Bài đăng mới từ %{name}
notifications:
email_events: Email
email_events_hint: 'Chọn những hoạt động sẽ gửi thông báo qua email:'
@@ -1071,15 +1110,15 @@ vi:
too_many_options: tối đa %{max} lựa chọn
preferences:
other: Khác
- posting_defaults: Trạng thái tút mặc định
- public_timelines: Bảng tin công khai
+ posting_defaults: Mặc định cho tút
+ public_timelines: Bảng tin máy chủ
reactions:
errors:
limit_reached: Bạn không nên thao tác liên tục
unrecognized_emoji: không phải là emoji
relationships:
- activity: Hoạt động tài khoản
- dormant: Chưa tương tác
+ activity: Tương tác
+ dormant: Chưa
follow_selected_followers: Theo dõi những người đã chọn
followers: Người theo dõi
following: Đang theo dõi
@@ -1089,7 +1128,7 @@ vi:
moved: Đã xóa
mutual: Đồng thời
primary: Bình thường
- relationship: Mối quan hệ
+ relationship: Quan hệ
remove_selected_domains: Xóa hết người theo dõi từ các máy chủ đã chọn
remove_selected_followers: Xóa những người theo dõi đã chọn
remove_selected_follows: Ngưng theo dõi những người đã chọn
@@ -1122,7 +1161,7 @@ vi:
alipay: Alipay
blackberry: Blackberry
chrome: Chrome
- edge: Microsoft Edge
+ edge: Edge
electron: Electron
firefox: Firefox
generic: Trình duyệt khác
@@ -1165,7 +1204,7 @@ vi:
back: Quay lại Mastodon
delete: Xóa tài khoản
development: Lập trình
- edit_profile: Cá nhân hóa
+ edit_profile: Trang cá nhân
export: Xuất dữ liệu
featured_tags: Hashtags thường dùng
identity_proofs: Bằng chứng nhận dạng
@@ -1175,11 +1214,9 @@ vi:
notifications: Thông báo
preferences: Chung
profile: Trang cá nhân
- relationships: Lượt theo dõi
+ relationships: Quan hệ
two_factor_authentication: Xác thực hai bước
webauthn_authentication: Khóa bảo mật
- spam_check:
- spam_detected: Đây là một báo cáo tự động. Đã phát hiện thư rác.
statuses:
attached:
audio:
@@ -1196,7 +1233,7 @@ vi:
errors:
in_reply_not_found: Bạn đang trả lời một tút không còn tồn tại.
language_detection: Tự động phát hiện ngôn ngữ
- open_in_web: Xem trong Mastodon
+ open_in_web: Xem trong web
over_character_limit: vượt quá giới hạn %{max} ký tự
pin_errors:
limit: Bạn đã ghim quá số lượng tút cho phép
@@ -1205,19 +1242,20 @@ vi:
reblog: Không thể ghim chia sẻ
poll:
total_people:
- other: "%{count} người"
+ other: "%{count} người bình chọn"
total_votes:
- other: "%{count} người"
+ other: "%{count} người bình chọn"
vote: Bình chọn
show_more: Đọc thêm
show_newer: Mới hơn
show_older: Cũ hơn
- show_thread: Toàn bộ chủ đề
- sign_in_to_participate: Đăng nhập để trả lời chủ đề này
+ show_thread: Toàn chủ đề
+ sign_in_to_participate: Đăng nhập để trả lời tút này
title: '%{name}: "%{quote}"'
visibilities:
+ direct: Nhắn tin
private: Người theo dõi
- private_long: Chỉ người theo dõi mới xem được tút
+ private_long: Chỉ người theo dõi mới được xem
public: Công khai
public_long: Ai cũng có thể thấy
unlisted: Riêng tư
@@ -1234,9 +1272,9 @@ vi:
Chúng tôi thu thập những thông tin gì?
-
Chúng tôi sử dụng thông tin của bạn để làm gì?
@@ -1256,12 +1294,12 @@ vi:
Chúng tôi có sử dụng cookie không?
Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?
Cấm trẻ em sử dụng
-
Cập nhật thay đổi
rel="me". Nội dung văn bản của liên kết không quan trọng. Đây là một ví dụ:'
+ explanation_html: 'Bạn có thể xác minh mình là chủ sở hữu của các trang web ở đầu trang cá nhân của bạn. Để xác minh, trang web phải chèn mã rel="me". Văn bản thay thế cho liên kết không quan trọng. Đây là một ví dụ:'
verification: Xác minh
webauthn_credentials:
add: Thêm khóa bảo mật mới
diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml
index 0123836ec..5893d0c8a 100644
--- a/config/locales/zgh.yml
+++ b/config/locales/zgh.yml
@@ -2,7 +2,6 @@
zgh:
about:
about_this: ⵖⴼ
- api: API
contact: ⴰⵎⵢⴰⵡⴰⴹ
learn_more: ⵙⵙⵏ ⵓⴳⴳⴰⵔ
status_count_after:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 25e686955..b9c07bd29 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -18,14 +18,14 @@ zh-CN:
contact_unavailable: 未公开
discover_users: 发现用户
documentation: 文档
- federation_hint_html: 在%{instance} 上拥有账号后,你可以关注任何 Mastodon 服务器或其他服务器上的人。
+ federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容Mastodon的服务器上的人。
get_apps: 尝试移动应用
hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例
- instance_actor_flash: '这个账号是个虚拟帐号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。
-
-'
+ instance_actor_flash: "这个账号是个虚拟帐号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。 \n"
learn_more: 了解详情
privacy_policy: 隐私政策
+ rules: 服务器规则
+ rules_html: 如果你想要在此Mastodon服务器上拥有一个账户,你必须遵守相应的规则,摘要如下:
see_whats_happening: 看一看现在在发生什么
server_stats: 服务器统计数据:
source_code: 源代码
@@ -51,8 +51,8 @@ zh-CN:
what_is_mastodon: Mastodon 是什么?
accounts:
choices_html: "%{name} 的推荐:"
- endorsements_hint: 您可以在web界面上推荐你关注的人,他们会出现在这里。
- featured_tags_hint: 您可以精选一些话题标签展示在这里。
+ endorsements_hint: 你可以在web界面上推荐你关注的人,他们会显示在这里。
+ featured_tags_hint: 你可以精选一些话题标签展示在这里。
follow: 关注
followers:
other: 关注者
@@ -69,12 +69,11 @@ zh-CN:
people_followed_by: "%{name} 关注的人"
people_who_follow: 关注 %{name} 的人
pin_errors:
- following: 您必须关注您要推荐的人
+ following: 你必须关注你要推荐的人
posts:
other: 嘟文
posts_tab_heading: 嘟文
posts_with_replies: 嘟文和回复
- reserved_username: 此用户名已被保留
roles:
admin: 管理员
bot: 机器人
@@ -113,17 +112,17 @@ zh-CN:
deleted: 已删除
demote: 降任
destroyed_msg: "%{username} 的数据已进入等待队列,即将被删除"
- disable: 停用
+ disable: 冻结
disable_two_factor_authentication: 停用双重认证
- disabled: 已停用
+ disabled: 已冻结
display_name: 昵称
domain: 域名
edit: 编辑
email: 电子邮件地址
email_status: 电子邮件地址状态
- enable: 启用
+ enable: 解冻
enabled: 已启用
- enabled_msg: 成功启用 %{username} 的帐号
+ enabled_msg: 成功解冻 %{username} 的帐号
followers: 关注者
follows: 正在关注
header: 个人资料页横幅图片
@@ -197,15 +196,15 @@ zh-CN:
statuses: 嘟文
subscribe: 订阅
suspended: 已封禁
- suspension_irreversible: 该帐号的数据已被不可逆转地删除。您可以取消暂停该帐号以使其可用,但它不会恢复以前拥有的任何数据。
- suspension_reversible_hint_html: 帐号已封禁,数据将在 %{date} 完全删除。 在此之前,帐号仍可恢复,并且没有任何不良影响。 如果您想立即移除该帐号的所有数据,可以在下面进行。
+ suspension_irreversible: 该帐号的数据已被不可逆转地删除。你可以取消暂停该帐号以使其可用,但它不会恢复以前拥有的任何数据。
+ suspension_reversible_hint_html: 帐号已封禁,数据将在 %{date} 完全删除。 在此之前,帐号仍可恢复,并且没有任何不良影响。 如果你想立即移除该帐号的所有数据,可以在下面进行。
time_in_queue: 已经等待了 %{time}
title: 用户
unconfirmed_email: 待验证的电子邮件地址
undo_sensitized: 去除敏感内容标记
undo_silenced: 解除隐藏
undo_suspension: 解除封禁
- unsilenced_msg: 成功解除 %{username} 的帐号限制
+ unsilenced_msg: 成功解除对 %{username} 的隐藏
unsubscribe: 取消订阅
unsuspended_msg: 已成功取消封禁 %{username} 的帐号
username: 用户名
@@ -225,6 +224,7 @@ zh-CN:
create_domain_block: 封禁新域名
create_email_domain_block: 封禁电子邮箱域名
create_ip_block: 新建 IP 规则
+ create_unavailable_domain: 创建不可用域名
demote_user: 给用户降职
destroy_announcement: 删除公告
destroy_custom_emoji: 删除自定义表情符号
@@ -233,6 +233,7 @@ zh-CN:
destroy_email_domain_block: 解除电子邮箱域名封禁
destroy_ip_block: 删除 IP 规则
destroy_status: 删除嘟文
+ destroy_unavailable_domain: 删除不可用域名
disable_2fa_user: 禁用双重认证
disable_custom_emoji: 禁用自定义表情符号
disable_user: 禁用用户
@@ -256,46 +257,48 @@ zh-CN:
update_domain_block: 更新域名屏蔽
update_status: 更新嘟文
actions:
- assigned_to_self_report: "%{name} 接管了举报 %{target}"
- change_email_user: "%{name} 更改了用户 %{target} 的电子邮件地址"
- confirm_user: "%{name} 确认了用户 %{target} 的电子邮件地址"
- create_account_warning: "%{name} 向 %{target} 发送了警告"
- create_announcement: "%{name} 创建了新公告 %{target}"
- create_custom_emoji: "%{name} 添加了新的自定义表情 %{target}"
- create_domain_allow: "%{name} 允许了和域名 %{target} 的跨站交互"
- create_domain_block: "%{name} 屏蔽了域名 %{target}"
- create_email_domain_block: "%{name} 屏蔽了电子邮件域名 %{target}"
- create_ip_block: "%{name} 为 IP %{target} 创建了规则"
- demote_user: "%{name} 对用户 %{target} 进行了降任操作"
- destroy_announcement: "%{name} 删除了公告 %{target}"
- destroy_custom_emoji: "%{name} 销毁了自定义表情 %{target}"
- destroy_domain_allow: "%{name} 拒绝了和 %{target} 跨站交互"
- destroy_domain_block: "%{name} 解除了对域名 %{target} 的屏蔽"
- destroy_email_domain_block: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽"
- destroy_ip_block: "%{name} 删除了 IP %{target} 的规则"
- destroy_status: "%{name} 删除了 %{target} 的嘟文"
- disable_2fa_user: "%{name} 停用了用户 %{target} 的双重认证"
- disable_custom_emoji: "%{name} 停用了自定义表情 %{target}"
- disable_user: "%{name} 将用户 %{target} 设置为禁止登录"
- enable_custom_emoji: "%{name} 启用了自定义表情 %{target}"
- enable_user: "%{name} 将用户 %{target} 设置为允许登录"
- memorialize_account: "%{name} 将 %{target} 设置为追悼帐户"
- promote_user: "%{name} 对用户 %{target} 进行了升任操作"
- remove_avatar_user: "%{name} 删除了 %{target} 的头像"
- reopen_report: "%{name} 重开了举报 %{target}"
- reset_password_user: "%{name} 重置了用户 %{target} 的密码"
- resolve_report: "%{name} 处理了举报 %{target}"
- sensitive_account: "%{name} 将 %{target} 的媒体标记为敏感内容"
- silence_account: "%{name} 隐藏了用户 %{target}"
- suspend_account: "%{name} 封禁了用户 %{target}"
- unassigned_report: "%{name} 放弃了举报 %{target} 的接管"
- unsensitive_account: "%{name} 去除了 %{target} 媒体的敏感内容标记"
- unsilence_account: "%{name} 解除了用户 %{target} 的隐藏状态"
- unsuspend_account: "%{name} 解除了用户 %{target} 的封禁状态"
- update_announcement: "%{name} 更新了公告 %{target}"
- update_custom_emoji: "%{name} 更新了自定义表情 %{target}"
- update_domain_block: "%{name} 更新了对 %{target} 的域名屏蔽"
- update_status: "%{name} 刷新了 %{target} 的嘟文"
+ assigned_to_self_report_html: "%{name} 接管了举报 %{target}"
+ change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址"
+ confirm_user_html: "%{name} 确认了用户 %{target} 的电子邮件地址"
+ create_account_warning_html: "%{name} 向 %{target} 发送了警告"
+ create_announcement_html: "%{name} 创建了新公告 %{target}"
+ create_custom_emoji_html: "%{name} 添加了新的自定义表情 %{target}"
+ create_domain_allow_html: "%{name} 允许了和域名 %{target} 的跨站交互"
+ create_domain_block_html: "%{name} 屏蔽了域名 %{target}"
+ create_email_domain_block_html: "%{name} 屏蔽了电子邮件域名 %{target}"
+ create_ip_block_html: "%{name} 为 IP %{target} 创建了规则"
+ create_unavailable_domain_html: "%{name} 停止了向域名 %{target} 的投递"
+ demote_user_html: "%{name} 对用户 %{target} 进行了降任操作"
+ destroy_announcement_html: "%{name} 删除了公告 %{target}"
+ destroy_custom_emoji_html: "%{name} 销毁了自定义表情 %{target}"
+ destroy_domain_allow_html: "%{name} 拒绝了和 %{target} 跨站交互"
+ destroy_domain_block_html: "%{name} 解除了对域名 %{target} 的屏蔽"
+ destroy_email_domain_block_html: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽"
+ destroy_ip_block_html: "%{name} 删除了 IP %{target} 的规则"
+ destroy_status_html: "%{name} 删除了 %{target} 的嘟文"
+ destroy_unavailable_domain_html: "%{name} 恢复了向域名 %{target} 的投递"
+ disable_2fa_user_html: "%{name} 停用了用户 %{target} 的双重认证"
+ disable_custom_emoji_html: "%{name} 停用了自定义表情 %{target}"
+ disable_user_html: "%{name} 将用户 %{target} 设置为禁止登录"
+ enable_custom_emoji_html: "%{name} 启用了自定义表情 %{target}"
+ enable_user_html: "%{name} 将用户 %{target} 设置为允许登录"
+ memorialize_account_html: "%{name} 将 %{target} 设置为追悼帐户"
+ promote_user_html: "%{name} 对用户 %{target} 进行了升任操作"
+ remove_avatar_user_html: "%{name} 删除了 %{target} 的头像"
+ reopen_report_html: "%{name} 重开了举报 %{target}"
+ reset_password_user_html: "%{name} 重置了用户 %{target} 的密码"
+ resolve_report_html: "%{name} 处理了举报 %{target}"
+ sensitive_account_html: "%{name} 将 %{target} 的媒体标记为敏感内容"
+ silence_account_html: "%{name} 隐藏了用户 %{target}"
+ suspend_account_html: "%{name} 封禁了用户 %{target}"
+ unassigned_report_html: "%{name} 放弃接管举报 %{target}"
+ unsensitive_account_html: "%{name} 去除了 %{target} 的媒体的敏感内容标记"
+ unsilence_account_html: "%{name} 解除了用户 %{target} 的隐藏状态"
+ unsuspend_account_html: "%{name} 解除了用户 %{target} 的封禁状态"
+ update_announcement_html: "%{name} 更新了公告 %{target}"
+ update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}"
+ update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽"
+ update_status_html: "%{name} 刷新了 %{target} 的嘟文"
deleted_status: "(嘟文已删除)"
empty: 没有找到日志
filter_by_action: 根据行为过滤
@@ -310,10 +313,12 @@ zh-CN:
new:
create: 创建公告
title: 新公告
+ publish: 发布
published_msg: 公告已发布!
scheduled_for: 定时在 %{time}
scheduled_msg: 定时公告已创建!
title: 公告
+ unpublish: 取消发布
unpublished_msg: 公告已取消发布!
updated_msg: 公告已成功更新!
custom_emojis:
@@ -338,7 +343,7 @@ zh-CN:
listed: 已显示
new:
title: 添加新的自定义表情
- not_permitted: 您没有权限进行此操作
+ not_permitted: 你没有权限进行此操作
overwrite: 覆盖
shortcode: 短代码
shortcode_hint: 至少 2 个字符,只能使用字母、数字和下划线
@@ -358,7 +363,6 @@ zh-CN:
feature_profile_directory: 用户目录
feature_registrations: 公开注册
feature_relay: 联邦中继站
- feature_spam_check: 反垃圾
feature_timeline_preview: 时间轴预览
features: 功能
hidden_service: 匿名服务连通性
@@ -388,15 +392,15 @@ zh-CN:
destroyed_msg: 域名屏蔽已撤销
domain: 域名
edit: 编辑域名屏蔽
- existing_domain_block_html: 您已经对 %{name} 施加了更严格的限制,您需要先 解封。
+ existing_domain_block_html: 你已经对 %{name} 施加了更严格的限制,你需要先 解封。
new:
create: 添加屏蔽
hint: 域名屏蔽不会阻止该域名下的帐户进入本站的数据库,但是会对来自这个域名的帐户自动进行预先设置的管理操作。
severity:
- desc_html: 选择自动隐藏会将该域名下帐户发送的嘟文设置为仅关注者可见;选择自动封禁会将该域名下帐户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择无。
+ desc_html: 选择隐藏会将该域名下帐户发送的嘟文设置为仅关注者可见;选择封禁会将该域名下帐户发送的嘟文、媒体文件以及个人资料数据从本实例上删除;如果你只是想拒绝接收来自该域名的任何媒体文件,请选择无。
noop: 无
- silence: 自动隐藏
- suspend: 自动封禁
+ silence: 隐藏
+ suspend: 封禁
title: 新增域名屏蔽
obfuscate: 混淆域名
obfuscate_hint: 如果启用了域名列表公开限制,就部分混淆列表中的域名
@@ -435,9 +439,33 @@ zh-CN:
create: 添加域名
title: 添加电子邮件域名屏蔽
title: 电子邮件域名屏蔽
+ follow_recommendations:
+ description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账户。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。"
+ language: 选择语言
+ status: 嘟文
+ suppress: 禁用推荐关注
+ suppressed: 已禁用
+ title: 关注推荐
+ unsuppress: 恢复推荐关注
instances:
+ back_to_all: 全部
+ back_to_limited: 受限
+ back_to_warning: 警告
by_domain: 域名
+ delivery:
+ all: 全部
+ clear: 清理投递错误
+ restart: 重新投递
+ stop: 停止投递
+ title: 投递
+ unavailable: 不可用
+ unavailable_message: 投递不可用
+ warning: 警告
+ warning_message:
+ other: 投递已失败 %{count} 天
delivery_available: 可投递
+ delivery_error_days: 投递错误天数
+ delivery_error_hint: 如果投递已不可用 %{count} 天,它将被自动标记为无法投递。
empty: 暂无域名。
known_accounts:
other: "%{count} 个已知帐户"
@@ -534,6 +562,13 @@ zh-CN:
unassign: 取消接管
unresolved: 未处理
updated_at: 更新时间
+ rules:
+ add_new: 添加规则
+ delete: 删除
+ description_html: 虽然大多数人都声称已经阅读并同意服务条款,但通常人们只有在出现问题后才会阅读。所以写一个简单的要点列表吧,能让大家一目了然。试着让每条规则尽量简单明了,但也别分出太多条目来。
+ edit: 编辑规则
+ empty: 尚未定义服务器规则。
+ title: 实例规则
settings:
activity_api_enabled:
desc_html: 本站一周内的嘟文数、活跃用户数以及新用户数
@@ -557,9 +592,6 @@ zh-CN:
users: 对本地已登录用户
domain_blocks_rationale:
title: 显示理由
- enable_bootstrap_timeline_accounts:
- desc_html: 让新用户自动关注指定用户,这样,他们的主页时间线就不会在一开始的时候空空荡荡
- title: 开启新用户默认关注功能
hero:
desc_html: 将用于在首页展示。推荐使用分辨率 600×100px 以上的图片。如未设置,将默认使用本站缩略图。
title: 主题图片
@@ -613,9 +645,6 @@ zh-CN:
desc_html: 可以填写自己的隐私权政策、使用条款或其他法律文本。可以使用 HTML 标签
title: 自定义使用条款
site_title: 本站名称
- spam_check_enabled:
- desc_html: Mastodon可以自动隐藏和举报重复发送垃圾消息的帐号。但是本功能有可能误伤无辜。
- title: 自动反垃圾
thumbnail:
desc_html: 用于在 OpenGraph 和 API 中显示预览图。推荐分辨率 1200×630px
title: 本站缩略图
@@ -646,13 +675,18 @@ zh-CN:
no_status_selected: 因为没有嘟文被选中,所以没有更改
title: 帐户嘟文
with_media: 含有媒体文件
+ system_checks:
+ database_schema_check:
+ message_html: 有待处理的数据库迁移。请运行它们以确保应用程序正常运行。
+ rules_check:
+ action: 管理服务器规则
+ message_html: 你没有定义任何服务器规则。
+ sidekiq_process_check:
+ message_html: "%{value} 队列未运行任何 Sidekiq 进程。请检查你的 Sidekiq 配置"
tags:
accounts_today: 今日活跃用户
accounts_week: 本周活跃用户
breakdown: 按来源分类今天的使用情况
- context: 上下文
- directory: 在目录中
- in_directory: 目录中 %{count} 条
last_active: 最近活动
most_popular: 最热门的
most_recent: 最近的
@@ -669,10 +703,11 @@ zh-CN:
add_new: 添加新条目
delete: 删除
edit_preset: 编辑预置警告
+ empty: 你尚未定义任何警告预设。
title: 管理预设警告
admin_mailer:
new_pending_account:
- body: 新帐户的详细信息如下。您可以批准或拒绝此申请。
+ body: 新帐户的详细信息如下。你可以批准或拒绝此申请。
subject: 在 %{instance} 上有新帐号 ( %{username}) 需要审核
new_report:
body: "%{reporter} 举报了用户 %{target}"
@@ -683,13 +718,13 @@ zh-CN:
subject: 在 %{instance} 有新话题 (#%{name}) 待审核
aliases:
add_new: 创建别名
- created_msg: 成功创建了一个新别名。您现在可以从旧账户开始迁移了。
+ created_msg: 成功创建了一个新别名。你现在可以从旧账户开始迁移了。
deleted_msg: 成功移除别名。已经无法从该帐户移动到此帐户了。
empty: 你没有设置别名
hint_html: 如果你想把另一个帐号迁移到这里,你可以先在这里创建一个别名。如果你想把关注者迁移过来,这一步是必须的。设置别名的操作时无害而且可以恢复的。帐号迁移的操作会从旧帐号开始。
remove: 取消关联别名
appearance:
- advanced_web_interface: 高级 web 界面
+ advanced_web_interface: 高级web界面
advanced_web_interface_hint: 如果你想使用整个屏幕宽度,高级 web 界面允许您配置多个不同的栏目,可以同时看到更多的信息:主页、通知、跨站时间轴、任意数量的列表和话题标签。
animations_and_accessibility: 动画和访问选项
confirmation_dialogs: 确认对话框
@@ -723,15 +758,15 @@ zh-CN:
delete_account: 删除帐户
delete_account_html: 如果你想删除你的帐户,请点击这里继续。你需要确认你的操作。
description:
- prefix_invited_by_user: "@%{name} 邀请您加入这个Mastodon服务器!"
+ prefix_invited_by_user: "@%{name} 邀请你加入这个Mastodon服务器!"
prefix_sign_up: 现在就注册 Mastodon!
suffix: 注册一个帐号,你就可以关注别人、发布嘟文、并和其它任何Mastodon服务器上的用户交流,而且还有其它更多功能!
didnt_get_confirmation: 没有收到确认邮件?
- dont_have_your_security_key: 没有您的安全密钥?
+ dont_have_your_security_key: 没有你的安全密钥?
forgot_password: 忘记密码?
invalid_reset_password_token: 密码重置令牌无效或已过期。请重新发起重置密码请求。
link_to_otp: 输入从手机中获得的两步验证代码或恢复代码
- link_to_webauth: 使用您的安全密钥设备
+ link_to_webauth: 使用你的安全密钥设备
login: 登录
logout: 登出
migrate_account: 迁移到另一个帐户
@@ -753,9 +788,9 @@ zh-CN:
status:
account_status: 帐户状态
confirming: 等待电子邮件确认完成。
- functional: 您的帐号可以正常使用了。
- pending: 工作人员正在审核您的申请。这需要花点时间。在申请被批准后,您将收到一封电子邮件。
- redirecting_to: 您的帐户无效,因为它已被设置为跳转到 %{acct}
+ functional: 你的帐号可以正常使用了。
+ pending: 工作人员正在审核你的申请。这需要花点时间。在申请被批准后,你将收到一封电子邮件。
+ redirecting_to: 你的帐户无效,因为它已被设置为跳转到 %{acct}
too_fast: 表单提交过快,请重试。
trouble_logging_in: 登录有问题?
use_security_key: 使用安全密钥
@@ -773,7 +808,7 @@ zh-CN:
title: 关注 %{acct}
challenge:
confirm: 继续
- hint_html: "注意:接下来一小时内我们不会再次要求您输入密码。"
+ hint_html: "注意:接下来一小时内我们不会再次要求你输入密码。"
invalid_password: 无效密码
prompt: 确认密码以继续
crypto:
@@ -799,22 +834,22 @@ zh-CN:
x_months: "%{count}个月"
x_seconds: "%{count}秒"
deletes:
- challenge_not_passed: 您输入的信息不正确
+ challenge_not_passed: 你输入的信息不正确
confirm_password: 输入你当前的密码来验证身份
- confirm_username: 输入您的用户名以继续
+ confirm_username: 输入你的用户名以继续
proceed: 删除帐户
success_msg: 你的帐户已经成功删除
warning:
before: 在删除前,请仔细阅读下列说明:
caches: 已被其他服务器缓存的内容可能还会保留
- data_removal: 您的嘟文和其他数据将被永久删除
- email_change_html: 您可以 更换邮箱地址 无需删除账号
+ data_removal: 你的嘟文和其他数据将被永久删除
+ email_change_html: 你可以 更换邮箱地址 无需删除账号
email_contact_html: 如果它还没送到,你可以发邮件给 %{email} 寻求帮助。
- email_reconfirmation_html: 如果您没有收到确认邮件,请点击 重新发送 。
- irreversible: 您将无法恢复或重新激活您的帐户
+ email_reconfirmation_html: 如果你没有收到确认邮件,请点击 重新发送 。
+ irreversible: 你将无法恢复或重新激活你的帐户
more_details_html: 更多细节,请查看 隐私政策 。
- username_available: 您的用户名现在又可以使用了
- username_unavailable: 您的用户名仍将无法使用
+ username_available: 你的用户名现在又可以使用了
+ username_unavailable: 你的用户名仍将无法使用
directories:
directory: 用户目录
explanation: 根据兴趣发现用户
@@ -822,7 +857,7 @@ zh-CN:
domain_validator:
invalid_domain: 不是一个有效的域名
errors:
- '400': 您提交的请求无效或格式不正确。
+ '400': 你提交的请求无效或格式不正确。
'403': 你没有访问这个页面的权限。
'404': 无法找到你所要访问的页面。
'406': 页面无法处理请求。
@@ -852,13 +887,13 @@ zh-CN:
csv: CSV
domain_blocks: 域名屏蔽
lists: 列表
- mutes: 隐藏的用户
+ mutes: 你隐藏的用户
storage: 媒体文件存储
featured_tags:
add_new: 添加新条目
errors:
limit: 你所推荐的话题标签数已达上限
- hint_html: "什么是精选话题标签? 它们被显示在您的公开个人资料中的突出位置,人们可以在这些标签下浏览您的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。"
+ hint_html: "什么是精选话题标签? 它们被显示在你的公开个人资料中的突出位置,人们可以在这些标签下浏览你的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。"
filters:
contexts:
account: 个人资料
@@ -873,7 +908,7 @@ zh-CN:
invalid_irreversible: 此功能只适用于主页时间轴或通知
index:
delete: 删除
- empty: 您没有过滤器。
+ empty: 你没有过滤器。
title: 过滤器
new:
title: 添加新的过滤器
@@ -964,34 +999,34 @@ zh-CN:
migrations:
acct: 新帐户的 用户名@域名
cancel: 取消跳转
- cancel_explanation: 取消跳转将会重新激活您当前的帐号,但是已经迁移到新账号的关注者不会回来。
+ cancel_explanation: 取消跳转将会重新激活你当前的帐号,但是已经迁移到新账号的关注者不会回来。
cancelled_msg: 成功取消跳转
errors:
- already_moved: 和您已经迁移过的帐号相同
+ already_moved: 和你已经迁移过的帐号相同
missing_also_known_as: 没有引用此帐号
move_to_self: 不能是当前帐户
not_found: 找不到
- on_cooldown: 您正处于冷却状态
+ on_cooldown: 你正处于冷却状态
followers_count: 迁移时的关注者
incoming_migrations: 从其它帐号迁移
- incoming_migrations_html: 要把另一个帐号移动到本帐号,首先您需要 创建一个帐号别名 。
- moved_msg: 您的帐号现在会跳转到%{acct} ,同时关注者也会迁移过去 。
- not_redirecting: 您的帐号当前未跳转到其它帐户。
- on_cooldown: 您最近已经迁移过您的帐号。此功能将在%{count} 天后再次可用。
+ incoming_migrations_html: 要把另一个帐号移动到本帐号,首先你需要 创建一个帐号别名 。
+ moved_msg: 你的帐号现在会跳转到%{acct} ,同时关注者也会迁移过去 。
+ not_redirecting: 你的帐号当前未跳转到其它帐户。
+ on_cooldown: 你最近已经迁移过你的帐号。此功能将在%{count} 天后再次可用。
past_migrations: 迁移记录
proceed_with_move: 移动关注者
- redirected_msg: 您的账号现在会跳转至 %{acct}
- redirecting_to: 您的帐户被跳转到了 %{acct}。
+ redirected_msg: 你的账号现在会跳转至 %{acct}
+ redirecting_to: 你的帐户被跳转到了 %{acct}。
set_redirect: 设置跳转
warning:
backreference_required: 新账号必须先引用现在这个帐号
before: 在继续前,请仔细阅读下列说明:
- cooldown: 移动后会有一个冷却期,在此期间您将无法再次移动
- disabled_account: 此后,您的当前帐户将无法使用。但是,您仍然有权导出数据或者重新激活。
+ cooldown: 移动后会有一个冷却期,在此期间你将无法再次移动
+ disabled_account: 此后,你的当前帐户将无法使用。但是,你仍然有权导出数据或者重新激活。
followers: 这步操作将把所有关注者从当前账户移动到新账户
only_redirect_html: 或者,你可以只在你的帐号资料上设置一个跳转。
other_data: 不会自动移动其它数据
- redirect: 在收到一个跳转通知后,您当前的帐号资料将会更新,并被排除在搜索范围外
+ redirect: 在收到一个跳转通知后,你当前的帐号资料将会更新,并被排除在搜索范围外
moderation:
title: 运营
move_handler:
@@ -1026,10 +1061,14 @@ zh-CN:
body: "%{name} 在嘟文中提到了你:"
subject: "%{name} 提到了你"
title: 新的提及
+ poll:
+ subject: "%{name} 创建的一个投票已经结束"
reblog:
body: 你的嘟文被 %{name} 转嘟了:
subject: "%{name} 转嘟了你的嘟文"
title: 新的转嘟
+ status:
+ subject: "%{name} 刚刚发嘟"
notifications:
email_events: 电子邮件通知事件
email_events_hint: 选择你想要收到通知的事件:
@@ -1046,7 +1085,7 @@ zh-CN:
trillion: T
otp_authentication:
code_hint: 输入认证应用生成的代码以确认操作
- description_html: 如果您使用身份验证应用启用了 双重身份验证, 登录将需要用到您的手机,它将生成您需要的令牌。
+ description_html: 如果你使用身份验证应用启用了 双重身份验证, 登录将需要用到你的手机,它将生成你需要的令牌。
enable: 启用
instructions_html: "请使用 Google 身份验证器或其他的TOTP双重认证手机应用扫描此处的二维码。启用双重认证后,在登录时,你需要输入该应用生成的代码。"
manual_instructions: 如果你无法扫描二维码,请手动输入下列文本:
@@ -1100,20 +1139,20 @@ zh-CN:
no_account_html: 还没有帐号?你可以注册一个
proceed: 确认关注
prompt: 你正准备关注:
- reason_html: "为什么需要这个步骤? %{instance} 可能不是您所注册的服务器,所以我们需要先跳转到您所在的服务器。"
+ reason_html: "为什么需要这个步骤? %{instance} 可能不是你所注册的服务器,所以我们需要先跳转到你所在的服务器。"
remote_interaction:
favourite:
proceed: 确认标记为喜欢
- prompt: 您想要标记此嘟文为喜欢:
+ prompt: 你想要标记此嘟文为喜欢:
reblog:
proceed: 确认转嘟
- prompt: 您想要转嘟此条:
+ prompt: 你想要转嘟此条:
reply:
proceed: 确认回复
- prompt: 您想要回复此嘟文:
+ prompt: 你想要回复此嘟文:
scheduled_statuses:
- over_daily_limit: 您已超出每日定时嘟文的上限(%{limit} 条)
- over_total_limit: 您已超出定时嘟文的上限(%{limit} 条)
+ over_daily_limit: 你已超出每日定时嘟文的上限(%{limit} 条)
+ over_total_limit: 你已超出定时嘟文的上限(%{limit} 条)
too_soon: 所定的时间必须在未来
sessions:
activity: 最后一次活跃的时间
@@ -1144,7 +1183,7 @@ zh-CN:
adobe_air: Adobe Air
android: Android
blackberry: 黑莓
- chrome_os: ChromeOS
+ chrome_os: Chrome OS
firefox_os: Firefox OS
ios: iOS
linux: Linux
@@ -1178,8 +1217,6 @@ zh-CN:
relationships: 关注管理
two_factor_authentication: 双重认证
webauthn_authentication: 安全密钥
- spam_check:
- spam_detected: 这是一个自动报告。已检测到垃圾信息。
statuses:
attached:
audio:
@@ -1216,6 +1253,7 @@ zh-CN:
sign_in_to_participate: 登录以加入对话
title: "%{name}:“%{quote}”"
visibilities:
+ direct: 私信
private: 仅关注者
private_long: 只有关注你的用户能看到
public: 公开
@@ -1234,29 +1272,29 @@ zh-CN:
我们收集什么信息?
-
- 我们将您的信息用于什么?
+ 我们将你的信息用于什么?
-
-
- 我们如何保护您的信息?
+ 我们如何保护你的信息?
-
@@ -1269,35 +1307,35 @@ zh-CN:
我们使用 cookies 吗?
-
我们是否透露任何信息给其他方?
-
儿童使用网站
- rel="me" 属性。链接的文本内容可以随意填写。例如:
+ explanation_html: 你可以 验证自己是个人资料元数据中的某个链接的所有者。 为此,被链接网站必须包含一个到你的 Mastodon 主页的链接。链接中 必须 包括 rel="me" 属性。链接的文本内容可以随意填写。例如:
verification: 验证
webauthn_credentials:
add: 添加新的安全密钥
create:
- error: 添加您的安全密钥时出错。请重试。
- success: 您的安全密钥已成功添加。
+ error: 添加你的安全密钥时出错。请重试。
+ success: 你的安全密钥已成功添加。
delete: 删除
- delete_confirmation: 您确认要删除这个安全密钥吗?
- description_html: 如果您启用 安全密钥身份验证,登录将需要您使用您的安全密钥。
+ delete_confirmation: 你确认要删除这个安全密钥吗?
+ description_html: 如果你启用 安全密钥身份验证,登录将需要你使用你的安全密钥。
destroy:
- error: 删除您的安全密钥时出错。请重试。
- success: 您的安全密钥已成功删除。
+ error: 删除你的安全密钥时出错。请重试。
+ success: 你的安全密钥已成功删除。
invalid_credential: 无效的安全密钥
- nickname_hint: 输入您新安全密钥的昵称
- not_enabled: 您尚未启用 WebAuthn
+ nickname_hint: 输入你的新安全密钥的昵称
+ not_enabled: 你尚未启用WebAuthn
not_supported: 此浏览器不支持安全密钥
otp_required: 要使用安全密钥,请先启用两步验证。
registered_on: 注册于 %{date}
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 9fcee79f1..ad9bc2ceb 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -26,6 +26,8 @@ zh-HK:
此帳戶是為聯盟協定而設。除非你想封鎖整個伺服器的話,否則請不要封鎖這個帳戶。如果你想封鎖伺服器,請使用網域封鎖以達到相同效果。
learn_more: 了解更多
privacy_policy: 隱私權政策
+ rules: 系統規則
+ rules_html: 如果你想要在本站開一個新帳戶,以下是你需要遵守的規則:
see_whats_happening: 看看發生什麼事
server_stats: 伺服器統計:
source_code: 源代碼
@@ -74,7 +76,6 @@ zh-HK:
other: 文章
posts_tab_heading: 文章
posts_with_replies: 包含回覆的文章
- reserved_username: 這個使用者名稱已被保留
roles:
admin: 管理員
bot: 機械人
@@ -255,47 +256,6 @@ zh-HK:
update_custom_emoji: 更新自定的 Emoji 表情符號
update_domain_block: 更新域名阻隔
update_status: 更新文章
- actions:
- assigned_to_self_report: "%{name} 指派了 %{target} 的舉報給自己"
- change_email_user: "%{name} 改變了使用者 %{target} 的電郵地址"
- confirm_user: "%{name} 確認了使用者 %{target} 的電郵地址"
- create_account_warning: "%{name} 已警告了 %{target}"
- create_announcement: "%{name} 新增了公告 %{target}"
- create_custom_emoji: "%{name} 加入了新的 Emoji %{target}"
- create_domain_allow: "%{name} 和 %{target} 網域結盟了"
- create_domain_block: "%{name} 封鎖了網域 %{target}"
- create_email_domain_block: "%{name} 封鎖了電郵網域 %{target}"
- create_ip_block: "%{name} 已經設定了針對 IP %{target} 的規則"
- demote_user: "%{name} 把使用者 %{target} 降權"
- destroy_announcement: "%{name} 刪除了公告 %{target}"
- destroy_custom_emoji: "%{name} 刪除了 Emoji %{target}"
- destroy_domain_allow: "%{name} 禁止了與 %{target} 網域進行訊息聯網"
- destroy_domain_block: "%{name} 取消了對網域 %{target} 的封鎖"
- destroy_email_domain_block: "%{name} 取消了對電郵網域 %{target} 的封鎖"
- destroy_ip_block: "%{name} 已經刪除了 IP %{target} 的規則"
- destroy_status: "%{name} 刪除了 %{target} 的文章"
- disable_2fa_user: "%{name} 停用了使用者 %{target} 的雙重認證"
- disable_custom_emoji: "%{name} 停用了 Emoji %{target}"
- disable_user: "%{name} 把使用者 %{target} 設定為禁止登入"
- enable_custom_emoji: "%{name} 啟用了 Emoji %{target}"
- enable_user: "%{name} 把使用者 %{target} 設定為允許登入"
- memorialize_account: "%{name} 把 %{target} 設定為追悼帳戶"
- promote_user: "%{name} 對提升了使用者 %{target} 的權限"
- remove_avatar_user: "%{name} 取消了 %{target} 的頭像"
- reopen_report: "%{name} 重開 %{target} 的舉報個案"
- reset_password_user: "%{name} 重設了使用者 %{target} 的密碼"
- resolve_report: "%{name} 處理了 %{target} 的舉報個案"
- sensitive_account: "%{name} 將 %{target} 的媒體檔案列為敏感"
- silence_account: "%{name} 靜音了帳號 %{target}"
- suspend_account: "%{name} 將帳號 %{target} 停權"
- unassigned_report: "%{name} 取消指派 %{target} 的舉報"
- unsensitive_account: "%{name} 取消將 %{target} 的媒體檔案的設為敏感"
- unsilence_account: "%{name} 取消了用戶 %{target} 的靜音狀態"
- unsuspend_account: "%{name} 取消了帳號 %{target} 的停權狀態"
- update_announcement: "%{name} 更新了公告 %{target}"
- update_custom_emoji: "%{name} 更新了 Emoji 表情符號 %{target}"
- update_domain_block: "%{name} 更新了對 %{target} 的域名阻隔"
- update_status: "%{name} 更新了 %{target} 的文章"
deleted_status: "(已刪除文章)"
empty: 找不到任何日誌。
filter_by_action: 按動作篩選
@@ -358,7 +318,6 @@ zh-HK:
feature_profile_directory: 個人資料目錄
feature_registrations: 註冊
feature_relay: 聯網中繼站
- feature_spam_check: 防垃圾訊息
feature_timeline_preview: 時間軸預覽
features: 功能
hidden_service: 與隱密服務互連
@@ -534,6 +493,10 @@ zh-HK:
unassign: 取消指派
unresolved: 未處理
updated_at: 更新
+ rules:
+ add_new: 新增規則
+ edit: 編輯規則
+ title: 伺服器守則
settings:
activity_api_enabled:
desc_html: 本站的文章數量、活躍使用者數量、及每週新註冊使用者數量
@@ -557,9 +520,6 @@ zh-HK:
users: 所有已登入的帳號
domain_blocks_rationale:
title: 顯示原因予
- enable_bootstrap_timeline_accounts:
- desc_html: 自動為新用戶追隨預設的帳號,為他們的首頁動態增加一點色彩
- title: 啟用「新使用者預設關注」功能
hero:
desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會默認為服務站縮圖
title: 主題圖片
@@ -607,15 +567,12 @@ zh-HK:
desc_html: 本站詳細資訊頁的內文
你可以在此使用 HTML
title: 本站詳細資訊
site_short_description:
- desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫\U000294D9而出。"
+ desc_html: 顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫\U000294D9而出。
title: 伺服器短描述
site_terms:
desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤
title: 自訂使用條款
site_title: 本站名稱
- spam_check_enabled:
- desc_html: Mastodon可以自動舉報產生重複的垃圾內容的帳號,不過未必準確。
- title: 自動防廣告訊息
thumbnail:
desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px
title: 本站縮圖
@@ -650,9 +607,6 @@ zh-HK:
accounts_today: 今日特殊使用
accounts_week: 今週特殊使用
breakdown: 根據來源剖析是日用量
- context: 上下文
- directory: 在目錄中
- in_directory: 目錄中有 %{count} 個
last_active: 上次活躍
most_popular: 最熱門
most_recent: 最近
@@ -783,7 +737,7 @@ zh-HK:
date:
formats:
default: "%Y年%b月%d日"
- with_month_name: "%B %d, %Y"
+ with_month_name: "%Y年%B月%d日"
datetime:
distance_in_words:
about_x_hours: "%{count}小時前"
@@ -1178,8 +1132,6 @@ zh-HK:
relationships: 關注及追隨者
two_factor_authentication: 雙重認證
webauthn_authentication: 安全鑰匙
- spam_check:
- spam_detected: 此為系統的自動報告:已發現垃圾訊息。
statuses:
attached:
audio:
@@ -1384,11 +1336,8 @@ zh-HK:
tips: 小貼士
title: 歡迎 %{name} 加入!
users:
- blocked_email_provider: 此電郵提供商並不被允許
follow_limit_reached: 你不能關注多於%{limit} 人
generic_access_help_html: 不能登入?你可以寄電郵至 %{email} 尋求協助
- invalid_email: 電郵地址格式不正確
- invalid_email_mx: 此電郵地址不存在
invalid_otp_token: 雙重認證碼不正確
invalid_sign_in_token: 無效的安全碼
otp_lost_help_html: 如果這兩者你均無法登入,你可以聯繫 %{email}
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index da340a1bc..852c333ca 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -21,11 +21,11 @@ zh-TW:
federation_hint_html: 你只需要擁有 %{instance} 的帳戶,就可以追蹤隨便一台 Mastodon 伺服器上的人等等。
get_apps: 嘗試行動應用程式
hosted_on: 在 %{domain} 運作的 Mastodon 站點
- instance_actor_flash: '這個帳戶是個用來代表伺服器自已的虛擬角色,而不是實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。
-
-'
+ instance_actor_flash: "這個帳戶是個用來代表伺服器自已的虛擬角色,而不是實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 \n"
learn_more: 了解詳細
privacy_policy: 隱私權政策
+ rules: 伺服器規則
+ rules_html: 以下是您若想在此 Mastodon 伺服器建立帳戶必須遵守的規則總結:
see_whats_happening: 看看發生什麼事
server_stats: 伺服器統計:
source_code: 原始碼
@@ -57,7 +57,7 @@ zh-TW:
followers:
other: 關注者
following: 正在關注
- instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
+ instance_actor_flash: 這個帳戶是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
joined: 加入於 %{date}
last_active: 上次活躍時間
link_verified_on: 此連結的所有權已在 %{date} 檢查過
@@ -74,7 +74,6 @@ zh-TW:
other: 嘟文
posts_tab_heading: 嘟文
posts_with_replies: 嘟文與回覆
- reserved_username: 此使用者名稱已被保留
roles:
admin: 管理員
bot: 機器人
@@ -100,12 +99,12 @@ zh-TW:
avatar: 頭像
by_domain: 站點
change_email:
- changed_msg: 已成功變更帳戶電子信箱位址!
- current_email: 目前的電子信箱位址
- label: 變更電子信箱位址
- new_email: 新的電子信箱位址
- submit: 變更電子信箱位址
- title: 為 %{username} 變更電子信箱位址
+ changed_msg: 已成功變更帳戶電子信箱地址!
+ current_email: 目前的電子信箱地址
+ label: 變更電子信箱地址
+ new_email: 新的電子信箱地址
+ submit: 變更電子信箱地址
+ title: 為 %{username} 變更電子信箱地址
confirm: 確定
confirmed: 已確定
confirming: 確定
@@ -119,7 +118,7 @@ zh-TW:
display_name: 暱稱
domain: 站點
edit: 編輯
- email: 電子信箱位址
+ email: 電子信箱地址
email_status: 電子信箱狀態
enable: 啟用
enabled: 已啟用
@@ -141,7 +140,7 @@ zh-TW:
media_attachments: 多媒體附件
memorialize: 設定為追悼帳戶
memorialized: 被悼念的
- memorialized_msg: 成功將%{username} 的帳號變為紀念帳號
+ memorialized_msg: 成功將%{username} 的帳戶變為紀念帳戶
moderation:
active: 活躍
all: 全部
@@ -152,7 +151,7 @@ zh-TW:
moderation_notes: 管理備忘
most_recent_activity: 最近活動
most_recent_ip: 最近 IP 位址
- no_account_selected: 未選取任何帳號,因此未變更
+ no_account_selected: 未選取任何帳戶,因此未變更
no_limits_imposed: 未受限制
not_subscribed: 未訂閱
pending: 等待審核中
@@ -165,7 +164,7 @@ zh-TW:
redownloaded_msg: 成功重新載入%{username} 的個人資料頁面
reject: 拒絕
reject_all: 全部拒絕
- rejected_msg: 成功拒絕了%{username} 的新帳號申請
+ rejected_msg: 成功拒絕了%{username} 的新帳戶申請
remove_avatar: 取消頭像
remove_header: 移除開頭
removed_avatar_msg: 成功刪除了 %{username} 的頭像
@@ -201,7 +200,7 @@ zh-TW:
suspension_reversible_hint_html: 這個帳戶已被暫停,所有數據將會在 %{date} 被刪除。在此之前,您可以完全回復您的帳戶。如果您想即時刪除這個帳戶的數據,您可以在下面進行操作。
time_in_queue: 正在佇列等待 %{time}
title: 帳戶
- unconfirmed_email: 未確認的電子信箱位址
+ unconfirmed_email: 未確認的電子信箱地址
undo_sensitized: 取消敏感狀態
undo_silenced: 取消靜音
undo_suspension: 取消停權
@@ -216,7 +215,7 @@ zh-TW:
action_logs:
action_types:
assigned_to_self_report: 指派回報
- change_email_user: 變更使用者的電子信箱位址
+ change_email_user: 變更使用者的電子信箱地址
confirm_user: 確認使用者
create_account_warning: 建立警告
create_announcement: 建立公告
@@ -238,64 +237,23 @@ zh-TW:
disable_user: 停用帳戶
enable_custom_emoji: 啓用自訂顏文字
enable_user: 啓用帳戶
- memorialize_account: 設定成紀念帳號
+ memorialize_account: 設定成紀念帳戶
promote_user: 把用戶升級
remove_avatar_user: 刪除大頭貼
reopen_report: 重開舉報
reset_password_user: 重設密碼
resolve_report: 消除舉報
- sensitive_account: 把您的帳號的媒體標記為敏感內容
+ sensitive_account: 把您的帳戶的媒體標記為敏感內容
silence_account: 靜音用戶
suspend_account: 暫停用戶
unassigned_report: 取消指派舉報
- unsensitive_account: 取消把您的帳號的媒體設定為敏感內容
+ unsensitive_account: 取消把您的帳戶的媒體設定為敏感內容
unsilence_account: 取消用戶的靜音狀態
unsuspend_account: 取消用戶的暫停狀態
update_announcement: 更新公告
update_custom_emoji: 更新自訂顏文字
update_domain_block: 更新封鎖網域
update_status: 更新狀態
- actions:
- assigned_to_self_report: "%{name} 接受了檢舉 %{target}"
- change_email_user: "%{name} 變更了使用者 %{target} 的電子信箱位址"
- confirm_user: "%{name} 確認了使用者 %{target} 的電子信箱位址"
- create_account_warning: "%{name} 已對 %{target} 送出警告"
- create_announcement: "%{name} 建立了新公告 %{target}"
- create_custom_emoji: "%{name} 加入自訂表情符號 %{target}"
- create_domain_allow: "%{name} 將 %{target} 網域加入黑名單了"
- create_domain_block: "%{name} 封鎖了站點 %{target}"
- create_email_domain_block: "%{name} 封鎖了電子信箱網域 %{target}"
- create_ip_block: "%{name} 已經設定了IP %{target} 的規則"
- demote_user: "%{name} 把使用者 %{target} 降級"
- destroy_announcement: "%{name} 刪除了公告 %{target}"
- destroy_custom_emoji: "%{name} 破壞了 %{target} 表情符號"
- destroy_domain_allow: "%{name} 從白名單中移除了 %{target} 網域"
- destroy_domain_block: "%{name} 取消了對站點 %{target} 的封鎖"
- destroy_email_domain_block: "%{name} 取消了對電子信箱網域 %{target} 的封鎖"
- destroy_ip_block: "%{name} 已經刪除了 IP %{target} 的規則"
- destroy_status: "%{name} 刪除了 %{target} 的嘟文"
- disable_2fa_user: "%{name} 停用了使用者 %{target} 的兩階段認證"
- disable_custom_emoji: "%{name} 停用了自訂表情符號 %{target}"
- disable_user: "%{name} 將使用者 %{target} 設定為禁止登入"
- enable_custom_emoji: "%{name} 啟用了自訂表情符號 %{target}"
- enable_user: "%{name} 將使用者 %{target} 設定為允許登入"
- memorialize_account: "%{name} 將 %{target} 設定為追悼帳戶"
- promote_user: "%{name} 對使用者 %{target} 進行了晉級操作"
- remove_avatar_user: "%{name} 移除了 %{target} 的頭像"
- reopen_report: "%{name} 重新開啟 %{target} 的檢舉"
- reset_password_user: "%{name} 重新設定了使用者 %{target} 的密碼"
- resolve_report: "%{name} 處理了 %{target} 的檢舉"
- sensitive_account: "%{name} 將 %{target} 的媒體檔案標記為敏感內容"
- silence_account: "%{name} 靜音了使用者 %{target}"
- suspend_account: "%{name} 停權了使用者 %{target}"
- unassigned_report: "%{name} 取消指派 %{target} 的檢舉"
- unsensitive_account: "%{name} 將 %{target} 的媒體檔案的敏感狀態取消"
- unsilence_account: "%{name} 取消了使用者 %{target} 的靜音狀態"
- unsuspend_account: "%{name} 取消了使用者 %{target} 的停權狀態"
- update_announcement: "%{name} 更新了公告 %{target}"
- update_custom_emoji: "%{name} 更新了自訂表情符號 %{target}"
- update_domain_block: "%{name} 更新封鎖網域 %{target}"
- update_status: "%{name} 重整了 %{target} 的嘟文"
deleted_status: "(已刪除嘟文)"
empty: 找不到 log
filter_by_action: 按動作篩選
@@ -358,7 +316,6 @@ zh-TW:
feature_profile_directory: 個人資料目錄
feature_registrations: 註冊
feature_relay: 聯邦中繼站
- feature_spam_check: 防垃圾訊息
feature_timeline_preview: 時間軸預覽
features: 功能
hidden_service: 與隱密服務互連
@@ -436,7 +393,12 @@ zh-TW:
title: 新增電子信箱黑名單項目
title: 電子信箱黑名單
instances:
+ back_to_all: 所有
+ back_to_warning: 警告
by_domain: 站台
+ delivery:
+ all: 所有
+ warning: 警告
delivery_available: 可傳送
empty: 找不到網域
known_accounts:
@@ -509,7 +471,7 @@ zh-TW:
are_you_sure: 你確定嗎?
assign_to_self: 指派給自己
assigned: 指派負責人
- by_target_domain: 檢舉帳號之網域
+ by_target_domain: 檢舉帳戶之網域
comment:
none: 無
created_at: 日期
@@ -534,6 +496,11 @@ zh-TW:
unassign: 取消指派
unresolved: 未解決
updated_at: 更新
+ rules:
+ add_new: 新增規則
+ delete: 刪除
+ edit: 編輯規則
+ title: 伺服器規則
settings:
activity_api_enabled:
desc_html: 本站使用者發佈的嘟文數量,以及本站的活躍使用者與一週內新使用者數量
@@ -542,7 +509,7 @@ zh-TW:
desc_html: 以半形逗號分隔多個使用者名。只能加入來自本站且未開啟保護的帳戶。如果留空,則預設關注本站所有管理員。
title: 新使用者預設關注
contact_information:
- email: 用於聯絡的公開電子信箱位址
+ email: 用於聯絡的公開電子信箱地址
username: 請輸入使用者名稱
custom_css:
desc_html: 透過於每個頁面都載入的 CSS 調整外觀
@@ -557,9 +524,6 @@ zh-TW:
users: 套用至所有登入的本機使用者
domain_blocks_rationale:
title: 顯示解釋原因
- enable_bootstrap_timeline_accounts:
- desc_html: 使新使用者自動跟隨設定之帳號,所以他們的首頁動態一開始不會空白
- title: 啟用新使用者的預設追蹤
hero:
desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會重設回伺服器預覽圖
title: 主題圖片
@@ -586,6 +550,7 @@ zh-TW:
disabled: 沒有人
title: 允許發送邀請的身份
require_invite_text:
+ desc_html: 如果已設定為手動審核註冊,請將「加入原因」設定為必填項目。
title: 要求新使用者填申請書以索取邀請
registrations_mode:
modes:
@@ -606,13 +571,12 @@ zh-TW:
desc_html: 可放置行為準則、規定以及其他此伺服器特有的內容。可使用 HTML 標籤
title: 本站詳細資訊
site_short_description:
+ desc_html: 顯示在側邊欄和網頁標籤 (meta tags)。以一段話描述 Mastodon 是甚麼,以及這個伺服器的特色。
title: 伺服器短描述
site_terms:
desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤
title: 自訂使用條款
site_title: 伺服器名稱
- spam_check_enabled:
- title: 自動防廣告訊息
thumbnail:
desc_html: 用於在 OpenGraph 和 API 中顯示預覽圖。推薦大小 1200×630px
title: 伺服器縮圖
@@ -621,8 +585,10 @@ zh-TW:
title: 時間軸預覽
title: 網站設定
trendable_by_default:
+ desc_html: 影響此前並未被禁用的標籤
title: 允許熱門的主題標籤直接顯示於趨勢區,不需經過審核
trends:
+ desc_html: 公開目前炎上的已審核標籤
title: 趨勢主題標籤
site_uploads:
delete: 刪除上傳的檔案
@@ -641,16 +607,22 @@ zh-TW:
no_status_selected: 因未選擇嘟文而未變更。
title: 帳戶嘟文
with_media: 含有媒體檔案
+ system_checks:
+ database_schema_check:
+ message_html: 有挂起的数据库迁移,请运行它们以确保应用程序按照预期运行。
+ rules_check:
+ action: 管理服务器规则
+ message_html: 你没有定义任何服务器规则。
+ sidekiq_process_check:
+ message_html: 没有队列 %{value} 的Sidekiq进程,请检查你的Sidekiq配置
tags:
accounts_today: 本日不重複使用者數
accounts_week: 本週不重複使用者數
- context: 上下文
- directory: 在目錄中
- in_directory: 目錄中有 %{count} 個
+ breakdown: 根據來源分類本日使用情況
last_active: 上次活躍
most_popular: 最熱門
most_recent: 最近
- name: Hashtag
+ name: 主題標籤
review: 審核嘟文
reviewed: 已審核
title: 主題標籤
@@ -662,15 +634,31 @@ zh-TW:
warning_presets:
add_new: 新增
delete: 刪除
+ edit_preset: 編輯預設警告
+ title: 管理預設警告
admin_mailer:
+ new_pending_account:
+ body: 以下是新帳戶的詳細資訊。您可以同意或拒絕這項申請。
+ subject: "%{instance} 上有新帳戶 (%{username}) 待審核"
new_report:
body: "%{reporter} 檢舉了使用者 %{target}"
body_remote: 來自 %{domain} 的使用者檢舉了使用者 %{target}
subject: 來自 %{instance} 的使用者檢舉(#%{id})
+ new_trending_tag:
+ body: '尚未通過審核的主題標籤 #%{name} 今天有炎上趨勢。這個標籤在你開綠燈之前不會公開顯示,你也可以選擇無視它以遭蒙蔽雙眼。'
+ subject: "%{instance} 上有待審核的主題標籤 (#%{name})"
+ aliases:
+ add_new: 建立別名
+ created_msg: 成功建立別名。您可以自舊帳戶開始轉移。
+ deleted_msg: 成功移除別名。您將無法再由舊帳戶轉移到目前的帳戶。
+ empty: 您目前沒有任何別名。
+ hint_html: 如果想由其他帳戶轉移到此帳戶,您可以在此處建立別名,稍後系統將容許您把關注者由舊帳戶轉移至此。此項作業是無害且可復原的。 帳戶的遷移程序需要在舊帳戶啟動。
+ remove: 取消連結別名
appearance:
advanced_web_interface: 進階網頁介面
advanced_web_interface_hint: 進階網頁界面可讓您配置許多不同的欄位來善用多餘的螢幕空間,依需要同時查看盡可能多的資訊如:首頁、通知、站點聯邦時間軸、任意數量的列表和主題標籤。
animations_and_accessibility: 動畫與可用性
+ confirmation_dialogs: 確認對話框
discovery: 探索
localization:
body: Mastodon 是由志願者翻譯的。
@@ -696,13 +684,19 @@ zh-TW:
auth:
apply_for_account: 索取註冊邀請
change_password: 密碼
+ checkbox_agreement_html: 我同意 之伺服器規則 以及 服務條款
+ checkbox_agreement_without_rules_html: 我同意 服務條款
delete_account: 刪除帳戶
delete_account_html: 如果你想刪除你的帳戶,請點擊這裡繼續。你需要確認你的操作。
description:
- prefix_sign_up: 現在就註冊 Mastodon 帳號吧!
+ prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!"
+ prefix_sign_up: 現在就註冊 Mastodon 帳戶吧!
+ suffix: 有了帳戶,就可以從任何 Mastodon 伺服器關注任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多!
didnt_get_confirmation: 沒有收到驗證信?
+ dont_have_your_security_key: 找不到您的安全金鑰?
forgot_password: 忘記密碼?
invalid_reset_password_token: 密碼重設 token 無效或已過期。請重新設定密碼。
+ link_to_otp: 請從您手機輸入雙重驗證 (2FA) 或還原碼
link_to_webauth: 使用您的安全金鑰
login: 登入
logout: 登出
@@ -710,6 +704,7 @@ zh-TW:
migrate_account_html: 如果你希望引導他人關注另一個帳戶,請到這裡設定。
or_log_in_with: 或透過其他方式登入
providers:
+ cas: CAS
saml: SAML
register: 註冊
registration_closed: "%{instance} 現在不開放新成員"
@@ -718,8 +713,18 @@ zh-TW:
security: 登入資訊
set_new_password: 設定新密碼
setup:
- email_settings_hint_html: 請確認 e-mail 是否傳送到 %{email} 。如果不對的話,可以從帳號設定修改。
+ email_below_hint_html: 如果此電子郵件地址不正確,您可於此修改並接收郵件進行認證。
+ email_settings_hint_html: 請確認電子信件是否寄至 %{email} 。如果不對的話,可以在帳戶設定裡變更。
title: 設定
+ status:
+ account_status: 帳戶狀態
+ confirming: 等待電子郵件確認完成。
+ functional: 您的帳戶可以正常使用了。
+ pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。
+ redirecting_to: 您的帳戶因目前重新導向至 %{acct} 而被停用。
+ too_fast: 送出表單的速度太快跟不上,請稍後再試。
+ trouble_logging_in: 登錄時遇到困難?
+ use_security_key: 使用安全金鑰
authorize_follow:
already_following: 你已經關注了這個使用者
already_requested: 您早已向該帳戶寄送追蹤請求
@@ -732,6 +737,19 @@ zh-TW:
return: 顯示個人資料頁
web: 返回本站
title: 關注 %{acct}
+ challenge:
+ confirm: 繼續
+ hint_html: "温馨小提醒: 我們在接下來一小時內不會再要求您輸入密碼。"
+ invalid_password: 密碼錯誤
+ prompt: 輸入密碼以繼續
+ crypto:
+ errors:
+ invalid_key: 這不是一把有效的 Ed25519 或 Curve25519 金鑰
+ invalid_signature: 這不是有效的 Ed25519 簽章
+ date:
+ formats:
+ default: "%Y年%b月%d日"
+ with_month_name: "%Y年%B月%d日"
datetime:
distance_in_words:
about_x_hours: "%{count}小時前"
@@ -747,14 +765,33 @@ zh-TW:
x_months: "%{count}個月"
x_seconds: "%{count}秒"
deletes:
+ challenge_not_passed: 您所輸入的資料不正確
confirm_password: 輸入你現在的密碼來驗證身份
+ confirm_username: 請輸入您的使用者名稱以作確認
proceed: 刪除帳戶
success_msg: 你的帳戶已經成功刪除
+ warning:
+ before: 在進行下一步驟之前,請詳細閱讀以下説明:
+ caches: 已被其他節點快取的內容可能會殘留其中
+ data_removal: 您的嘟文和其他資料將會被永久刪除
+ email_change_html: 你可以在不刪除帳戶的情況下變更你的電子郵件地址
+ email_contact_html: 如果你仍然沒有收到郵件,請寄信到 %{email} 以獲得協助
+ email_reconfirmation_html: 如果你沒有收到確認郵件,你可以請求再次發送
+ irreversible: 你將無法復原或重新啟用你的帳戶
+ more_details_html: 更多詳細資訊,請參閲隱私政策。
+ username_available: 你的使用者名稱將會釋出供他人使用
+ username_unavailable: 你的使用者名稱將會保留並不予他人使用
+ directories:
+ directory: 個人資料目錄
+ explanation: 根據興趣去發現新朋友
+ explore_mastodon: 探索%{title}
+ domain_validator:
+ invalid_domain: 並非一個有效域名
errors:
- '400': The request you submitted was invalid or malformed.
+ '400': 你所送出的請求無效或格式不正確。
'403': 你沒有觀看這個頁面的權限。
'404': 您所尋找的網頁不存在。
- '406': This page is not available in the requested format.
+ '406': 此頁面無法以請求的格式顯示。
'410': 您所尋找的網頁此處已不存在。
'422':
content: 安全驗證失敗。請確定有開啟瀏覽器 Cookies 功能?
@@ -763,8 +800,11 @@ zh-TW:
'500':
content: 抱歉,我們的後台出現問題了。
title: 這個頁面有問題
- '503': The page could not be served due to a temporary server failure.
+ '503': 此頁面因伺服器暫時發生錯誤而無法提供。
noscript_html: 使用 Mastodon 網頁版應用需要啟用 JavaScript。你也可以選擇適用於你的平台的 Mastodon 應用。
+ existing_username_validator:
+ not_found: 無法在本站找到這個名稱的使用者
+ not_found_multiple: 揣嘸 %{usernames}
exports:
archive_takeout:
date: 日期
@@ -774,30 +814,86 @@ zh-TW:
request: 下載存檔
size: 大小
blocks: 您封鎖的使用者
+ bookmarks: 書籤
csv: CSV
+ domain_blocks: 域名封鎖
lists: 列表
mutes: 您靜音的使用者
storage: 儲存空間大小
featured_tags:
+ add_new: 追加
+ errors:
+ limit: 你所推薦的標籤數量已經達到上限
hint_html: "推薦標籤是什麼? 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!"
filters:
+ contexts:
+ account: 個人資料
+ home: 首頁時間軸
+ notifications: 通知
+ public: 公開時間軸
+ thread: 會話
+ edit:
+ title: 編輯篩選條件
+ errors:
+ invalid_context: 沒有提供內文或內文無效
+ invalid_irreversible: 此功能僅適用於首頁或通知頁面
index:
+ delete: 刪除
empty: 您沒有過濾器。
title: 過濾器
+ new:
+ title: 新增篩選器
footer:
+ developers: 開發者
more: 更多......
+ resources: 資源
trending_now: 現正熱門
generic:
all: 全部
changes_saved_msg: 已成功儲存修改!
copy: 複製
delete: 刪除
+ no_batch_actions_available: 此頁面目前沒有可用的批次作業
+ order_by: 排序
save_changes: 儲存修改
+ validation_errors:
+ other: 唔…這是什麼鳥?請檢查以下 %{count} 項錯誤
+ html_validator:
+ invalid_markup: 含有無效的 HTML 語法:%{error}
+ identity_proofs:
+ active: 有效
+ authorize: 是的,請授權
+ authorize_connection_prompt: 授權此加密連接?
+ errors:
+ failed: 加密連接失敗。請於 %{provider} 重試。
+ keybase:
+ invalid_token: Keybase 標記必須為雜湊加密簽章並且由66個十六進位字符組成。
+ verification_failed: Keybase 無法確認此標記為 Keybase 使用者 %{kb_username} 的簽章。請在 Keybase 再試一次。
+ wrong_user: 未能為%{current} 以 %{proving} 建立身分驗證。請登入為 %{proving} 再試一次。
+ explanation_html: 在此你連結其他網路平台(如 Keybase)上的加密身分。讓其他人可以在那些平台上,傳送加密訊息給你,並驗證你的身分。
+ i_am_html: 我是 %{service} 上的 %{username}
+ identity: 身份
+ inactive: 非活躍
+ publicize_checkbox: 並發嘟:
+ publicize_toot: 驗證成功!我在是住在 %{service} 的 %{username} : %{url}
+ remove: 移除帳戶證明
+ removed: 成功移除帳戶證明
+ status: 驗證狀態
+ view_proof: 檢視證明
imports:
+ errors:
+ over_rows_processing_limit: 含有超過 %{count} 行
+ modes:
+ merge: 合併
+ merge_long: 保留現有記錄並新增紀錄
+ overwrite: 覆蓋
+ overwrite_long: 以新的紀錄覆蓋目前紀錄
preface: 您可以在此匯入您在其他伺服器所匯出的資料檔,包括關注的使用者、封鎖的使用者名單。
success: 資料檔上傳成功,正在匯入,請稍候
types:
blocking: 您封鎖的使用者名單
+ bookmarks: 我的最愛
+ domain_blocking: 域名封鎖名單
following: 您關注的使用者名單
muting: 您靜音的使用者名單
upload: 上傳
@@ -815,6 +911,8 @@ zh-TW:
expires_in_prompt: 永不過期
generate: 建立邀請連結
invited_by: 你的邀請人是:
+ max_uses:
+ other: "%{count} 則"
max_uses_prompt: 無限制
prompt: 建立分享連結,邀請他人在本伺服器註冊
table:
@@ -827,11 +925,24 @@ zh-TW:
media_attachments:
validations:
images_and_video: 無法在已有圖片的文章上加入影片
+ not_ready: 修但幾勒!不能附加未完成處理的檔案欸,咁按呢?
too_many: 無法加入超過 4 個檔案
migrations:
acct: 新帳戶的 使用者名稱@站點網域
+ cancel: 取消重導向
+ cancel_explanation: 取消重新導向將會重新啟用目前帳戶,但不會還原已移至該帳號的關注者。
+ cancelled_msg: 成功取消重導向。
+ errors:
+ already_moved: 與已經重導向的帳戶相同
+ missing_also_known_as: 不是這個帳戶的別名
+ move_to_self: 不能是目前帳戶
+ not_found: 找不到
+ on_cooldown: 你正在處於冷卻(CD)狀態
+ followers_count: 轉移時的追隨者
+ incoming_migrations: 自另一個帳戶轉移
proceed_with_move: 移動關注者
- redirected_msg: 您的帳號現在指向 %{acct}
+ redirected_msg: 您的帳戶現在指向 %{acct}
+ set_redirect: 設定重新導向
moderation:
title: 營運
notification_mailer:
@@ -866,23 +977,16 @@ zh-TW:
email_events: 電子郵件通知設定
email_events_hint: 選取你想接收通知的事件:
other_settings: 其他通知設定
- number:
- human:
- decimal_units:
- format: "%n%u"
- units:
- billion: B
- million: M
- quadrillion: Q
- thousand: K
- trillion: T
pagination:
newer: 較新
next: 下一頁
older: 較舊
prev: 上一頁
preferences:
- other: 其他設定
+ other: 其他
+ relationships:
+ moved: 已轉移
+ status: 帳戶狀態
remote_follow:
acct: 請輸入您的使用者名稱@站點網域
missing_resource: 無法找到資源
@@ -914,12 +1018,25 @@ zh-TW:
explanation: 這些是現在正登入於你的 Mastodon 帳戶的瀏覽器。
ip: IP 位址
platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: 黑莓機 (Blackberry)
+ chrome_os: Chrome OS
+ firefox_os: Firefox OS
ios: iOS
+ linux: Linux
mac: Mac
+ other: 不明平台
+ windows: Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
revoke: 取消
revoke_success: Session 取消成功
title: 作業階段
settings:
+ account: 帳戶
+ account_settings: 帳戶設定
+ aliases: 帳戶別名
appearance: 外觀設定
authorized_apps: 已授權應用程式
back: 回到 Mastodon
@@ -928,7 +1045,9 @@ zh-TW:
edit_profile: 編輯使用者資訊
export: 匯出
featured_tags: 推薦標籤
+ identity_proofs: 身分驗證
import: 匯入
+ import_and_export: 匯入及匯出
migrate: 帳戶搬遷
notifications: 通知
preferences: 偏好設定
@@ -1003,9 +1122,6 @@ zh-TW:
tips: 小幫手
title: "%{name} 歡迎你的加入!"
users:
- blocked_email_provider: 不允許使用這個電子信箱提供者
- invalid_email: 電子信箱位址不正確
- invalid_email_mx: 似乎沒有這個電子信箱地址
invalid_otp_token: 兩階段認證碼不正確
otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫
seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。
diff --git a/config/navigation.rb b/config/navigation.rb
index be429cfc4..d4818dbb5 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -24,9 +24,10 @@ SimpleNavigation::Configuration.run do |navigation|
n.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url, if: -> { current_user.functional? }
n.item :filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}, if: -> { current_user.functional? }
+ n.item :statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_url, if: -> { current_user.functional? }
n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_url do |s|
- s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases}
+ s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities}
s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_url, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys}
s.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url
end
@@ -45,6 +46,7 @@ SimpleNavigation::Configuration.run do |navigation|
s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts|/admin/pending_accounts}
s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path
s.item :tags, safe_join([fa_icon('hashtag fw'), t('admin.tags.title')]), admin_tags_path, highlights_on: %r{/admin/tags}
+ s.item :follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path, highlights_on: %r{/admin/follow_recommendations}
s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: whitelist_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.admin? }
s.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? }
s.item :ip_blocks, safe_join([fa_icon('ban fw'), t('admin.ip_blocks.title')]), admin_ip_blocks_url, highlights_on: %r{/admin/ip_blocks}, if: -> { current_user.admin? }
@@ -53,6 +55,7 @@ SimpleNavigation::Configuration.run do |navigation|
n.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_dashboard_url, if: proc { current_user.staff? } do |s|
s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/settings}
+ s.item :rules, safe_join([fa_icon('gavel fw'), t('admin.rules.title')]), admin_rules_path, highlights_on: %r{/admin/rules}
s.item :announcements, safe_join([fa_icon('bullhorn fw'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}
s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? && !whitelist_mode? }, highlights_on: %r{/admin/relays}
diff --git a/config/routes.rb b/config/routes.rb
index b3eef3364..d4ca4389d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -3,14 +3,12 @@
require 'sidekiq_unique_jobs/web'
require 'sidekiq-scheduler/web'
-Sidekiq::Web.set :session_secret, Rails.application.secrets[:secret_key_base]
-
Rails.application.routes.draw do
root 'home#index'
mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development?
- health_check_routes
+ get 'health', to: 'health#show'
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq
@@ -99,8 +97,6 @@ Rails.application.routes.draw do
post '/interact/:id', to: 'remote_interaction#create'
get '/explore', to: 'directories#index', as: :explore
- get '/explore/:id', to: 'directories#show', as: :explore_hashtag
-
get '/settings', to: redirect('/settings/profile')
namespace :settings do
@@ -170,6 +166,7 @@ Rails.application.routes.draw do
resources :aliases, only: [:index, :create, :destroy]
resources :sessions, only: [:destroy]
resources :featured_tags, only: [:index, :create, :destroy]
+ resources :login_activities, only: [:index]
end
resources :media, only: [:show] do
@@ -181,6 +178,7 @@ Rails.application.routes.draw do
resources :invites, only: [:index, :create, :destroy]
resources :filters, except: [:show]
resource :relationships, only: [:show, :update]
+ resource :statuses_cleanup, controller: :statuses_cleanup, only: [:show, :update]
get '/public', to: 'public_timelines#show', as: :public_timeline
get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy
@@ -221,7 +219,15 @@ Rails.application.routes.draw do
end
end
- resources :instances, only: [:index, :show], constraints: { id: /[^\/]+/ }
+ resources :instances, only: [:index, :show], constraints: { id: /[^\/]+/ } do
+ member do
+ post :clear_delivery_errors
+ post :restart_delivery
+ post :stop_delivery
+ end
+ end
+
+ resources :rules
resources :reports, only: [:index, :show] do
member do
@@ -280,6 +286,7 @@ Rails.application.routes.draw do
resources :users, only: [] do
resource :two_factor_authentication, only: [:destroy]
+ resource :sign_in_token_authentication, only: [:create, :destroy]
end
resources :custom_emojis, only: [:index, :new, :create] do
@@ -295,6 +302,7 @@ Rails.application.routes.draw do
end
resources :account_moderation_notes, only: [:create, :destroy]
+ resource :follow_recommendations, only: [:show, :update]
resources :tags, only: [:index, :show, :update] do
collection do
@@ -405,9 +413,14 @@ Rails.application.routes.draw do
resources :apps, only: [:create]
+ namespace :emails do
+ resources :confirmations, only: [:create]
+ end
+
resource :instance, only: [:show] do
resources :peers, only: [:index], controller: 'instances/peers'
resource :activity, only: [:show], controller: 'instances/activity'
+ resources :rules, only: [:index], controller: 'instances/rules'
end
resource :domain_blocks, only: [:show, :create, :destroy]
@@ -435,6 +448,7 @@ Rails.application.routes.draw do
get :verify_credentials, to: 'credentials#show'
patch :update_credentials, to: 'credentials#update'
resource :search, only: :show, controller: :search
+ resource :lookup, only: :show, controller: :lookup
resources :relationships, only: :index
end
@@ -506,6 +520,7 @@ Rails.application.routes.draw do
namespace :v2 do
resources :media, only: [:create]
get '/search', to: 'search#index', as: :search
+ resources :suggestions, only: [:index]
end
namespace :web do
diff --git a/config/settings.yml b/config/settings.yml
index 96645c222..953e7b3eb 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -2,7 +2,7 @@
# important settings can be changed from the admin interface.
defaults: &defaults
- site_title: 'dev.glitch.social'
+ site_title: 'Mastodon Glitch Edition'
site_short_description: ''
site_description: ''
site_extended_description: ''
@@ -67,7 +67,6 @@ defaults: &defaults
- mod
- moderator
disallowed_hashtags: # space separated string or list of hashtags without the hash
- enable_bootstrap_timeline_accounts: true
bootstrap_timeline_accounts: ''
activity_api_enabled: true
peers_api_enabled: true
@@ -75,7 +74,6 @@ defaults: &defaults
show_reblogs_in_public_timelines: false
show_replies_in_public_timelines: false
default_content_type: 'text/plain'
- spam_check_enabled: true
show_domain_blocks: 'disabled'
show_domain_blocks_rationale: 'disabled'
outgoing_spoilers: ''
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 010923717..eab74338e 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -25,6 +25,10 @@
cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * *'
class: Scheduler::FeedCleanupScheduler
queue: scheduler
+ follow_recommendations_scheduler:
+ cron: '<%= Random.rand(0..59) %> <%= Random.rand(6..9) %> * * *'
+ class: Scheduler::FollowRecommendationsScheduler
+ queue: scheduler
doorkeeper_cleanup_scheduler:
cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * 0'
class: Scheduler::DoorkeeperCleanupScheduler
@@ -53,3 +57,7 @@
cron: '0 * * * *'
class: Scheduler::InstanceRefreshScheduler
queue: scheduler
+ accounts_statuses_cleanup_scheduler:
+ interval: 1 minute
+ class: Scheduler::AccountsStatusesCleanupScheduler
+ queue: scheduler
diff --git a/config/initializers/pagination.rb b/config/storage.yml
similarity index 100%
rename from config/initializers/pagination.rb
rename to config/storage.yml
diff --git a/config/webpack/production.js b/config/webpack/production.js
index f1d0dabae..cd3d01035 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -43,7 +43,7 @@ module.exports = merge(sharedConfig, {
plugins: [
new CompressionPlugin({
- filename: '[path].gz[query]',
+ filename: '[path][base].gz[query]',
cache: true,
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/,
}),
diff --git a/config/webpack/tests.js b/config/webpack/tests.js
index f9d39f1b8..84f008eac 100644
--- a/config/webpack/tests.js
+++ b/config/webpack/tests.js
@@ -1,7 +1,7 @@
// Note: You must restart bin/webpack-dev-server for changes to take effect
const { merge } = require('webpack-merge');
-const sharedConfig = require('./shared.js');
+const sharedConfig = require('./shared');
module.exports = merge(sharedConfig, {
mode: 'development',
diff --git a/db/migrate/20160223165723_add_url_to_statuses.rb b/db/migrate/20160223165723_add_url_to_statuses.rb
index 80f4b3289..fee7f9c59 100644
--- a/db/migrate/20160223165723_add_url_to_statuses.rb
+++ b/db/migrate/20160223165723_add_url_to_statuses.rb
@@ -1,4 +1,4 @@
-class AddUrlToStatuses < ActiveRecord::Migration[4.2]
+class AddURLToStatuses < ActiveRecord::Migration[4.2]
def change
add_column :statuses, :url, :string, null: true, default: nil
end
diff --git a/db/migrate/20160223165855_add_url_to_accounts.rb b/db/migrate/20160223165855_add_url_to_accounts.rb
index c81b1c64f..a4db8814a 100644
--- a/db/migrate/20160223165855_add_url_to_accounts.rb
+++ b/db/migrate/20160223165855_add_url_to_accounts.rb
@@ -1,4 +1,4 @@
-class AddUrlToAccounts < ActiveRecord::Migration[4.2]
+class AddURLToAccounts < ActiveRecord::Migration[4.2]
def change
add_column :accounts, :url, :string, null: true, default: nil
end
diff --git a/db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb b/db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb
index f9c213d9b..0792863a3 100644
--- a/db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb
+++ b/db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb
@@ -1,4 +1,4 @@
-class AddAvatarRemoteUrlToAccounts < ActiveRecord::Migration[4.2]
+class AddAvatarRemoteURLToAccounts < ActiveRecord::Migration[4.2]
def change
add_column :accounts, :avatar_remote_url, :string, null: true, default: nil
end
diff --git a/db/migrate/20161006213403_rails_settings_migration.rb b/db/migrate/20161006213403_rails_settings_migration.rb
index 42875d7cb..9d565cb5c 100644
--- a/db/migrate/20161006213403_rails_settings_migration.rb
+++ b/db/migrate/20161006213403_rails_settings_migration.rb
@@ -7,12 +7,12 @@ end
class RailsSettingsMigration < MIGRATION_BASE_CLASS
def self.up
create_table :settings do |t|
- t.string :var, :null => false
+ t.string :var, null: false
t.text :value
- t.references :target, :null => false, :polymorphic => true
- t.timestamps :null => true
+ t.references :target, null: false, polymorphic: true, index: { name: 'index_settings_on_target_type_and_target_id' }
+ t.timestamps null: true
end
- add_index :settings, [ :target_type, :target_id, :var ], :unique => true
+ add_index :settings, [ :target_type, :target_id, :var ], unique: true
end
def self.down
diff --git a/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb b/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb
index 0ba38d3e0..20c965988 100644
--- a/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb
+++ b/db/migrate/20170318214217_add_header_remote_url_to_accounts.rb
@@ -1,4 +1,4 @@
-class AddHeaderRemoteUrlToAccounts < ActiveRecord::Migration[5.0]
+class AddHeaderRemoteURLToAccounts < ActiveRecord::Migration[5.0]
def change
add_column :accounts, :header_remote_url, :string, null: false, default: ''
end
diff --git a/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb b/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
index c10aa2c4f..8679f8ece 100644
--- a/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
+++ b/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
@@ -1,7 +1,7 @@
class StatusIdsToTimestampIds < ActiveRecord::Migration[5.1]
def up
# Prepare the function we will use to generate IDs.
- Rake::Task['db:define_timestamp_id'].execute
+ Mastodon::Snowflake.define_timestamp_id
# Set up the statuses.id column to use our timestamp-based IDs.
ActiveRecord::Base.connection.execute(<<~SQL)
@@ -11,7 +11,7 @@ class StatusIdsToTimestampIds < ActiveRecord::Migration[5.1]
SQL
# Make sure we have a sequence to use.
- Rake::Task['db:ensure_id_sequences_exist'].execute
+ Mastodon::Snowflake.ensure_id_sequences_exist
end
def down
diff --git a/db/migrate/20171119172437_create_admin_action_logs.rb b/db/migrate/20171119172437_create_admin_action_logs.rb
index 0c2b6c623..b690735d2 100644
--- a/db/migrate/20171119172437_create_admin_action_logs.rb
+++ b/db/migrate/20171119172437_create_admin_action_logs.rb
@@ -3,7 +3,7 @@ class CreateAdminActionLogs < ActiveRecord::Migration[5.1]
create_table :admin_action_logs do |t|
t.belongs_to :account, foreign_key: { on_delete: :cascade }
t.string :action, null: false, default: ''
- t.references :target, polymorphic: true
+ t.references :target, polymorphic: true, index: { name: 'index_admin_action_logs_on_target_type_and_target_id' }
t.text :recorded_changes, null: false, default: ''
t.timestamps
diff --git a/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb b/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb
index d19c0091b..8fcabef9f 100644
--- a/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb
+++ b/db/migrate/20171130000000_add_embed_url_to_preview_cards.rb
@@ -1,6 +1,6 @@
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
-class AddEmbedUrlToPreviewCards < ActiveRecord::Migration[5.1]
+class AddEmbedURLToPreviewCards < ActiveRecord::Migration[5.1]
include Mastodon::MigrationHelpers
disable_ddl_transaction!
diff --git a/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb b/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb
index e0b8ed5cc..1964b5121 100644
--- a/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb
+++ b/db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb
@@ -1,4 +1,4 @@
-class AddFeaturedCollectionUrlToAccounts < ActiveRecord::Migration[5.1]
+class AddFeaturedCollectionURLToAccounts < ActiveRecord::Migration[5.1]
def change
add_column :accounts, :featured_collection_url, :string
end
diff --git a/db/migrate/20180528141303_fix_accounts_unique_index.rb b/db/migrate/20180528141303_fix_accounts_unique_index.rb
index 5d7b3c463..02813f363 100644
--- a/db/migrate/20180528141303_fix_accounts_unique_index.rb
+++ b/db/migrate/20180528141303_fix_accounts_unique_index.rb
@@ -37,7 +37,7 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
end
end
- duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_hash
+ duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_ary
duplicates.each do |row|
deduplicate_account!(row['ids'].split(','))
diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb
index 12e0a70fa..9e6497d81 100644
--- a/db/migrate/20181024224956_migrate_account_conversations.rb
+++ b/db/migrate/20181024224956_migrate_account_conversations.rb
@@ -17,8 +17,8 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
belongs_to :account, optional: true
belongs_to :activity, polymorphic: true, optional: true
- belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', optional: true
- belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id', optional: true
+ belongs_to :status, foreign_key: 'activity_id', optional: true
+ belongs_to :mention, foreign_key: 'activity_id', optional: true
def target_status
mention&.status
diff --git a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
index 65f1fc8d9..e27e0249d 100644
--- a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
+++ b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb
@@ -2,7 +2,7 @@ class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
- duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_hash
+ duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_ary
duplicates.each do |row|
CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all
diff --git a/db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb b/db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb
index 057fc86ba..3a6527f65 100644
--- a/db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb
+++ b/db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb
@@ -2,7 +2,7 @@ class AddCaseInsensitiveIndexToTags < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
- Tag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM tags GROUP BY lower(name) HAVING count(*) > 1').to_hash.each do |row|
+ Tag.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM tags GROUP BY lower(name) HAVING count(*) > 1').to_ary.each do |row|
canonical_tag_id = row['ids'].split(',').first
redundant_tag_ids = row['ids'].split(',')[1..-1]
@@ -15,7 +15,13 @@ class AddCaseInsensitiveIndexToTags < ActiveRecord::Migration[5.2]
Tag.where(id: redundant_tag_ids).in_batches.delete_all
end
- safety_assured { execute 'CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))' }
+ begin
+ safety_assured { execute 'CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))' }
+ rescue ActiveRecord::StatementInvalid
+ remove_index :tags, name: 'index_tags_on_name_lower'
+ raise
+ end
+
remove_index :tags, name: 'index_tags_on_name'
remove_index :tags, name: 'hashtag_search_index'
end
diff --git a/db/migrate/20200508212852_reset_unique_jobs_locks.rb b/db/migrate/20200508212852_reset_unique_jobs_locks.rb
index 3ffdeb0aa..d717ffc54 100644
--- a/db/migrate/20200508212852_reset_unique_jobs_locks.rb
+++ b/db/migrate/20200508212852_reset_unique_jobs_locks.rb
@@ -3,9 +3,9 @@ class ResetUniqueJobsLocks < ActiveRecord::Migration[5.2]
def up
# We do this to clean up unique job digests that were not properly
- # disposed of prior to https://github.com/tootsuite/mastodon/pull/13361
+ # disposed of prior to https://github.com/mastodon/mastodon/pull/13361
- SidekiqUniqueJobs::Digests.delete_by_pattern('*', count: SidekiqUniqueJobs::Digests.count)
+ until SidekiqUniqueJobs::Digests.new.delete_by_pattern('*').nil?; end
end
def down; end
diff --git a/db/migrate/20200529214050_add_devices_url_to_accounts.rb b/db/migrate/20200529214050_add_devices_url_to_accounts.rb
index 564877e5d..1323f8df7 100644
--- a/db/migrate/20200529214050_add_devices_url_to_accounts.rb
+++ b/db/migrate/20200529214050_add_devices_url_to_accounts.rb
@@ -1,4 +1,4 @@
-class AddDevicesUrlToAccounts < ActiveRecord::Migration[5.2]
+class AddDevicesURLToAccounts < ActiveRecord::Migration[5.2]
def change
add_column :accounts, :devices_url, :string
end
diff --git a/db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb b/db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb
index c3aa8e33c..366bf9aa7 100644
--- a/db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb
+++ b/db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb
@@ -1,16 +1,10 @@
+require Rails.root.join('lib', 'mastodon', 'migration_helpers')
+
class AddFixedLowercaseIndexToAccounts < ActiveRecord::Migration[5.2]
+ include Mastodon::MigrationHelpers
+
disable_ddl_transaction!
- class CorruptionError < StandardError
- def cause
- nil
- end
-
- def backtrace
- []
- end
- end
-
def up
if index_name_exists?(:accounts, 'old_index_accounts_on_username_and_domain_lower') && index_name_exists?(:accounts, 'index_accounts_on_username_and_domain_lower')
remove_index :accounts, name: 'index_accounts_on_username_and_domain_lower'
@@ -21,7 +15,8 @@ class AddFixedLowercaseIndexToAccounts < ActiveRecord::Migration[5.2]
begin
add_index :accounts, "lower (username), COALESCE(lower(domain), '')", name: 'index_accounts_on_username_and_domain_lower', unique: true, algorithm: :concurrently
rescue ActiveRecord::RecordNotUnique
- raise CorruptionError, 'Migration failed because of index corruption, see https://docs.joinmastodon.org/admin/troubleshooting/index-corruption/#fixing'
+ remove_index :accounts, name: 'index_accounts_on_username_and_domain_lower'
+ raise CorruptionError
end
remove_index :accounts, name: 'old_index_accounts_on_username_and_domain_lower' if index_name_exists?(:accounts, 'old_index_accounts_on_username_and_domain_lower')
diff --git a/db/migrate/20210221045109_create_rules.rb b/db/migrate/20210221045109_create_rules.rb
new file mode 100644
index 000000000..abe2fd42a
--- /dev/null
+++ b/db/migrate/20210221045109_create_rules.rb
@@ -0,0 +1,11 @@
+class CreateRules < ActiveRecord::Migration[5.2]
+ def change
+ create_table :rules do |t|
+ t.integer :priority, null: false, default: 0
+ t.datetime :deleted_at
+ t.text :text, null: false, default: ''
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
new file mode 100644
index 000000000..39cd4cdea
--- /dev/null
+++ b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
@@ -0,0 +1,17 @@
+class AccountIdsToTimestampIds < ActiveRecord::Migration[5.1]
+ def up
+ # Set up the accounts.id column to use our timestamp-based IDs.
+ safety_assured do
+ execute("ALTER TABLE accounts ALTER COLUMN id SET DEFAULT timestamp_id('accounts')")
+ end
+
+ # Make sure we have a sequence to use.
+ Mastodon::Snowflake.ensure_id_sequences_exist
+ end
+
+ def down
+ execute("LOCK accounts")
+ execute("SELECT setval('accounts_id_seq', (SELECT MAX(id) FROM accounts))")
+ execute("ALTER TABLE accounts ALTER COLUMN id SET DEFAULT nextval('accounts_id_seq')")
+ end
+end
diff --git a/db/migrate/20210322164601_create_account_summaries.rb b/db/migrate/20210322164601_create_account_summaries.rb
new file mode 100644
index 000000000..bc9011113
--- /dev/null
+++ b/db/migrate/20210322164601_create_account_summaries.rb
@@ -0,0 +1,9 @@
+class CreateAccountSummaries < ActiveRecord::Migration[5.2]
+ def change
+ create_view :account_summaries, materialized: { no_data: true }
+
+ # To be able to refresh the view concurrently,
+ # at least one unique index is required
+ safety_assured { add_index :account_summaries, :account_id, unique: true }
+ end
+end
diff --git a/db/migrate/20210323114347_create_follow_recommendations.rb b/db/migrate/20210323114347_create_follow_recommendations.rb
new file mode 100644
index 000000000..77e729032
--- /dev/null
+++ b/db/migrate/20210323114347_create_follow_recommendations.rb
@@ -0,0 +1,5 @@
+class CreateFollowRecommendations < ActiveRecord::Migration[5.2]
+ def change
+ create_view :follow_recommendations
+ end
+end
diff --git a/db/migrate/20210324171613_create_follow_recommendation_suppressions.rb b/db/migrate/20210324171613_create_follow_recommendation_suppressions.rb
new file mode 100644
index 000000000..c17a0be63
--- /dev/null
+++ b/db/migrate/20210324171613_create_follow_recommendation_suppressions.rb
@@ -0,0 +1,9 @@
+class CreateFollowRecommendationSuppressions < ActiveRecord::Migration[6.1]
+ def change
+ create_table :follow_recommendation_suppressions do |t|
+ t.references :account, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true }
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20210416200740_create_canonical_email_blocks.rb b/db/migrate/20210416200740_create_canonical_email_blocks.rb
new file mode 100644
index 000000000..32c44646c
--- /dev/null
+++ b/db/migrate/20210416200740_create_canonical_email_blocks.rb
@@ -0,0 +1,10 @@
+class CreateCanonicalEmailBlocks < ActiveRecord::Migration[6.1]
+ def change
+ create_table :canonical_email_blocks do |t|
+ t.string :canonical_email_hash, null: false, default: '', index: { unique: true }
+ t.belongs_to :reference_account, null: false, foreign_key: { to_table: 'accounts' }
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20210421121431_add_case_insensitive_btree_index_to_tags.rb b/db/migrate/20210421121431_add_case_insensitive_btree_index_to_tags.rb
new file mode 100644
index 000000000..e492c9e86
--- /dev/null
+++ b/db/migrate/20210421121431_add_case_insensitive_btree_index_to_tags.rb
@@ -0,0 +1,24 @@
+require Rails.root.join('lib', 'mastodon', 'migration_helpers')
+
+class AddCaseInsensitiveBtreeIndexToTags < ActiveRecord::Migration[5.2]
+ include Mastodon::MigrationHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ begin
+ safety_assured { execute 'CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower_btree ON tags (lower(name) text_pattern_ops)' }
+ rescue ActiveRecord::StatementInvalid => e
+ remove_index :tags, name: 'index_tags_on_name_lower_btree'
+ raise CorruptionError if e.is_a?(ActiveRecord::RecordNotUnique)
+ raise e
+ end
+
+ remove_index :tags, name: 'index_tags_on_name_lower'
+ end
+
+ def down
+ safety_assured { execute 'CREATE UNIQUE INDEX CONCURRENTLY index_tags_on_name_lower ON tags (lower(name))' }
+ remove_index :tags, name: 'index_tags_on_name_lower_btree'
+ end
+end
diff --git a/db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb b/db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb
new file mode 100644
index 000000000..5ef2d3c39
--- /dev/null
+++ b/db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb
@@ -0,0 +1,13 @@
+class AddIndexOnMediaAttachmentsAccountIdStatusId < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ add_index :media_attachments, [:account_id, :status_id], order: { status_id: :desc }, algorithm: :concurrently
+ remove_index :media_attachments, :account_id, algorithm: :concurrently
+ end
+
+ def down
+ add_index :media_attachments, :account_id, algorithm: :concurrently
+ remove_index :media_attachments, [:account_id, :status_id], order: { status_id: :desc }, algorithm: :concurrently
+ end
+end
diff --git a/db/migrate/20210505174616_update_follow_recommendations_to_version_2.rb b/db/migrate/20210505174616_update_follow_recommendations_to_version_2.rb
new file mode 100644
index 000000000..56c0b4cb0
--- /dev/null
+++ b/db/migrate/20210505174616_update_follow_recommendations_to_version_2.rb
@@ -0,0 +1,18 @@
+class UpdateFollowRecommendationsToVersion2 < ActiveRecord::Migration[6.1]
+ # We're switching from a normal to a materialized view so we need
+ # custom `up` and `down` paths.
+
+ def up
+ drop_view :follow_recommendations
+ create_view :follow_recommendations, version: 2, materialized: { no_data: true }
+
+ # To be able to refresh the view concurrently,
+ # at least one unique index is required
+ safety_assured { add_index :follow_recommendations, :account_id, unique: true }
+ end
+
+ def down
+ drop_view :follow_recommendations, materialized: true
+ create_view :follow_recommendations, version: 1
+ end
+end
diff --git a/db/migrate/20210609202149_create_login_activities.rb b/db/migrate/20210609202149_create_login_activities.rb
new file mode 100644
index 000000000..38e147c32
--- /dev/null
+++ b/db/migrate/20210609202149_create_login_activities.rb
@@ -0,0 +1,14 @@
+class CreateLoginActivities < ActiveRecord::Migration[6.1]
+ def change
+ create_table :login_activities do |t|
+ t.belongs_to :user, null: false, foreign_key: { on_delete: :cascade }
+ t.string :authentication_method
+ t.string :provider
+ t.boolean :success
+ t.string :failure_reason
+ t.inet :ip
+ t.string :user_agent
+ t.datetime :created_at
+ end
+ end
+end
diff --git a/db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb b/db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb
new file mode 100644
index 000000000..43ad9b954
--- /dev/null
+++ b/db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb
@@ -0,0 +1,5 @@
+class AddSkipSignInTokenToUsers < ActiveRecord::Migration[6.1]
+ def change
+ add_column :users, :skip_sign_in_token, :boolean
+ end
+end
diff --git a/db/migrate/20210630000137_fix_canonical_email_blocks_foreign_key.rb b/db/migrate/20210630000137_fix_canonical_email_blocks_foreign_key.rb
new file mode 100644
index 000000000..64cf84448
--- /dev/null
+++ b/db/migrate/20210630000137_fix_canonical_email_blocks_foreign_key.rb
@@ -0,0 +1,13 @@
+class FixCanonicalEmailBlocksForeignKey < ActiveRecord::Migration[6.1]
+ def up
+ safety_assured do
+ execute 'ALTER TABLE canonical_email_blocks DROP CONSTRAINT fk_rails_1ecb262096, ADD CONSTRAINT fk_rails_1ecb262096 FOREIGN KEY (reference_account_id) REFERENCES accounts(id) ON DELETE CASCADE;'
+ end
+ end
+
+ def down
+ safety_assured do
+ execute 'ALTER TABLE canonical_email_blocks DROP CONSTRAINT fk_rails_1ecb262096, ADD CONSTRAINT fk_rails_1ecb262096 FOREIGN KEY (reference_account_id) REFERENCES accounts(id);'
+ end
+ end
+end
diff --git a/db/migrate/20210722120340_create_account_statuses_cleanup_policies.rb b/db/migrate/20210722120340_create_account_statuses_cleanup_policies.rb
new file mode 100644
index 000000000..28cfb6ef5
--- /dev/null
+++ b/db/migrate/20210722120340_create_account_statuses_cleanup_policies.rb
@@ -0,0 +1,20 @@
+class CreateAccountStatusesCleanupPolicies < ActiveRecord::Migration[6.1]
+ def change
+ create_table :account_statuses_cleanup_policies do |t|
+ t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade }
+ t.boolean :enabled, null: false, default: true
+ t.integer :min_status_age, null: false, default: 2.weeks.seconds
+ t.boolean :keep_direct, null: false, default: true
+ t.boolean :keep_pinned, null: false, default: true
+ t.boolean :keep_polls, null: false, default: false
+ t.boolean :keep_media, null: false, default: false
+ t.boolean :keep_self_fav, null: false, default: true
+ t.boolean :keep_self_bookmark, null: false, default: true
+ t.integer :min_favs, null: true
+ t.integer :min_reblogs, null: true
+
+ t.timestamps
+ end
+ end
+end
+
diff --git a/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb b/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb
new file mode 100644
index 000000000..53e24ef26
--- /dev/null
+++ b/db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb
@@ -0,0 +1,7 @@
+class RemoveSubscriptionExpiresAtFromAccounts < ActiveRecord::Migration[5.0]
+ def change
+ safety_assured do
+ remove_column :accounts, :subscription_expires_at, :datetime, null: true, default: nil
+ end
+ end
+end
diff --git a/db/post_migrate/20210502233513_drop_account_tag_stats.rb b/db/post_migrate/20210502233513_drop_account_tag_stats.rb
new file mode 100644
index 000000000..80adadcab
--- /dev/null
+++ b/db/post_migrate/20210502233513_drop_account_tag_stats.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class DropAccountTagStats < ActiveRecord::Migration[5.2]
+ disable_ddl_transaction!
+
+ def up
+ drop_table :account_tag_stats
+ end
+
+ def down
+ raise ActiveRecord::IrreversibleMigration
+ end
+end
diff --git a/db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb b/db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb
new file mode 100644
index 000000000..83a1f5fcf
--- /dev/null
+++ b/db/post_migrate/20210507001928_remove_hub_url_from_accounts.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class RemoveHubURLFromAccounts < ActiveRecord::Migration[5.2]
+ def change
+ safety_assured do
+ remove_column :accounts, :secret, :string, null: false, default: ''
+ remove_column :accounts, :remote_url, :string, null: false, default: ''
+ remove_column :accounts, :salmon_url, :string, null: false, default: ''
+ remove_column :accounts, :hub_url, :string, null: false, default: ''
+ end
+ end
+end
diff --git a/db/post_migrate/20210526193025_remove_lock_version_from_account_stats.rb b/db/post_migrate/20210526193025_remove_lock_version_from_account_stats.rb
new file mode 100644
index 000000000..3079bed09
--- /dev/null
+++ b/db/post_migrate/20210526193025_remove_lock_version_from_account_stats.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class RemoveLockVersionFromAccountStats < ActiveRecord::Migration[5.2]
+ def change
+ safety_assured do
+ remove_column :account_stats, :lock_version, :integer, null: false, default: 0
+ end
+ end
+end
diff --git a/db/post_migrate/20210808071221_clear_orphaned_account_notes.rb b/db/post_migrate/20210808071221_clear_orphaned_account_notes.rb
new file mode 100644
index 000000000..71171658a
--- /dev/null
+++ b/db/post_migrate/20210808071221_clear_orphaned_account_notes.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class ClearOrphanedAccountNotes < ActiveRecord::Migration[5.2]
+ class Account < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ end
+
+ class AccountNote < ApplicationRecord
+ # Dummy class, to make migration possible across version changes
+ belongs_to :account
+ belongs_to :target_account, class_name: 'Account'
+ end
+
+ def up
+ AccountNote.where('NOT EXISTS (SELECT * FROM users u WHERE u.account_id = account_notes.account_id)').in_batches.delete_all
+ end
+
+ def down
+ # nothing to do
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index a76e34e95..badf39d8e 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -2,15 +2,15 @@
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
-# Note that this schema.rb definition is the authoritative source for your
-# database schema. If you need to create the application database on another
-# system, you should be using db:schema:load, not running all the migrations
-# from scratch. The latter is a flawed and unsustainable approach (the more migrations
-# you'll amass, the slower it'll run and the greater likelihood for issues).
+# This file is the source Rails uses to define your schema when running `bin/rails
+# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
+# be faster and is potentially less error prone than running all of your
+# migrations from scratch. Old migrations may fail to apply correctly if those
+# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2020_12_18_054746) do
+ActiveRecord::Schema.define(version: 2021_08_08_071221) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -111,17 +111,24 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "last_status_at"
- t.integer "lock_version", default: 0, null: false
t.index ["account_id"], name: "index_account_stats_on_account_id", unique: true
end
- create_table "account_tag_stats", force: :cascade do |t|
- t.bigint "tag_id", null: false
- t.bigint "accounts_count", default: 0, null: false
- t.boolean "hidden", default: false, null: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- t.index ["tag_id"], name: "index_account_tag_stats_on_tag_id", unique: true
+ create_table "account_statuses_cleanup_policies", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.boolean "enabled", default: true, null: false
+ t.integer "min_status_age", default: 1209600, null: false
+ t.boolean "keep_direct", default: true, null: false
+ t.boolean "keep_pinned", default: true, null: false
+ t.boolean "keep_polls", default: false, null: false
+ t.boolean "keep_media", default: false, null: false
+ t.boolean "keep_self_fav", default: true, null: false
+ t.boolean "keep_self_bookmark", default: true, null: false
+ t.integer "min_favs"
+ t.integer "min_reblogs"
+ t.datetime "created_at", precision: 6, null: false
+ t.datetime "updated_at", precision: 6, null: false
+ t.index ["account_id"], name: "index_account_statuses_cleanup_policies_on_account_id"
end
create_table "account_warning_presets", force: :cascade do |t|
@@ -142,15 +149,11 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.index ["target_account_id"], name: "index_account_warnings_on_target_account_id"
end
- create_table "accounts", force: :cascade do |t|
+ create_table "accounts", id: :bigint, default: -> { "timestamp_id('accounts'::text)" }, force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
- t.string "secret", default: "", null: false
t.text "private_key"
t.text "public_key", default: "", null: false
- t.string "remote_url", default: "", null: false
- t.string "salmon_url", default: "", null: false
- t.string "hub_url", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.text "note", default: "", null: false
@@ -166,7 +169,6 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.integer "header_file_size"
t.datetime "header_updated_at"
t.string "avatar_remote_url"
- t.datetime "subscription_expires_at"
t.boolean "locked", default: false, null: false
t.string "header_remote_url", default: "", null: false
t.datetime "last_webfingered_at"
@@ -281,6 +283,15 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.index ["status_id"], name: "index_bookmarks_on_status_id"
end
+ create_table "canonical_email_blocks", force: :cascade do |t|
+ t.string "canonical_email_hash", default: "", null: false
+ t.bigint "reference_account_id", null: false
+ t.datetime "created_at", precision: 6, null: false
+ t.datetime "updated_at", precision: 6, null: false
+ t.index ["canonical_email_hash"], name: "index_canonical_email_blocks_on_canonical_email_hash", unique: true
+ t.index ["reference_account_id"], name: "index_canonical_email_blocks_on_reference_account_id"
+ end
+
create_table "conversation_mutes", force: :cascade do |t|
t.bigint "conversation_id", null: false
t.bigint "account_id", null: false
@@ -407,6 +418,13 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.index ["tag_id"], name: "index_featured_tags_on_tag_id"
end
+ create_table "follow_recommendation_suppressions", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.datetime "created_at", precision: 6, null: false
+ t.datetime "updated_at", precision: 6, null: false
+ t.index ["account_id"], name: "index_follow_recommendation_suppressions_on_account_id", unique: true
+ end
+
create_table "follow_requests", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -493,6 +511,18 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.index ["account_id"], name: "index_lists_on_account_id"
end
+ create_table "login_activities", force: :cascade do |t|
+ t.bigint "user_id", null: false
+ t.string "authentication_method"
+ t.string "provider"
+ t.boolean "success"
+ t.string "failure_reason"
+ t.inet "ip"
+ t.string "user_agent"
+ t.datetime "created_at"
+ t.index ["user_id"], name: "index_login_activities_on_user_id"
+ end
+
create_table "markers", force: :cascade do |t|
t.bigint "user_id"
t.string "timeline", default: "", null: false
@@ -526,7 +556,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.integer "thumbnail_file_size"
t.datetime "thumbnail_updated_at"
t.string "thumbnail_remote_url"
- t.index ["account_id"], name: "index_media_attachments_on_account_id"
+ t.index ["account_id", "status_id"], name: "index_media_attachments_on_account_id_and_status_id", order: { status_id: :desc }
t.index ["scheduled_status_id"], name: "index_media_attachments_on_scheduled_status_id"
t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true
t.index ["status_id"], name: "index_media_attachments_on_status_id"
@@ -723,6 +753,14 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.index ["target_account_id"], name: "index_reports_on_target_account_id"
end
+ create_table "rules", force: :cascade do |t|
+ t.integer "priority", default: 0, null: false
+ t.datetime "deleted_at"
+ t.text "text", default: "", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
create_table "scheduled_statuses", force: :cascade do |t|
t.bigint "account_id"
t.datetime "scheduled_at"
@@ -841,7 +879,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.datetime "last_status_at"
t.float "max_score"
t.datetime "max_score_at"
- t.index "lower((name)::text)", name: "index_tags_on_name_lower", unique: true
+ t.index "lower((name)::text) text_pattern_ops", name: "index_tags_on_name_lower_btree", unique: true
end
create_table "tombstones", force: :cascade do |t|
@@ -908,6 +946,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
t.datetime "sign_in_token_sent_at"
t.string "webauthn_id"
t.inet "sign_up_ip"
+ t.boolean "skip_sign_in_token"
t.index ["account_id"], name: "index_users_on_account_id"
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id"
@@ -964,7 +1003,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade
add_foreign_key "account_pins", "accounts", on_delete: :cascade
add_foreign_key "account_stats", "accounts", on_delete: :cascade
- add_foreign_key "account_tag_stats", "tags", on_delete: :cascade
+ add_foreign_key "account_statuses_cleanup_policies", "accounts", on_delete: :cascade
add_foreign_key "account_warnings", "accounts", column: "target_account_id", on_delete: :cascade
add_foreign_key "account_warnings", "accounts", on_delete: :nullify
add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify
@@ -979,6 +1018,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
add_foreign_key "blocks", "accounts", name: "fk_4269e03e65", on_delete: :cascade
add_foreign_key "bookmarks", "accounts", on_delete: :cascade
add_foreign_key "bookmarks", "statuses", on_delete: :cascade
+ add_foreign_key "canonical_email_blocks", "accounts", column: "reference_account_id", on_delete: :cascade
add_foreign_key "conversation_mutes", "accounts", name: "fk_225b4212bb", on_delete: :cascade
add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade
add_foreign_key "custom_filters", "accounts", on_delete: :cascade
@@ -991,6 +1031,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
add_foreign_key "favourites", "statuses", name: "fk_b0e856845e", on_delete: :cascade
add_foreign_key "featured_tags", "accounts", on_delete: :cascade
add_foreign_key "featured_tags", "tags", on_delete: :cascade
+ add_foreign_key "follow_recommendation_suppressions", "accounts", on_delete: :cascade
add_foreign_key "follow_requests", "accounts", column: "target_account_id", name: "fk_9291ec025d", on_delete: :cascade
add_foreign_key "follow_requests", "accounts", name: "fk_76d644b0e7", on_delete: :cascade
add_foreign_key "follows", "accounts", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade
@@ -1002,6 +1043,7 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
add_foreign_key "list_accounts", "follows", on_delete: :cascade
add_foreign_key "list_accounts", "lists", on_delete: :cascade
add_foreign_key "lists", "accounts", on_delete: :cascade
+ add_foreign_key "login_activities", "users", on_delete: :cascade
add_foreign_key "markers", "users", on_delete: :cascade
add_foreign_key "media_attachments", "accounts", name: "fk_96dd81e81b", on_delete: :nullify
add_foreign_key "media_attachments", "scheduled_statuses", on_delete: :nullify
@@ -1074,4 +1116,51 @@ ActiveRecord::Schema.define(version: 2020_12_18_054746) do
SQL
add_index "instances", ["domain"], name: "index_instances_on_domain", unique: true
+ create_view "account_summaries", materialized: true, sql_definition: <<-SQL
+ SELECT accounts.id AS account_id,
+ mode() WITHIN GROUP (ORDER BY t0.language) AS language,
+ mode() WITHIN GROUP (ORDER BY t0.sensitive) AS sensitive
+ FROM (accounts
+ CROSS JOIN LATERAL ( SELECT statuses.account_id,
+ statuses.language,
+ statuses.sensitive
+ FROM statuses
+ WHERE ((statuses.account_id = accounts.id) AND (statuses.deleted_at IS NULL))
+ ORDER BY statuses.id DESC
+ LIMIT 20) t0)
+ WHERE ((accounts.suspended_at IS NULL) AND (accounts.silenced_at IS NULL) AND (accounts.moved_to_account_id IS NULL) AND (accounts.discoverable = true) AND (accounts.locked = false))
+ GROUP BY accounts.id;
+ SQL
+ add_index "account_summaries", ["account_id"], name: "index_account_summaries_on_account_id", unique: true
+
+ create_view "follow_recommendations", materialized: true, sql_definition: <<-SQL
+ SELECT t0.account_id,
+ sum(t0.rank) AS rank,
+ array_agg(t0.reason) AS reason
+ FROM ( SELECT account_summaries.account_id,
+ ((count(follows.id))::numeric / (1.0 + (count(follows.id))::numeric)) AS rank,
+ 'most_followed'::text AS reason
+ FROM (((follows
+ JOIN account_summaries ON ((account_summaries.account_id = follows.target_account_id)))
+ JOIN users ON ((users.account_id = follows.account_id)))
+ LEFT JOIN follow_recommendation_suppressions ON ((follow_recommendation_suppressions.account_id = follows.target_account_id)))
+ WHERE ((users.current_sign_in_at >= (now() - 'P30D'::interval)) AND (account_summaries.sensitive = false) AND (follow_recommendation_suppressions.id IS NULL))
+ GROUP BY account_summaries.account_id
+ HAVING (count(follows.id) >= 5)
+ UNION ALL
+ SELECT account_summaries.account_id,
+ (sum((status_stats.reblogs_count + status_stats.favourites_count)) / (1.0 + sum((status_stats.reblogs_count + status_stats.favourites_count)))) AS rank,
+ 'most_interactions'::text AS reason
+ FROM (((status_stats
+ JOIN statuses ON ((statuses.id = status_stats.status_id)))
+ JOIN account_summaries ON ((account_summaries.account_id = statuses.account_id)))
+ LEFT JOIN follow_recommendation_suppressions ON ((follow_recommendation_suppressions.account_id = statuses.account_id)))
+ WHERE ((statuses.id >= (((date_part('epoch'::text, (now() - 'P30D'::interval)) * (1000)::double precision))::bigint << 16)) AND (account_summaries.sensitive = false) AND (follow_recommendation_suppressions.id IS NULL))
+ GROUP BY account_summaries.account_id
+ HAVING (sum((status_stats.reblogs_count + status_stats.favourites_count)) >= (5)::numeric)) t0
+ GROUP BY t0.account_id
+ ORDER BY (sum(t0.rank)) DESC;
+ SQL
+ add_index "follow_recommendations", ["account_id"], name: "index_follow_recommendations_on_account_id", unique: true
+
end
diff --git a/db/views/account_summaries_v01.sql b/db/views/account_summaries_v01.sql
new file mode 100644
index 000000000..5a632b622
--- /dev/null
+++ b/db/views/account_summaries_v01.sql
@@ -0,0 +1,22 @@
+SELECT
+ accounts.id AS account_id,
+ mode() WITHIN GROUP (ORDER BY language ASC) AS language,
+ mode() WITHIN GROUP (ORDER BY sensitive ASC) AS sensitive
+FROM accounts
+CROSS JOIN LATERAL (
+ SELECT
+ statuses.account_id,
+ statuses.language,
+ statuses.sensitive
+ FROM statuses
+ WHERE statuses.account_id = accounts.id
+ AND statuses.deleted_at IS NULL
+ ORDER BY statuses.id DESC
+ LIMIT 20
+) t0
+WHERE accounts.suspended_at IS NULL
+ AND accounts.silenced_at IS NULL
+ AND accounts.moved_to_account_id IS NULL
+ AND accounts.discoverable = 't'
+ AND accounts.locked = 'f'
+GROUP BY accounts.id
diff --git a/db/views/follow_recommendations_v01.sql b/db/views/follow_recommendations_v01.sql
new file mode 100644
index 000000000..799abeaee
--- /dev/null
+++ b/db/views/follow_recommendations_v01.sql
@@ -0,0 +1,38 @@
+SELECT
+ account_id,
+ sum(rank) AS rank,
+ array_agg(reason) AS reason
+FROM (
+ SELECT
+ accounts.id AS account_id,
+ count(follows.id) / (1.0 + count(follows.id)) AS rank,
+ 'most_followed' AS reason
+ FROM follows
+ INNER JOIN accounts ON accounts.id = follows.target_account_id
+ INNER JOIN users ON users.account_id = follows.account_id
+ WHERE users.current_sign_in_at >= (now() - interval '30 days')
+ AND accounts.suspended_at IS NULL
+ AND accounts.moved_to_account_id IS NULL
+ AND accounts.silenced_at IS NULL
+ AND accounts.locked = 'f'
+ AND accounts.discoverable = 't'
+ GROUP BY accounts.id
+ HAVING count(follows.id) >= 5
+ UNION ALL
+ SELECT accounts.id AS account_id,
+ sum(reblogs_count + favourites_count) / (1.0 + sum(reblogs_count + favourites_count)) AS rank,
+ 'most_interactions' AS reason
+ FROM status_stats
+ INNER JOIN statuses ON statuses.id = status_stats.status_id
+ INNER JOIN accounts ON accounts.id = statuses.account_id
+ WHERE statuses.id >= ((date_part('epoch', now() - interval '30 days') * 1000)::bigint << 16)
+ AND accounts.suspended_at IS NULL
+ AND accounts.moved_to_account_id IS NULL
+ AND accounts.silenced_at IS NULL
+ AND accounts.locked = 'f'
+ AND accounts.discoverable = 't'
+ GROUP BY accounts.id
+ HAVING sum(reblogs_count + favourites_count) >= 5
+) t0
+GROUP BY account_id
+ORDER BY rank DESC
diff --git a/db/views/follow_recommendations_v02.sql b/db/views/follow_recommendations_v02.sql
new file mode 100644
index 000000000..673c5cc85
--- /dev/null
+++ b/db/views/follow_recommendations_v02.sql
@@ -0,0 +1,34 @@
+SELECT
+ account_id,
+ sum(rank) AS rank,
+ array_agg(reason) AS reason
+FROM (
+ SELECT
+ account_summaries.account_id AS account_id,
+ count(follows.id) / (1.0 + count(follows.id)) AS rank,
+ 'most_followed' AS reason
+ FROM follows
+ INNER JOIN account_summaries ON account_summaries.account_id = follows.target_account_id
+ INNER JOIN users ON users.account_id = follows.account_id
+ LEFT OUTER JOIN follow_recommendation_suppressions ON follow_recommendation_suppressions.account_id = follows.target_account_id
+ WHERE users.current_sign_in_at >= (now() - interval '30 days')
+ AND account_summaries.sensitive = 'f'
+ AND follow_recommendation_suppressions.id IS NULL
+ GROUP BY account_summaries.account_id
+ HAVING count(follows.id) >= 5
+ UNION ALL
+ SELECT account_summaries.account_id AS account_id,
+ sum(reblogs_count + favourites_count) / (1.0 + sum(reblogs_count + favourites_count)) AS rank,
+ 'most_interactions' AS reason
+ FROM status_stats
+ INNER JOIN statuses ON statuses.id = status_stats.status_id
+ INNER JOIN account_summaries ON account_summaries.account_id = statuses.account_id
+ LEFT OUTER JOIN follow_recommendation_suppressions ON follow_recommendation_suppressions.account_id = statuses.account_id
+ WHERE statuses.id >= ((date_part('epoch', now() - interval '30 days') * 1000)::bigint << 16)
+ AND account_summaries.sensitive = 'f'
+ AND follow_recommendation_suppressions.id IS NULL
+ GROUP BY account_summaries.account_id
+ HAVING sum(reblogs_count + favourites_count) >= 5
+) t0
+GROUP BY account_id
+ORDER BY rank DESC
diff --git a/dist/mastodon-sidekiq.service b/dist/mastodon-sidekiq.service
index 721a86609..35b121cd7 100644
--- a/dist/mastodon-sidekiq.service
+++ b/dist/mastodon-sidekiq.service
@@ -9,9 +9,37 @@ WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=25"
Environment="MALLOC_ARENA_MAX=2"
+Environment="LD_PRELOAD=libjemalloc.so"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 25
TimeoutSec=15
Restart=always
+# Capabilities
+CapabilityBoundingSet=
+# Security
+NoNewPrivileges=true
+# Sandboxing
+ProtectSystem=strict
+PrivateTmp=true
+PrivateDevices=true
+PrivateUsers=true
+ProtectHostname=true
+ProtectKernelLogs=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectControlGroups=true
+RestrictAddressFamilies=AF_INET
+RestrictAddressFamilies=AF_INET6
+RestrictAddressFamilies=AF_NETLINK
+RestrictAddressFamilies=AF_UNIX
+RestrictNamespaces=true
+LockPersonality=true
+RestrictRealtime=true
+RestrictSUIDSGID=true
+PrivateMounts=true
+ProtectClock=true
+# System Call Filtering
+SystemCallArchitectures=native
+SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @setuid @swap
[Install]
WantedBy=multi-user.target
diff --git a/dist/mastodon-streaming.service b/dist/mastodon-streaming.service
index c324fccf4..0befc529a 100644
--- a/dist/mastodon-streaming.service
+++ b/dist/mastodon-streaming.service
@@ -12,6 +12,33 @@ Environment="STREAMING_CLUSTER_NUM=1"
ExecStart=/usr/bin/node ./streaming
TimeoutSec=15
Restart=always
+# Capabilities
+CapabilityBoundingSet=
+# Security
+NoNewPrivileges=true
+# Sandboxing
+ProtectSystem=strict
+PrivateTmp=true
+PrivateDevices=true
+PrivateUsers=true
+ProtectHostname=true
+ProtectKernelLogs=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectControlGroups=true
+RestrictAddressFamilies=AF_INET
+RestrictAddressFamilies=AF_INET6
+RestrictAddressFamilies=AF_NETLINK
+RestrictAddressFamilies=AF_UNIX
+RestrictNamespaces=true
+LockPersonality=true
+RestrictRealtime=true
+RestrictSUIDSGID=true
+PrivateMounts=true
+ProtectClock=true
+# System Call Filtering
+SystemCallArchitectures=native
+SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @privileged @raw-io @reboot @resources @setuid @swap
[Install]
WantedBy=multi-user.target
diff --git a/dist/mastodon-web.service b/dist/mastodon-web.service
index 30fcbec1e..f41efd2b0 100644
--- a/dist/mastodon-web.service
+++ b/dist/mastodon-web.service
@@ -8,10 +8,38 @@ User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="PORT=3000"
+Environment="LD_PRELOAD=libjemalloc.so"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID
TimeoutSec=15
Restart=always
+# Capabilities
+CapabilityBoundingSet=
+# Security
+NoNewPrivileges=true
+# Sandboxing
+ProtectSystem=strict
+PrivateTmp=true
+PrivateDevices=true
+PrivateUsers=true
+ProtectHostname=true
+ProtectKernelLogs=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectControlGroups=true
+RestrictAddressFamilies=AF_INET
+RestrictAddressFamilies=AF_INET6
+RestrictAddressFamilies=AF_NETLINK
+RestrictAddressFamilies=AF_UNIX
+RestrictNamespaces=true
+LockPersonality=true
+RestrictRealtime=true
+RestrictSUIDSGID=true
+PrivateMounts=true
+ProtectClock=true
+# System Call Filtering
+SystemCallArchitectures=native
+SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @resources @setuid @swap
[Install]
WantedBy=multi-user.target
diff --git a/dist/nginx.conf b/dist/nginx.conf
index a0429d2aa..27ca868ab 100644
--- a/dist/nginx.conf
+++ b/dist/nginx.conf
@@ -31,6 +31,7 @@ server {
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
+ ssl_session_tickets off;
# Uncomment these lines once you acquire a certificate:
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
@@ -51,7 +52,7 @@ server {
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
- add_header Strict-Transport-Security "max-age=31536000";
+ add_header Strict-Transport-Security "max-age=31536000" always;
location / {
try_files $uri @proxy;
@@ -59,13 +60,13 @@ server {
location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
add_header Cache-Control "public, max-age=31536000, immutable";
- add_header Strict-Transport-Security "max-age=31536000";
+ add_header Strict-Transport-Security "max-age=31536000" always;
try_files $uri @proxy;
}
location /sw.js {
add_header Cache-Control "public, max-age=0";
- add_header Strict-Transport-Security "max-age=31536000";
+ add_header Strict-Transport-Security "max-age=31536000" always;
try_files $uri @proxy;
}
@@ -89,7 +90,7 @@ server {
proxy_cache_valid 410 24h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cached $upstream_cache_status;
- add_header Strict-Transport-Security "max-age=31536000";
+ add_header Strict-Transport-Security "max-age=31536000" always;
tcp_nodelay on;
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 52eea7a74..459813b3f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -14,7 +14,7 @@ services:
redis:
restart: always
- image: redis:6.0-alpine
+ image: redis:6-alpine
networks:
- internal_network
healthcheck:
diff --git a/lib/action_dispatch/cookie_jar_extensions.rb b/lib/action_dispatch/cookie_jar_extensions.rb
new file mode 100644
index 000000000..1be9053ba
--- /dev/null
+++ b/lib/action_dispatch/cookie_jar_extensions.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module ActionDispatch
+ module CookieJarExtensions
+ private
+
+ # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service
+ # users. Otherwise, ActionDispatch would drop the cookie over HTTP.
+ def write_cookie?(*)
+ request.host.end_with?('.onion') || super
+ end
+ end
+end
+
+ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions)
+
+module Rack
+ module SessionPersistedExtensions
+ def security_matches?(request, options)
+ request.host.end_with?('.onion') || super
+ end
+ end
+end
+
+Rack::Session::Abstract::Persisted.prepend(Rack::SessionPersistedExtensions)
diff --git a/lib/active_record/batches.rb b/lib/active_record/batches.rb
new file mode 100644
index 000000000..55d29e52e
--- /dev/null
+++ b/lib/active_record/batches.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+module ActiveRecord
+ module Batches
+ def pluck_each(*column_names)
+ relation = self
+
+ options = column_names.extract_options!
+
+ flatten = column_names.size == 1
+ batch_limit = options[:batch_limit] || 1_000
+ order = options[:order] || :asc
+
+ column_names.unshift(primary_key)
+
+ relation = relation.reorder(batch_order(order)).limit(batch_limit)
+ relation.skip_query_cache!
+
+ batch_relation = relation
+
+ loop do
+ batch = batch_relation.pluck(*column_names)
+
+ break if batch.empty?
+
+ primary_key_offset = batch.last[0]
+
+ batch.each do |record|
+ if flatten
+ yield record[1]
+ else
+ yield record[1..-1]
+ end
+ end
+
+ break if batch.size < batch_limit
+
+ batch_relation = relation.where(
+ predicate_builder[primary_key, primary_key_offset, order == :desc ? :lt : :gt]
+ )
+ end
+ end
+ end
+end
diff --git a/lib/active_record/database_tasks_extensions.rb b/lib/active_record/database_tasks_extensions.rb
new file mode 100644
index 000000000..e274f476d
--- /dev/null
+++ b/lib/active_record/database_tasks_extensions.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+require_relative '../mastodon/snowflake'
+
+module ActiveRecord
+ module Tasks
+ module DatabaseTasks
+ original_load_schema = instance_method(:load_schema)
+
+ define_method(:load_schema) do |db_config, *args|
+ ActiveRecord::Base.establish_connection(db_config)
+ Mastodon::Snowflake.define_timestamp_id
+
+ original_load_schema.bind(self).call(db_config, *args)
+
+ Mastodon::Snowflake.ensure_id_sequences_exist
+ end
+ end
+ end
+end
diff --git a/lib/enumerable.rb b/lib/enumerable.rb
new file mode 100644
index 000000000..66918f65e
--- /dev/null
+++ b/lib/enumerable.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module Enumerable
+ # TODO: Remove this once stop to support Ruby 2.6
+ if RUBY_VERSION < '2.7.0'
+ def filter_map
+ if block_given?
+ result = []
+ each do |element|
+ res = yield element
+ result << res if res
+ end
+ result
+ else
+ Enumerator.new do |yielder|
+ result = []
+ each do |element|
+ res = yielder.yield element
+ result << res if res
+ end
+ result
+ end
+ end
+ end
+ end
+end
diff --git a/app/lib/exceptions.rb b/lib/exceptions.rb
similarity index 92%
rename from app/lib/exceptions.rb
rename to lib/exceptions.rb
index 7c8e77871..eb472abaa 100644
--- a/app/lib/exceptions.rb
+++ b/lib/exceptions.rb
@@ -12,7 +12,11 @@ module Mastodon
class RateLimitExceededError < Error; end
class UnexpectedResponseError < Error
+ attr_reader :response
+
def initialize(response = nil)
+ @response = response
+
if response.respond_to? :uri
super("#{response.uri} returned code #{response.code}")
else
diff --git a/lib/json_ld/identity.rb b/lib/json_ld/identity.rb
index 4fb3f8e9d..f41899150 100644
--- a/lib/json_ld/identity.rb
+++ b/lib/json_ld/identity.rb
@@ -1,4 +1,3 @@
-# -*- encoding: utf-8 -*-
# frozen_string_literal: true
# This file generated automatically from http://w3id.org/identity/v1
require 'json/ld'
diff --git a/lib/json_ld/security.rb b/lib/json_ld/security.rb
index a6fbce95f..ef5391340 100644
--- a/lib/json_ld/security.rb
+++ b/lib/json_ld/security.rb
@@ -1,4 +1,3 @@
-# -*- encoding: utf-8 -*-
# frozen_string_literal: true
# This file generated automatically from http://w3id.org/security/v1
require 'json/ld'
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index 653bfca30..050194801 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -54,7 +54,8 @@ module Mastodon
option :email, required: true
option :confirmed, type: :boolean
- option :role, default: 'user'
+ option :role, default: 'user', enum: %w(user moderator admin)
+ option :skip_sign_in_token, type: :boolean
option :reattach, type: :boolean
option :force, type: :boolean
desc 'create USERNAME', 'Create a new user'
@@ -68,6 +69,9 @@ module Mastodon
With the --role option one of "user", "admin" or "moderator"
can be supplied. Defaults to "user"
+ With the --skip-sign-in-token option, you can ensure that
+ the user is never asked for an e-mailed security code.
+
With the --reattach option, the new user will be reattached
to a given existing username of an old account. If the old
account is still in use by someone else, you can supply
@@ -77,7 +81,7 @@ module Mastodon
def create(username)
account = Account.new(username: username)
password = SecureRandom.hex
- user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true)
+ user = User.new(email: options[:email], password: password, agreement: true, approved: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil, bypass_invite_request_check: true, skip_sign_in_token: options[:skip_sign_in_token])
if options[:reattach]
account = Account.find_local(username) || Account.new(username: username)
@@ -113,7 +117,7 @@ module Mastodon
end
end
- option :role
+ option :role, enum: %w(user moderator admin)
option :email
option :confirm, type: :boolean
option :enable, type: :boolean
@@ -121,6 +125,7 @@ module Mastodon
option :disable_2fa, type: :boolean
option :approve, type: :boolean
option :reset_password, type: :boolean
+ option :skip_sign_in_token, type: :boolean
desc 'modify USERNAME', 'Modify a user'
long_desc <<-LONG_DESC
Modify a user account.
@@ -142,6 +147,9 @@ module Mastodon
With the --reset-password option, the user's password is replaced by
a randomly-generated one, printed in the output.
+
+ With the --skip-sign-in-token option, you can ensure that
+ the user is never asked for an e-mailed security code.
LONG_DESC
def modify(username)
user = Account.find_local(username)&.user
@@ -163,6 +171,7 @@ module Mastodon
user.disabled = true if options[:disable]
user.approved = true if options[:approve]
user.otp_required_for_login = false if options[:disable_2fa]
+ user.skip_sign_in_token = options[:skip_sign_in_token] unless options[:skip_sign_in_token].nil?
user.confirm if options[:confirm]
if user.save
@@ -402,7 +411,7 @@ module Mastodon
exit(1)
end
- parallelize_with_progress(target_account.followers.local) do |account|
+ processed, = parallelize_with_progress(target_account.followers.local) do |account|
UnfollowService.new.call(account, target_account)
end
diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb
index ed22f44b2..aaee1fa91 100644
--- a/lib/mastodon/cli_helper.rb
+++ b/lib/mastodon/cli_helper.rb
@@ -25,7 +25,9 @@ module Mastodon
exit(1)
end
- ActiveRecord::Base.configurations[Rails.env]['pool'] = options[:concurrency] + 1
+ db_config = ActiveRecord::Base.configurations[Rails.env].dup
+ db_config['pool'] = options[:concurrency] + 1
+ ActiveRecord::Base.establish_connection(db_config)
progress = create_progress_bar(scope.count)
pool = Concurrent::FixedThreadPool.new(options[:concurrency])
diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb
index 3c2dfd4ec..a7c78c4a7 100644
--- a/lib/mastodon/domains_cli.rb
+++ b/lib/mastodon/domains_cli.rb
@@ -17,6 +17,7 @@ module Mastodon
option :verbose, type: :boolean, aliases: [:v]
option :dry_run, type: :boolean
option :limited_federation_mode, type: :boolean
+ option :by_uri, type: :boolean
desc 'purge [DOMAIN...]', 'Remove accounts from a DOMAIN without a trace'
long_desc <<-LONG_DESC
Remove all accounts from a given DOMAIN without leaving behind any
@@ -26,6 +27,12 @@ module Mastodon
When the --limited-federation-mode option is given, instead of purging accounts
from a single domain, all accounts from domains that have not been explicitly allowed
are removed from the database.
+
+ When the --by-uri option is given, DOMAIN is used to match the domain part of actor
+ URIs rather than the domain part of the webfinger handle. For instance, an account
+ that has the handle `foo@bar.com` but whose profile is at the URL
+ `https://mastodon-bar.com/users/foo`, would be purged by either
+ `tootctl domains purge bar.com` or `tootctl domains purge --by-uri mastodon-bar.com`.
LONG_DESC
def purge(*domains)
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
@@ -34,7 +41,11 @@ module Mastodon
if options[:limited_federation_mode]
Account.remote.where.not(domain: DomainAllow.pluck(:domain))
elsif !domains.empty?
- Account.remote.where(domain: domains)
+ if options[:by_uri]
+ domains.map { |domain| Account.remote.where(Account.arel_table[:uri].matches("https://#{domain}/%", false, true)) }.reduce(:or)
+ else
+ Account.remote.where(domain: domains)
+ end
else
say('No domain(s) given', :red)
exit(1)
@@ -93,7 +104,7 @@ module Mastodon
work_unit = ->(domain) do
next if stats.key?(domain)
- next if options[:exclude_suspended] && domain.match(blocked_domains)
+ next if options[:exclude_suspended] && domain.match?(blocked_domains)
stats[domain] = nil
diff --git a/lib/mastodon/email_domain_blocks_cli.rb b/lib/mastodon/email_domain_blocks_cli.rb
index 55a637d68..f79df302a 100644
--- a/lib/mastodon/email_domain_blocks_cli.rb
+++ b/lib/mastodon/email_domain_blocks_cli.rb
@@ -113,7 +113,7 @@ module Mastodon
result = entry.destroy
if result
- processed += 1 + children_count
+ processed += children_count + 1
else
say("#{domain} could not be unblocked.", :red)
failed += 1
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
index 0a1f538e6..5bee70ea5 100644
--- a/lib/mastodon/emoji_cli.rb
+++ b/lib/mastodon/emoji_cli.rb
@@ -49,7 +49,7 @@ module Mastodon
next if filename.start_with?('._')
shortcode = [options[:prefix], filename, options[:suffix]].compact.join
- custom_emoji = CustomEmoji.local.find_by(shortcode: shortcode)
+ custom_emoji = CustomEmoji.local.find_by("LOWER(shortcode) = ?", shortcode.downcase)
if custom_emoji && !options[:overwrite]
skipped += 1
diff --git a/lib/mastodon/maintenance_cli.rb b/lib/mastodon/maintenance_cli.rb
index 822051ceb..47e2d78bb 100644
--- a/lib/mastodon/maintenance_cli.rb
+++ b/lib/mastodon/maintenance_cli.rb
@@ -14,7 +14,7 @@ module Mastodon
end
MIN_SUPPORTED_VERSION = 2019_10_01_213028
- MAX_SUPPORTED_VERSION = 2020_12_18_054746
+ MAX_SUPPORTED_VERSION = 2021_05_26_193025
# Stubs to enjoy ActiveRecord queries while not depending on a particular
# version of the code/database
@@ -42,6 +42,8 @@ module Mastodon
class CustomEmojiCategory < ApplicationRecord; end
class Bookmark < ApplicationRecord; end
class WebauthnCredential < ApplicationRecord; end
+ class FollowRecommendationSuppression < ApplicationRecord; end
+ class CanonicalEmailBlock < ApplicationRecord; end
class PreviewCard < ApplicationRecord
self.inheritance_column = false
@@ -88,6 +90,7 @@ module Mastodon
]
owned_classes << AccountDeletionRequest if ActiveRecord::Base.connection.table_exists?(:account_deletion_requests)
owned_classes << AccountNote if ActiveRecord::Base.connection.table_exists?(:account_notes)
+ owned_classes << FollowRecommendationSuppression if ActiveRecord::Base.connection.table_exists?(:follow_recommendation_suppressions)
owned_classes.each do |klass|
klass.where(account_id: other_account.id).find_each do |record|
@@ -111,6 +114,12 @@ module Mastodon
end
end
end
+
+ if ActiveRecord::Base.connection.table_exists?(:canonical_email_blocks)
+ CanonicalEmailBlock.where(reference_account_id: other_account.id).find_each do |record|
+ record.update_attribute(:reference_account_id, id)
+ end
+ end
end
end
@@ -142,7 +151,6 @@ module Mastodon
@prompt.warn 'Please make sure to stop Mastodon and have a backup.'
exit(1) unless @prompt.yes?('Continue?')
- deduplicate_accounts!
deduplicate_users!
deduplicate_account_domain_blocks!
deduplicate_account_identity_proofs!
@@ -157,9 +165,11 @@ module Mastodon
deduplicate_media_attachments!
deduplicate_preview_cards!
deduplicate_statuses!
+ deduplicate_accounts!
deduplicate_tags!
deduplicate_webauthn_credentials!
+ Scenic.database.refresh_materialized_view('instances', concurrently: true, cascade: false) if ActiveRecord::Migrator.current_version >= 2020_12_06_004238
Rails.cache.clear
@prompt.say 'Finished!'
@@ -188,6 +198,11 @@ module Mastodon
else
ActiveRecord::Base.connection.add_index :accounts, "lower (username), COALESCE(lower(domain), '')", name: 'index_accounts_on_username_and_domain_lower', unique: true
end
+
+ @prompt.say 'Reindexing textual indexes on accounts…'
+ ActiveRecord::Base.connection.execute('REINDEX INDEX search_index;')
+ ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_uri;')
+ ActiveRecord::Base.connection.execute('REINDEX INDEX index_accounts_on_url;')
end
def deduplicate_users!
@@ -460,6 +475,11 @@ module Mastodon
@prompt.say 'Restoring tags indexes…'
ActiveRecord::Base.connection.add_index :tags, 'lower((name)::text)', name: 'index_tags_on_name_lower', unique: true
+
+ if ActiveRecord::Base.connection.indexes(:tags).any? { |i| i.name == 'index_tags_on_name_lower_btree' }
+ @prompt.say 'Reindexing textual indexes on tags…'
+ ActiveRecord::Base.connection.execute('REINDEX INDEX index_tags_on_name_lower_btree;')
+ end
end
def deduplicate_webauthn_credentials!
diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb
index 5f4a414b1..59c118500 100644
--- a/lib/mastodon/media_cli.rb
+++ b/lib/mastodon/media_cli.rb
@@ -326,7 +326,7 @@ module Mastodon
end
preload_map.each_with_object({}) do |(model_name, record_ids), model_map|
- model_map[model_name] = model_name.constantize.where(id: record_ids).each_with_object({}) { |record, record_map| record_map[record.id] = record }
+ model_map[model_name] = model_name.constantize.where(id: record_ids).index_by(&:id)
end
end
end
diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb
index bf2314ecb..39a6e0680 100644
--- a/lib/mastodon/migration_helpers.rb
+++ b/lib/mastodon/migration_helpers.rb
@@ -41,42 +41,32 @@
module Mastodon
module MigrationHelpers
- # Stub for Database.postgresql? from GitLab
- def self.postgresql?
- ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp('postgresql').zero?
- end
+ class CorruptionError < StandardError
+ def initialize(message = nil)
+ super(message.presence || 'Migration failed because of index corruption, see https://docs.joinmastodon.org/admin/troubleshooting/index-corruption/#fixing')
+ end
- # Stub for Database.mysql? from GitLab
- def self.mysql?
- ActiveRecord::Base.configurations[Rails.env]['adapter'].casecmp('mysql2').zero?
+ def cause
+ nil
+ end
+
+ def backtrace
+ []
+ end
end
# Model that can be used for querying permissions of a SQL user.
class Grant < ActiveRecord::Base
- self.table_name =
- if Mastodon::MigrationHelpers.postgresql?
- 'information_schema.role_table_grants'
- else
- 'mysql.user'
- end
+ self.table_name = 'information_schema.role_table_grants'
def self.scope_to_current_user
- if Mastodon::MigrationHelpers.postgresql?
- where('grantee = user')
- else
- where("CONCAT(User, '@', Host) = current_user()")
- end
+ where('grantee = user')
end
# Returns true if the current user can create and execute triggers on the
# given table.
def self.create_and_execute_trigger?(table)
- priv =
- if Mastodon::MigrationHelpers.postgresql?
- where(privilege_type: 'TRIGGER', table_name: table)
- else
- where(Trigger_priv: 'Y')
- end
+ priv = where(privilege_type: 'TRIGGER', table_name: table)
priv.scope_to_current_user.any?
end
@@ -119,7 +109,7 @@ module Mastodon
allow_null: options[:null]
)
else
- add_column(table_name, column_name, :datetime_with_timezone, options)
+ add_column(table_name, column_name, :datetime_with_timezone, **options)
end
end
end
@@ -141,12 +131,10 @@ module Mastodon
'in the body of your migration class'
end
- if MigrationHelpers.postgresql?
- options = options.merge({ algorithm: :concurrently })
- disable_statement_timeout
- end
+ options = options.merge({ algorithm: :concurrently })
+ disable_statement_timeout
- add_index(table_name, column_name, options)
+ add_index(table_name, column_name, **options)
end
# Removes an existed index, concurrently when supported
@@ -170,7 +158,7 @@ module Mastodon
disable_statement_timeout
end
- remove_index(table_name, options.merge({ column: column_name }))
+ remove_index(table_name, **options.merge({ column: column_name }))
end
# Removes an existing index, concurrently when supported
@@ -194,13 +182,11 @@ module Mastodon
disable_statement_timeout
end
- remove_index(table_name, options.merge({ name: index_name }))
+ remove_index(table_name, **options.merge({ name: index_name }))
end
# Only available on Postgresql >= 9.2
def supports_drop_index_concurrently?
- return false unless MigrationHelpers.postgresql?
-
version = select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i
version >= 90200
@@ -226,13 +212,7 @@ module Mastodon
# While MySQL does allow disabling of foreign keys it has no equivalent
# of PostgreSQL's "VALIDATE CONSTRAINT". As a result we'll just fall
# back to the normal foreign key procedure.
- if MigrationHelpers.mysql?
- return add_foreign_key(source, target,
- column: column,
- on_delete: on_delete)
- else
- on_delete = 'SET NULL' if on_delete == :nullify
- end
+ on_delete = 'SET NULL' if on_delete == :nullify
disable_statement_timeout
@@ -270,7 +250,7 @@ module Mastodon
# the database. Disable the session's statement timeout to ensure
# migrations don't get killed prematurely. (PostgreSQL only)
def disable_statement_timeout
- execute('SET statement_timeout TO 0') if MigrationHelpers.postgresql?
+ execute('SET statement_timeout TO 0')
end
# Updates the value of a column in batches.
@@ -319,7 +299,7 @@ module Mastodon
count_arel = table.project(Arel.star.count.as('count'))
count_arel = yield table, count_arel if block_given?
- total = exec_query(count_arel.to_sql).to_hash.first['count'].to_i
+ total = exec_query(count_arel.to_sql).to_ary.first['count'].to_i
return if total == 0
end
@@ -335,7 +315,7 @@ module Mastodon
start_arel = table.project(table[:id]).order(table[:id].asc).take(1)
start_arel = yield table, start_arel if block_given?
- first_row = exec_query(start_arel.to_sql).to_hash.first
+ first_row = exec_query(start_arel.to_sql).to_ary.first
# In case there are no rows but we didn't catch it in the estimated size:
return unless first_row
start_id = first_row['id'].to_i
@@ -356,7 +336,7 @@ module Mastodon
.skip(batch_size)
stop_arel = yield table, stop_arel if block_given?
- stop_row = exec_query(stop_arel.to_sql).to_hash.first
+ stop_row = exec_query(stop_arel.to_sql).to_ary.first
update_arel = Arel::UpdateManager.new
.table(table)
@@ -487,11 +467,7 @@ module Mastodon
# If we were in the middle of update_column_in_batches, we should remove
# the old column and start over, as we have no idea where we were.
if column_for(table, new)
- if MigrationHelpers.postgresql?
- remove_rename_triggers_for_postgresql(table, trigger_name)
- else
- remove_rename_triggers_for_mysql(trigger_name)
- end
+ remove_rename_triggers_for_postgresql(table, trigger_name)
remove_column(table, new)
end
@@ -510,7 +486,7 @@ module Mastodon
col_opts[:limit] = old_col.limit
end
- add_column(table, new, new_type, col_opts)
+ add_column(table, new, new_type, **col_opts)
# We set the default value _after_ adding the column so we don't end up
# updating any existing data with the default value. This isn't
@@ -521,13 +497,8 @@ module Mastodon
quoted_old = quote_column_name(old)
quoted_new = quote_column_name(new)
- if MigrationHelpers.postgresql?
- install_rename_triggers_for_postgresql(trigger_name, quoted_table,
- quoted_old, quoted_new)
- else
- install_rename_triggers_for_mysql(trigger_name, quoted_table,
- quoted_old, quoted_new)
- end
+ install_rename_triggers_for_postgresql(trigger_name, quoted_table,
+ quoted_old, quoted_new)
update_column_in_batches(table, new, Arel::Table.new(table)[old])
@@ -553,10 +524,10 @@ module Mastodon
new_pk_index_name = "index_#{table}_on_#{column}_cm"
unless indexes_for(table, column).find{|i| i.name == old_pk_index_name}
- add_concurrent_index(table, [temp_column], {
+ add_concurrent_index(table, [temp_column],
unique: true,
name: new_pk_index_name
- })
+ )
end
end
end
@@ -685,11 +656,7 @@ module Mastodon
check_trigger_permissions!(table)
- if MigrationHelpers.postgresql?
- remove_rename_triggers_for_postgresql(table, trigger_name)
- else
- remove_rename_triggers_for_mysql(trigger_name)
- end
+ remove_rename_triggers_for_postgresql(table, trigger_name)
remove_column(table, old)
end
@@ -810,7 +777,7 @@ module Mastodon
options[:using] = index.using if index.using
options[:where] = index.where if index.where
- add_concurrent_index(table, new_columns, options)
+ add_concurrent_index(table, new_columns, **options)
end
end
@@ -844,18 +811,9 @@ module Mastodon
quoted_pattern = Arel::Nodes::Quoted.new(pattern.to_s)
quoted_replacement = Arel::Nodes::Quoted.new(replacement.to_s)
- if MigrationHelpers.mysql?
- locate = Arel::Nodes::NamedFunction
- .new('locate', [quoted_pattern, column])
- insert_in_place = Arel::Nodes::NamedFunction
- .new('insert', [column, locate, pattern.size, quoted_replacement])
-
- Arel::Nodes::SqlLiteral.new(insert_in_place.to_sql)
- else
- replace = Arel::Nodes::NamedFunction
- .new("regexp_replace", [column, quoted_pattern, quoted_replacement])
- Arel::Nodes::SqlLiteral.new(replace.to_sql)
- end
+ replace = Arel::Nodes::NamedFunction
+ .new("regexp_replace", [column, quoted_pattern, quoted_replacement])
+ Arel::Nodes::SqlLiteral.new(replace.to_sql)
end
def remove_foreign_key_without_error(*args)
diff --git a/lib/mastodon/redis_config.rb b/lib/mastodon/redis_config.rb
index c3c8ff800..5bfd26e34 100644
--- a/lib/mastodon/redis_config.rb
+++ b/lib/mastodon/redis_config.rb
@@ -22,11 +22,21 @@ end
setup_redis_env_url
setup_redis_env_url(:cache, false)
+setup_redis_env_url(:sidekiq, false)
-namespace = ENV.fetch('REDIS_NAMESPACE', nil)
-cache_namespace = namespace ? namespace + '_cache' : 'cache'
+namespace = ENV.fetch('REDIS_NAMESPACE', nil)
+cache_namespace = namespace ? namespace + '_cache' : 'cache'
+sidekiq_namespace = namespace
REDIS_CACHE_PARAMS = {
+ driver: :hiredis,
+ url: ENV['CACHE_REDIS_URL'],
expires_in: 10.minutes,
namespace: cache_namespace,
}.freeze
+
+REDIS_SIDEKIQ_PARAMS = {
+ driver: :hiredis,
+ url: ENV['SIDEKIQ_REDIS_URL'],
+ namespace: sidekiq_namespace,
+}.freeze
diff --git a/lib/mastodon/search_cli.rb b/lib/mastodon/search_cli.rb
index 22a0acec8..0126dfcff 100644
--- a/lib/mastodon/search_cli.rb
+++ b/lib/mastodon/search_cli.rb
@@ -53,7 +53,9 @@ module Mastodon
index.specification.lock!
end
- ActiveRecord::Base.configurations[Rails.env]['pool'] = options[:concurrency] + 1
+ db_config = ActiveRecord::Base.configurations[Rails.env].dup
+ db_config['pool'] = options[:concurrency] + 1
+ ActiveRecord::Base.establish_connection(db_config)
pool = Concurrent::FixedThreadPool.new(options[:concurrency])
added = Concurrent::AtomicFixnum.new(0)
@@ -100,7 +102,7 @@ module Mastodon
ActiveRecord::Base.connection_pool.with_connection do
grouped_records = type.adapter.send(:grouped_objects, records)
- bulk_body = Chewy::Type::Import::BulkBuilder.new(type, grouped_records).bulk_body
+ bulk_body = Chewy::Type::Import::BulkBuilder.new(type, **grouped_records).bulk_body
end
index_count = grouped_records[:index].size if grouped_records.key?(:index)
diff --git a/lib/mastodon/snowflake.rb b/lib/mastodon/snowflake.rb
index 9e5bc7383..8e2d82a97 100644
--- a/lib/mastodon/snowflake.rb
+++ b/lib/mastodon/snowflake.rb
@@ -138,10 +138,11 @@ module Mastodon::Snowflake
end
end
- def id_at(timestamp)
- id = timestamp.to_i * 1000 + rand(1000)
+ def id_at(timestamp, with_random: true)
+ id = timestamp.to_i * 1000
+ id += rand(1000) if with_random
id = id << 16
- id += rand(2**16)
+ id += rand(2**16) if with_random
id
end
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index ee5961abc..d0cac444a 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,11 +9,11 @@ module Mastodon
end
def minor
- 3
+ 4
end
def patch
- 0
+ 1
end
def flags
diff --git a/lib/paperclip/attachment_extensions.rb b/lib/paperclip/attachment_extensions.rb
index 94f7769b6..786f558e9 100644
--- a/lib/paperclip/attachment_extensions.rb
+++ b/lib/paperclip/attachment_extensions.rb
@@ -2,6 +2,39 @@
module Paperclip
module AttachmentExtensions
+ def meta
+ instance_read(:meta)
+ end
+
+ # monkey-patch to avoid unlinking too avoid unlinking source file too early
+ # see https://github.com/kreeti/kt-paperclip/issues/64
+ def post_process_style(name, style) #:nodoc:
+ raise "Style #{name} has no processors defined." if style.processors.blank?
+
+ intermediate_files = []
+ original = @queued_for_write[:original]
+ # if we're processing the original, close + unlink the source tempfile
+ intermediate_files << original if name == :original
+
+ @queued_for_write[name] = style.processors.
+ inject(original) do |file, processor|
+ file = Paperclip.processor(processor).make(file, style.processor_options, self)
+ intermediate_files << file unless file == original
+ file
+ end
+
+ unadapted_file = @queued_for_write[name]
+ @queued_for_write[name] = Paperclip.io_adapters.
+ for(@queued_for_write[name], @options[:adapter_options])
+ unadapted_file.close if unadapted_file.respond_to?(:close)
+ @queued_for_write[name]
+ rescue Paperclip::Errors::NotIdentifiedByImageMagickError => e
+ log("An error was received while processing: #{e.inspect}")
+ (@errors[:processing] ||= []) << e.message if @options[:whiny]
+ ensure
+ unlink_files(intermediate_files)
+ end
+
# We overwrite this method to support delayed processing in
# Sidekiq. Since we process the original file to reduce disk
# usage, and we still want to generate thumbnails straight
@@ -27,7 +60,7 @@ module Paperclip
return true if original_filename == other_filename
return false if original_filename.nil?
- formats = styles.values.map(&:format).compact
+ formats = styles.values.filter_map(&:format)
return false if formats.empty?
diff --git a/lib/paperclip/color_extractor.rb b/lib/paperclip/color_extractor.rb
index f850dc067..d3b8e1022 100644
--- a/lib/paperclip/color_extractor.rb
+++ b/lib/paperclip/color_extractor.rb
@@ -55,7 +55,7 @@ module Paperclip
# If we don't have enough colors for accent and foreground, generate
# new ones by manipulating the background color
(2 - foreground_colors.size).times do |i|
- foreground_colors << lighten_or_darken(background_color, 35 + (15 * i))
+ foreground_colors << lighten_or_darken(background_color, 35 + (i * 15))
end
# We want the color with the highest contrast to background to be the foreground one,
@@ -142,12 +142,12 @@ module Paperclip
g = 0.0
b = 0.0
- if s == 0.0
+ if s.zero?
r = l.to_f
g = l.to_f
b = l.to_f # achromatic
else
- q = l < 0.5 ? l * (1 + s) : l + s - l * s
+ q = l < 0.5 ? l * (s + 1) : l + s - l * s
p = 2 * l - q
r = hue_to_rgb(p, q, h + 1 / 3.0)
g = hue_to_rgb(p, q, h)
diff --git a/lib/paperclip/gif_transcoder.rb b/lib/paperclip/gif_transcoder.rb
index 9f3c8e8be..d14465c01 100644
--- a/lib/paperclip/gif_transcoder.rb
+++ b/lib/paperclip/gif_transcoder.rb
@@ -100,16 +100,19 @@ end
module Paperclip
# This transcoder is only to be used for the MediaAttachment model
- # to convert animated gifs to webm
+ # to convert animated GIFs to videos
+
class GifTranscoder < Paperclip::Processor
def make
return File.open(@file.path) unless needs_convert?
final_file = Paperclip::Transcoder.make(file, options, attachment)
- attachment.instance.file_file_name = File.basename(attachment.instance.file_file_name, '.*') + '.mp4'
- attachment.instance.file_content_type = 'video/mp4'
- attachment.instance.type = MediaAttachment.types[:gifv]
+ if options[:style] == :original
+ attachment.instance.file_file_name = File.basename(attachment.instance.file_file_name, '.*') + '.mp4'
+ attachment.instance.file_content_type = 'video/mp4'
+ attachment.instance.type = MediaAttachment.types[:gifv]
+ end
final_file
end
@@ -117,7 +120,7 @@ module Paperclip
private
def needs_convert?
- options[:style] == :original && GifReader.animated?(file.path)
+ GifReader.animated?(file.path)
end
end
end
diff --git a/lib/paperclip/image_extractor.rb b/lib/paperclip/image_extractor.rb
index aab675a06..17fe4326f 100644
--- a/lib/paperclip/image_extractor.rb
+++ b/lib/paperclip/image_extractor.rb
@@ -31,21 +31,17 @@ module Paperclip
private
def extract_image_from_file!
- ::Av.logger = Paperclip.logger
-
- cli = ::Av.cli
dst = Tempfile.new([File.basename(@file.path, '.*'), '.png'])
dst.binmode
- cli.add_source(@file.path)
- cli.add_destination(dst.path)
- cli.add_output_param loglevel: 'fatal'
-
begin
- cli.run
- rescue Cocaine::ExitStatusError, ::Av::CommandError
+ command = Terrapin::CommandLine.new('ffmpeg', '-i :source -loglevel :loglevel -y :destination', logger: Paperclip.logger)
+ command.run(source: @file.path, destination: dst.path, loglevel: 'fatal')
+ rescue Terrapin::ExitStatusError
dst.close(true)
return nil
+ rescue Terrapin::CommandNotFoundError
+ raise Paperclip::Errors::CommandNotFoundError, 'Could not run the `ffmpeg` command. Please install ffmpeg.'
end
dst
diff --git a/lib/paperclip/media_type_spoof_detector_extensions.rb b/lib/paperclip/media_type_spoof_detector_extensions.rb
deleted file mode 100644
index 43337cc68..000000000
--- a/lib/paperclip/media_type_spoof_detector_extensions.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-module Paperclip
- module MediaTypeSpoofDetectorExtensions
- def mapping_override_mismatch?
- !Array(mapped_content_type).include?(calculated_content_type) && !Array(mapped_content_type).include?(type_from_mime_magic)
- end
-
- def calculated_media_type_from_mime_magic
- @calculated_media_type_from_mime_magic ||= type_from_mime_magic.split('/').first
- end
-
- def calculated_type_mismatch?
- !media_types_from_name.include?(calculated_media_type) && !media_types_from_name.include?(calculated_media_type_from_mime_magic)
- end
-
- def type_from_mime_magic
- @type_from_mime_magic ||= begin
- begin
- File.open(@file.path) do |file|
- MimeMagic.by_magic(file)&.type || ''
- end
- rescue Errno::ENOENT
- ''
- end
- end
- end
-
- def type_from_file_command
- @type_from_file_command ||= FileCommandContentTypeDetector.new(@file.path).detect
- end
- end
-end
-
-Paperclip::MediaTypeSpoofDetector.prepend(Paperclip::MediaTypeSpoofDetectorExtensions)
diff --git a/lib/paperclip/transcoder.rb b/lib/paperclip/transcoder.rb
new file mode 100644
index 000000000..ec1305038
--- /dev/null
+++ b/lib/paperclip/transcoder.rb
@@ -0,0 +1,102 @@
+# frozen_string_literal: true
+
+module Paperclip
+ # This transcoder is only to be used for the MediaAttachment model
+ # to check when uploaded videos are actually gifv's
+ class Transcoder < Paperclip::Processor
+ def initialize(file, options = {}, attachment = nil)
+ super
+
+ @current_format = File.extname(@file.path)
+ @basename = File.basename(@file.path, @current_format)
+ @format = options[:format]
+ @time = options[:time] || 3
+ @passthrough_options = options[:passthrough_options]
+ @convert_options = options[:convert_options].dup
+ end
+
+ def make
+ metadata = VideoMetadataExtractor.new(@file.path)
+
+ unless metadata.valid?
+ Paperclip.log("Unsupported file #{@file.path}")
+ return File.open(@file.path)
+ end
+
+ update_attachment_type(metadata)
+ update_options_from_metadata(metadata)
+
+ destination = Tempfile.new([@basename, @format ? ".#{@format}" : ''])
+ destination.binmode
+
+ @output_options = @convert_options[:output]&.dup || {}
+ @input_options = @convert_options[:input]&.dup || {}
+
+ case @format.to_s
+ when /jpg$/, /jpeg$/, /png$/, /gif$/
+ @input_options['ss'] = @time
+
+ @output_options['f'] = 'image2'
+ @output_options['vframes'] = 1
+ when 'mp4'
+ @output_options['acodec'] = 'aac'
+ @output_options['strict'] = 'experimental'
+ end
+
+ command_arguments, interpolations = prepare_command(destination)
+
+ begin
+ command = Terrapin::CommandLine.new('ffmpeg', command_arguments.join(' '), logger: Paperclip.logger)
+ command.run(interpolations)
+ rescue Terrapin::ExitStatusError => e
+ raise Paperclip::Error, "Error while transcoding #{@basename}: #{e}"
+ rescue Terrapin::CommandNotFoundError
+ raise Paperclip::Errors::CommandNotFoundError, 'Could not run the `ffmpeg` command. Please install ffmpeg.'
+ end
+
+ destination
+ end
+
+ private
+
+ def prepare_command(destination)
+ command_arguments = ['-nostdin']
+ interpolations = {}
+ interpolation_keys = 0
+
+ @input_options.each_pair do |key, value|
+ interpolation_key = interpolation_keys
+ command_arguments << "-#{key} :#{interpolation_key}"
+ interpolations[interpolation_key] = value
+ interpolation_keys += 1
+ end
+
+ command_arguments << '-i :source'
+ interpolations[:source] = @file.path
+
+ @output_options.each_pair do |key, value|
+ interpolation_key = interpolation_keys
+ command_arguments << "-#{key} :#{interpolation_key}"
+ interpolations[interpolation_key] = value
+ interpolation_keys += 1
+ end
+
+ command_arguments << '-y :destination'
+ interpolations[:destination] = destination.path
+
+ [command_arguments, interpolations]
+ end
+
+ def update_options_from_metadata(metadata)
+ return unless @passthrough_options && @passthrough_options[:video_codecs].include?(metadata.video_codec) && @passthrough_options[:audio_codecs].include?(metadata.audio_codec) && @passthrough_options[:colorspaces].include?(metadata.colorspace)
+
+ @format = @passthrough_options[:options][:format] || @format
+ @time = @passthrough_options[:options][:time] || @time
+ @convert_options = @passthrough_options[:options][:convert_options].dup
+ end
+
+ def update_attachment_type(metadata)
+ @attachment.instance.type = MediaAttachment.types[:gifv] unless metadata.audio_codec
+ end
+ end
+end
diff --git a/lib/paperclip/transcoder_extensions.rb b/lib/paperclip/transcoder_extensions.rb
deleted file mode 100644
index c0b2447f3..000000000
--- a/lib/paperclip/transcoder_extensions.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# frozen_string_literal: true
-
-module Paperclip
- module TranscoderExtensions
- # Prevent the transcoder from modifying our meta hash
- def initialize(file, options = {}, attachment = nil)
- meta_value = attachment&.instance_read(:meta)
- super
- attachment&.instance_write(:meta, meta_value)
- end
- end
-end
-
-Paperclip::Transcoder.prepend(Paperclip::TranscoderExtensions)
diff --git a/lib/paperclip/url_generator_extensions.rb b/lib/paperclip/url_generator_extensions.rb
index e1d6df2c2..a2cf5929a 100644
--- a/lib/paperclip/url_generator_extensions.rb
+++ b/lib/paperclip/url_generator_extensions.rb
@@ -2,16 +2,6 @@
module Paperclip
module UrlGeneratorExtensions
- # Monkey-patch Paperclip to use Addressable::URI's normalization instead
- # of the long-deprecated URI.esacpe
- def escape_url(url)
- if url.respond_to?(:escape)
- url.escape
- else
- Addressable::URI.parse(url).normalize.to_str.gsub(escape_regex) { |m| "%#{m.ord.to_s(16).upcase}" }
- end
- end
-
def for_as_default(style_name)
attachment_options[:interpolator].interpolate(default_url, @attachment, style_name)
end
diff --git a/lib/paperclip/video_transcoder.rb b/lib/paperclip/video_transcoder.rb
deleted file mode 100644
index 4d9544231..000000000
--- a/lib/paperclip/video_transcoder.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# frozen_string_literal: true
-
-module Paperclip
- # This transcoder is only to be used for the MediaAttachment model
- # to check when uploaded videos are actually gifv's
- class VideoTranscoder < Paperclip::Processor
- def make
- movie = FFMPEG::Movie.new(@file.path)
-
- attachment.instance.type = MediaAttachment.types[:gifv] unless movie.audio_codec
-
- Paperclip::Transcoder.make(file, actual_options(movie), attachment)
- end
-
- private
-
- def actual_options(movie)
- opts = options[:passthrough_options]
- if opts && opts[:video_codecs].include?(movie.video_codec) && opts[:audio_codecs].include?(movie.audio_codec) && opts[:colorspaces].include?(movie.colorspace)
- opts[:options]
- else
- options
- end
- end
- end
-end
diff --git a/lib/rails/engine_extensions.rb b/lib/rails/engine_extensions.rb
new file mode 100644
index 000000000..4848b15f2
--- /dev/null
+++ b/lib/rails/engine_extensions.rb
@@ -0,0 +1,11 @@
+module Rails
+ module EngineExtensions
+ # Rewrite task loading code to filter digitalocean.rake task
+ def run_tasks_blocks(app)
+ Railtie.instance_method(:run_tasks_blocks).bind(self).call(app)
+ paths["lib/tasks"].existent.reject { |ext| ext.end_with?('digitalocean.rake') }.sort.each { |ext| load(ext) }
+ end
+ end
+end
+
+Rails::Engine.prepend(Rails::EngineExtensions)
diff --git a/app/lib/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb
similarity index 93%
rename from app/lib/sanitize_config.rb
rename to lib/sanitize_ext/sanitize_config.rb
index 0fb415bd1..ecaec2f84 100644
--- a/app/lib/sanitize_config.rb
+++ b/lib/sanitize_ext/sanitize_config.rb
@@ -28,9 +28,9 @@ class Sanitize
return unless class_list
class_list.keep_if do |e|
- next true if e =~ /^(h|p|u|dt|e)-/ # microformats classes
- next true if e =~ /^(mention|hashtag)$/ # semantic classes
- next true if e =~ /^(ellipsis|invisible)$/ # link formatting classes
+ next true if /^(h|p|u|dt|e)-/.match?(e) # microformats classes
+ next true if /^(mention|hashtag)$/.match?(e) # semantic classes
+ next true if /^(ellipsis|invisible)$/.match?(e) # link formatting classes
end
node['class'] = class_list.join(' ')
diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake
index f6c9c7eec..b2a0d61de 100644
--- a/lib/tasks/db.rake
+++ b/lib/tasks/db.rake
@@ -1,36 +1,5 @@
# frozen_string_literal: true
-require_relative '../mastodon/snowflake'
-
-def each_schema_load_environment
- # If we're in development, also run this for the test environment.
- # This is a somewhat hacky way to do this, so here's why:
- # 1. We have to define this before we load the schema, or we won't
- # have a timestamp_id function when we get to it in the schema.
- # 2. db:setup calls db:schema:load_if_ruby, which calls
- # db:schema:load, which we define above as having a prerequisite
- # of this task.
- # 3. db:schema:load ends up running
- # ActiveRecord::Tasks::DatabaseTasks.load_schema_current, which
- # calls a private method `each_current_configuration`, which
- # explicitly also does the loading for the `test` environment
- # if the current environment is `development`, so we end up
- # needing to do the same, and we can't even use the same method
- # to do it.
-
- if Rails.env.development?
- test_conf = ActiveRecord::Base.configurations['test']
-
- if test_conf['database']&.present?
- ActiveRecord::Base.establish_connection(:test)
- yield
- ActiveRecord::Base.establish_connection(Rails.env.to_sym)
- end
- end
-
- yield
-end
-
namespace :db do
namespace :migrate do
desc 'Setup the db or migrate depending on state of db'
@@ -50,40 +19,21 @@ namespace :db do
task :post_migration_hook do
at_exit do
- unless %w(C POSIX).include?(ActiveRecord::Base.connection.execute('SELECT datcollate FROM pg_database WHERE datname = current_database();').first['datcollate'])
+ unless %w(C POSIX).include?(ActiveRecord::Base.connection.select_one('SELECT datcollate FROM pg_database WHERE datname = current_database();')['datcollate'])
warn <<~WARNING
Your database collation is susceptible to index corruption.
- (This warning does not indicate that index corruption has occured and can be ignored)
+ (This warning does not indicate that index corruption has occurred and can be ignored)
(To learn more, visit: https://docs.joinmastodon.org/admin/troubleshooting/index-corruption/)
WARNING
end
end
end
+ task :pre_migration_check do
+ version = ActiveRecord::Base.connection.select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i
+ abort 'ERROR: This version of Mastodon requires PostgreSQL 9.5 or newer. Please update PostgreSQL before updating Mastodon.' if version < 90_500
+ end
+
+ Rake::Task['db:migrate'].enhance(['db:pre_migration_check'])
Rake::Task['db:migrate'].enhance(['db:post_migration_hook'])
-
- # Before we load the schema, define the timestamp_id function.
- # Idiomatically, we might do this in a migration, but then it
- # wouldn't end up in schema.rb, so we'd need to figure out a way to
- # get it in before doing db:setup as well. This is simpler, and
- # ensures it's always in place.
- Rake::Task['db:schema:load'].enhance ['db:define_timestamp_id']
-
- # After we load the schema, make sure we have sequences for each
- # table using timestamp IDs.
- Rake::Task['db:schema:load'].enhance do
- Rake::Task['db:ensure_id_sequences_exist'].invoke
- end
-
- task :define_timestamp_id do
- each_schema_load_environment do
- Mastodon::Snowflake.define_timestamp_id
- end
- end
-
- task :ensure_id_sequences_exist do
- each_schema_load_environment do
- Mastodon::Snowflake.ensure_id_sequences_exist
- end
- end
end
diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake
index d0b8fa890..8faa48a95 100644
--- a/lib/tasks/emojis.rake
+++ b/lib/tasks/emojis.rake
@@ -45,7 +45,7 @@ end
namespace :emojis do
desc 'Generate a unicode to filename mapping'
task :generate do
- source = 'http://www.unicode.org/Public/emoji/12.0/emoji-test.txt'
+ source = 'http://www.unicode.org/Public/emoji/13.1/emoji-test.txt'
codes = []
dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json')
@@ -69,7 +69,7 @@ namespace :emojis do
end
end
- existence_maps = grouped_codes.map { |c| c.map { |cc| [cc, File.exist?(Rails.root.join('public', 'emoji', codepoints_to_filename(cc) + '.svg'))] }.to_h }
+ existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', codepoints_to_filename(cc) + '.svg')) } }
map = {}
existence_maps.each do |group|
@@ -91,7 +91,7 @@ namespace :emojis do
desc 'Generate emoji variants with white borders'
task :generate_borders do
src = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json')
- emojis = '🎱🐜⚫🖤⬛◼️◾◼️✒️▪️💣🎳📷📸♣️🕶️✴️🔌💂♀️📽️🍳🦍💂🔪🕳️🕹️🕋🖊️🖋️💂♂️🎤🎓🎥🎼♠️🎩🦃📼📹🎮🐃🏴🐞🕺👽⚾🐔☁️💨🕊️👀🍥👻🐐❕❔⛸️🌩️🔊🔇📃🌧️🐏🍚🍙🐓🐑💀☠️🌨️🔉🔈💬💭🏐🏳️⚪⬜◽◻️▫️'
+ emojis = '🎱🐜⚫🖤⬛◼️◾◼️✒️▪️💣🎳📷📸♣️🕶️✴️🔌💂♀️📽️🍳🦍💂🔪🕳️🕹️🕋🖊️🖋️💂♂️🎤🎓🎥🎼♠️🎩🦃📼📹🎮🐃🏴🐞🕺📱📲🚲👽⚾🐔☁️💨🕊️👀🍥👻🐐❕❔⛸️🌩️🔊🔇📃🌧️🐏🍚🍙🐓🐑💀☠️🌨️🔉🔈💬💭🏐🏳️⚪⬜◽◻️▫️'
map = Oj.load(File.read(src))
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 2ad1e778b..72bacb5eb 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -371,18 +371,20 @@ namespace :mastodon do
end
end
- prompt.say "\n"
- prompt.say 'The final step is compiling CSS/JS assets.'
- prompt.say 'This may take a while and consume a lot of RAM.'
+ unless using_docker
+ prompt.say "\n"
+ prompt.say 'The final step is compiling CSS/JS assets.'
+ prompt.say 'This may take a while and consume a lot of RAM.'
- if prompt.yes?('Compile the assets now?')
- prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...'
- prompt.say "\n\n"
+ if prompt.yes?('Compile the assets now?')
+ prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...'
+ prompt.say "\n\n"
- if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile')
- prompt.error 'That failed! Maybe you need swap space?'
- else
- prompt.say 'Done!'
+ if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile')
+ prompt.error 'That failed! Maybe you need swap space?'
+ else
+ prompt.say 'Done!'
+ end
end
end
diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake
index d1de17b7c..d004c5751 100644
--- a/lib/tasks/repo.rake
+++ b/lib/tasks/repo.rake
@@ -1,33 +1,40 @@
# frozen_string_literal: true
+REPOSITORY_NAME = 'mastodon/mastodon'
+
namespace :repo do
desc 'Generate the AUTHORS.md file'
task :authors do
file = File.open(Rails.root.join('AUTHORS.md'), 'w')
+
file << <<~HEADER
Authors
=======
- Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon)
+ Mastodon is available on [GitHub](https://github.com/#{REPOSITORY_NAME})
and provided thanks to the work of the following contributors:
HEADER
- url = 'https://api.github.com/repos/tootsuite/mastodon/contributors?anon=1'
+ url = "https://api.github.com/repos/#{REPOSITORY_NAME}/contributors?anon=1"
+
HttpLog.config.compact_log = true
+
while url.present?
- response = HTTP.get(url)
+ response = HTTP.get(url)
contributors = Oj.load(response.body)
+
contributors.each do |c|
file << "* [#{c['login']}](#{c['html_url']})\n" if c['login']
file << "* [#{c['name']}](mailto:#{c['email']})\n" if c['name']
end
+
url = LinkHeader.parse(response.headers['Link']).find_link(%w(rel next))&.href
end
file << <<~FOOTER
- This document is provided for informational purposes only. Since it is only updated once per release, the version you are looking at may be currently out of date. To see the full list of contributors, consider looking at the [git history](https://github.com/tootsuite/mastodon/graphs/contributors) instead.
+ This document is provided for informational purposes only. Since it is only updated once per release, the version you are looking at may be currently out of date. To see the full list of contributors, consider looking at the [git history](https://github.com/mastodon/mastodon/graphs/contributors) instead.
FOOTER
end
@@ -47,7 +54,7 @@ namespace :repo do
response = nil
loop do
- response = HTTP.headers('Authorization' => "token #{ENV['GITHUB_API_TOKEN']}").get("https://api.github.com/repos/tootsuite/mastodon/pulls/#{pull_request_number}")
+ response = HTTP.headers('Authorization' => "token #{ENV['GITHUB_API_TOKEN']}").get("https://api.github.com/repos/#{REPOSITORY_NAME}/pulls/#{pull_request_number}")
if response.code == 403
sleep_for = (response.headers['X-RateLimit-Reset'].to_i - Time.now.to_i).abs
@@ -83,12 +90,46 @@ namespace :repo do
missing_yaml_files = I18n.available_locales.reject { |locale| File.exist?(Rails.root.join('config', 'locales', "#{locale}.yml")) }
missing_json_files = I18n.available_locales.reject { |locale| File.exist?(Rails.root.join('app', 'javascript', 'mastodon', 'locales', "#{locale}.json")) }
- if missing_json_files.empty? && missing_yaml_files.empty?
- puts pastel.green('OK')
- else
- puts pastel.red("Missing YAML files: #{pastel.bold(missing_yaml_files.join(', '))}") unless missing_yaml_files.empty?
- puts pastel.red("Missing JSON files: #{pastel.bold(missing_json_files.join(', '))}") unless missing_json_files.empty?
+ locales_in_files = Dir[Rails.root.join('config', 'locales', '*.yml')].map do |path|
+ file_name = File.basename(path)
+ file_name.gsub(/\A(doorkeeper|devise|activerecord|simple_form)\./, '').gsub(/\.yml\z/, '').to_sym
+ end.uniq.compact
+
+ missing_available_locales = locales_in_files - I18n.available_locales
+ missing_locale_names = I18n.available_locales.reject { |locale| SettingsHelper::HUMAN_LOCALES.key?(locale) }
+
+ critical = false
+
+ unless missing_json_files.empty?
+ critical = true
+
+ puts pastel.red("You are missing JSON files for these locales: #{pastel.bold(missing_json_files.join(', '))}")
+ puts pastel.red('This will lead to runtime errors for users who have selected those locales')
+ puts pastel.red("Add the missing files or remove the locales from #{pastel.bold('I18n.available_locales')} in config/application.rb")
+ end
+
+ unless missing_yaml_files.empty?
+ critical = true
+
+ puts pastel.red("You are missing YAML files for these locales: #{pastel.bold(missing_yaml_files.join(', '))}")
+ puts pastel.red('This will lead to runtime errors for users who have selected those locales')
+ puts pastel.red("Add the missing files or remove the locales from #{pastel.bold('I18n.available_locales')} in config/application.rb")
+ end
+
+ unless missing_available_locales.empty?
+ puts pastel.yellow("You have locale files that are not enabled: #{pastel.bold(missing_available_locales.join(', '))}")
+ puts pastel.yellow("Add them to #{pastel.bold('I18n.available_locales')} in config/application.rb or remove them")
+ end
+
+ unless missing_locale_names.empty?
+ puts pastel.yellow("You are missing human-readable names for these locales: #{pastel.bold(missing_locale_names.join(', '))}")
+ puts pastel.yellow("Add them to #{pastel.bold('HUMAN_LOCALES')} in app/helpers/settings_helper.rb or remove the locales from #{pastel.bold('I18n.available_locales')} in config/application.rb")
+ end
+
+ if critical
exit(1)
+ else
+ puts pastel.green('OK')
end
end
end
diff --git a/lib/terrapin/multi_pipe_extensions.rb b/lib/terrapin/multi_pipe_extensions.rb
new file mode 100644
index 000000000..209f4ad6c
--- /dev/null
+++ b/lib/terrapin/multi_pipe_extensions.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: false
+
+require 'fcntl'
+
+module Terrapin
+ module MultiPipeExtensions
+ def initialize
+ @stdout_in, @stdout_out = IO.pipe
+ @stderr_in, @stderr_out = IO.pipe
+
+ clear_nonblocking_flags!
+ end
+
+ def pipe_options
+ # Add some flags to explicitly close the other end of the pipes
+ { out: @stdout_out, err: @stderr_out, @stdout_in => :close, @stderr_in => :close }
+ end
+
+ def read
+ # While we are patching Terrapin, fix child process potentially getting stuck on writing
+ # to stderr.
+
+ @stdout_output = +''
+ @stderr_output = +''
+
+ fds_to_read = [@stdout_in, @stderr_in]
+ until fds_to_read.empty?
+ rs, = IO.select(fds_to_read)
+
+ read_nonblocking!(@stdout_in, @stdout_output, fds_to_read) if rs.include?(@stdout_in)
+ read_nonblocking!(@stderr_in, @stderr_output, fds_to_read) if rs.include?(@stderr_in)
+ end
+ end
+
+ private
+
+ # @param [IO] io IO Stream to read until there is nothing to read
+ # @param [String] result Mutable string to which read values will be appended to
+ # @param [Array